Incus vulnerable to denial of source through crafted bucket backup file
Date: 2026-03
Affected: go/github.com/lxc/incus, go/github.com/lxc/incus/v6
Attack vector: dos
Category: vulnerability-disclosure
Severity: Medium
CVE: CVE-2026-33711
CVE-2026-33743
CWE: CWE-61
CWE-770
CVSS: 6.5 (CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H)

### Summary A specially crafted storage bucket backup can be used by an user with access to Incus' storage bucket feature to crash the Incus daemon. Repeated use of this attack can be used to keep the server offline causing a denial of service of the control plane API. This does not impact any running workload, existing containers and virtual machines will keep operating. ### Details The S3 transfer manager contains an unchecked string slicing vulnerability that allows an authenticated attacker to crash the daemon during S3 restore operations. While processing tar headers from a supplied backup archive, the code skips only the index entry and strips the expected bucket prefix from all other entries without first validating the header name. In Go, slicing a string with a starting index beyond the string length triggers a runtime panic. Because no prefix or length validation is performed before this operation, a malicious archive containing a non-index entry with a shorter-than-expected header name can trigger a slice-bounds panic and terminate the daemon. This results in immediate denial of service on the node. Affected File: https://github.com/lxc/incus/blob/v6.20.0/internal/server/storage/s3/transfer_manager.go Affected Code: ``` func (t TransferManager) UploadAllFiles(bucketName string, srcData io.ReadSeeker) error { [...] for { hdr, err := tr.Next() if err == io.EOF { break // End of archive. } // Skip index.yaml


Mitigations:

Architectural layers (MAESTRO):