Skip to main content

Incus CVE-2026-115374

| EUVDEUVD-2026-108297 HIGH
Improper Verification of Cryptographic Signature (CWE-347)
2026-10-22 disclosure@vulncheck.com GHSA-m6pj-594x-rw4f
7.1
CVSS 4.0 · Vendor: vulncheck
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Obtain presigned S3 upload URL for bucket
  2. Exploit
    Inject unsigned X-Amz-Copy-Source header into PUT
  3. Execution
    Server copies another bucket object onto granted key
  4. Impact
    Read granted key, disclose object contents and ETag

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A04:2025 - Cryptographic Failures
ASVS 5.0
V11 - Cryptography Signature verification
Exploitation Conditions

Exploitation requires: (1) the affected Incus version running a storage bucket on a local storage pool using the built-in in-process S3 server (Ceph radosgw buckets are NOT affected); (2) the bucket listener core.storage_buckets_address to be enabled, which is DISABLED by default; and (3) the attacker to possess a valid presigned upload (PUT) URL for an object in the target bucket - no separate bucket credentials are needed, but the presigned grant is the entry point. The attacker then attaches an unsigned X-Amz-Copy-Source header, which the canonical-request signature check never validates because it only iterates the client-supplied X-Amz-SignedHeaders list (and the SigV2 presigned path omits CanonicalizedAmzHeaders entirely). Full disclosure of a target object's contents additionally requires the attacker to be able to read the granted key (e.g. via a matching presigned download URL); the ETag of the source object leaks regardless. Limiting factors: non-default listener, local-pool-only built-in S3 server, and the need for a pre-existing presigned-URL grant.

Impact

CVSS 4.0 base score is 7.1 (High), driven by a network vector (AV:N), low complexity (AC:L), no attack requirements (AT:N), and high confidentiality impact (VC:H) with only low integrity impact (VI:L) and no availability impact. Crucially, the vector requires privileges (PR:L): the attacker must already hold a valid presigned S3 URL, which is itself a vendor-issued grant rather than fully anonymous access, so this is not an unauthenticated internet-wide flaw. No EPSS score, CISA KEV listing, or SSVC automatable/technical-impact fields were supplied; the only prioritization signal is the vuln.today decision label 'this_week' (not act_now/emergency), which is consistent with a real but non-emergency issue. No public exploit was identified at time of analysis. The practical risk is meaningfully reduced by configuration: the built-in S3 bucket listener (core.storage_buckets_address) is disabled by default and Ceph radosgw buckets are unaffected, so only operators who deliberately enabled the local-pool S3 server and handed out presigned URLs for buckets containing sensitive objects are exposed. Net assessment: a genuine confidentiality risk worth patching on a normal cycle, but bounded by non-default deployment and the need for a pre-existing presigned-URL grant rather than a widespread, high-urgency threat.

Exploit ScenarioDerived

An operator issues a presigned upload (PUT) URL for a single object in an Incus local-pool S3 bucket to a semi-trusted party. That party adds an unsigned X-Amz-Copy-Source header to the request, causing the server to copy another object in the same bucket onto the granted key under the signer's credentials; if the holder can also read that key (e.g. via a matching presigned download URL), the contents and ETag of the arbitrary source object are disclosed. No public exploit was identified at time of analysis.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 22, 2026

Presigned S3 upload URLs issued by Incus's built-in in-process S3 server can be abused to read other objects in the same bucket, because the server validates SigV4 signatures only over the headers the client lists in X-Amz-SignedHeaders and never rejects additional unsigned x-amz-* headers (the SigV2 presigned path omits CanonicalizedAmzHeaders entirely). Anyone holding a presigned PUT URL for one key - no bucket credentials required - can attach an unsigned X-Amz-Copy-Source header and have the server copy an arbitrary object in that bucket onto the granted key under the signer's credentials, leaking the source object's ETag and, where the attacker can also read the granted key (for example via a matching presigned download URL), its full contents. Incus 7.0.0 through 7.0.1 and 7.1.0 through 7.4.x are affected when a storage bucket on a local storage pool is served by the built-in S3 server and the bucket listener (core.storage_buckets_address) is enabled, which is not the default; Ceph radosgw buckets are unaffected. Authentication is required in the sense that a valid presigned grant must already be held, and no public exploit code has been identified at time of analysis.

RemediationAI

Upgrade to a fixed Incus release: 7.0.2 for the 7.0.x branch and 7.5.0 (or later) for the 7.1.x-and-newer branch, as documented in GHSA-mmj7-8rgf-mx2h. No patch is available for 7.0.0-7.0.1 or 7.1.0-7.4.x other than moving to those fixed versions. If upgrading cannot be done immediately, the vendor's stated workarounds are to keep the bucket listener (core.storage_buckets_address) disabled - which removes the S3 bucket API entirely for any client relying on it, including legitimate presigned-URL consumers - or to avoid issuing presigned URLs for buckets that also hold sensitive objects, which preserves the listener but means sensitive data should be kept in a separate bucket that never receives presigned grants. Note that Ceph radosgw-backed buckets are not affected and do not need these restrictions. Because a pre-existing presigned URL is the entry point, reviewing and rotating outstanding presigned grants after upgrading reduces residual exposure; presigned URLs are typically short-lived, so allow existing grants to expire if rotation is impractical.

Affected VersionsENISA

incus 7.1.0 <7.5.0
incus 7.0.0 <7.0.2

Affected Packages

euvd incus fix: 7.0.2, 7.5.0

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

The affected component is Incus's in-process S3 server, used to expose storage buckets that live on local storage pool drivers (the Go package go/github.com/lxc/incus/v7/cmd/incusd, fixed in v7.5.0 upstream). The flaw is CWE-347, improper verification of a cryptographic signature: when reconstructing the canonical request for AWS Signature Version 4, the implementation iterates only over the client-supplied X-Amz-SignedHeaders list, so any x-amz-* header present on the wire but absent from that list is never covered by the signature check. The SigV2 presigned code path is worse in that it omits the CanonicalizedAmzHeaders section altogether. Because the object handler routes any PUT that carries an X-Amz-Copy-Source header into the copy path purely on the presence of that header, an attacker can convert a narrowly scoped write grant into a read primitive inside the bucket; real AWS S3 refuses unsigned headers of this kind, so this deviates from the protocol behaviour clients reasonably expect. The same verification gap exists on the Authorization header path. Exposure is constrained by deployment: only local-pool buckets served by the built-in S3 server are affected (Ceph radosgw buckets are explicitly out of scope), and the bucket listener core.storage_buckets_address is disabled by default.

Know when the next one hits your stack

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (vulncheck) PRIMARY 7.1 HIGH
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:L/VA:N/SC:N/SI:N/SA:N
vuln.today AI 7.1 HIGH

Network-reachable S3 server with no user interaction; PR:L because a presigned-URL grant is required; C:H from arbitrary object disclosure, I:L from the copy writing to the granted key, A:N.

3.1 AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:L/A:N
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:L/VA:N/SC:N/SI:N/SA:N
Red Hat 7.1 HIGH

Primary rating from Vendor (vulncheck).

CVSS VectorVendor: vulncheck

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
Low
User Interaction
None
Vulnerable system: Confidentiality
High
Vulnerable system: Integrity
Low
Vulnerable system: Availability
None
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

2
Patch available
Oct 22, 2026 - 20:18 EUVD
CVE Published
Oct 22, 2026 - 19:17 cve.org
HIGH 7.1

DescriptionCVE.org

Incus 7.0.0 before 7.0.2 and 7.1.0 before 7.5.0 contains a signature verification flaw in its built-in S3 server that allows presigned URL holders to inject unsigned x-amz-* headers. Attackers can add an unsigned X-Amz-Copy-Source header to a presigned upload URL to copy other bucket objects onto the granted key, disclosing their contents and ETags.

Technical POC Analysis

CWE-347, improper verification of a cryptographic signature.

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Executive ViewAI

Why It Matters

The built-in S3 server in Incus, when exposed via a non-default configuration, allows anyone with a presigned upload link to bypass intended access controls and read arbitrary objects from the same bucket. This undermines data confidentiality for organizations using Incus storage buckets to hold sensitive information, as a single shared link could lead to unauthorized access to unrelated files.

Business Impact: High
Compensating Controls

Disable the built-in S3 server (core.storage_buckets_address) unless strictly required; if used, restrict network access to the listener, audit and limit presigned URL distribution, and add monitoring for unsigned x-amz-* headers. No vendor-released patch identified at time of analysis.

Threat Intelligence Overview

EPSS Score
0.2%
Top 96% exploitable
Prevalence
Low
niche container/VM manager; built-in S3 bucket listener disabled by default
Data Quality
6 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment Vendor GitHub

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Partial

Priority Score

36
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +36
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Code Injection CRITICAL

Code injection occurs when an application accepts user input and passes it directly into a language interpreter or evaluator without proper sanitization.

Vendor StatusVendor

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy