Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessSend S3 request with crafted BucketARN
-
ExploitReserved/separator bucket name bypasses validation
-
ExecutionResolved path escapes account storage root
-
ImpactOverwrite or read another account's object data
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V5 - File Handling Path canonicalization, traversal prevention
MITRE ATT&CK
2 techniques across 2 tactics: Discovery, Collection The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires a disk-backed deployment: the source evidence states the escape occurs only 'on the persistent and hybrid backends,' so an in-memory/non-persistent configuration is not affected. The trigger is a crafted bucket name supplied through the BucketARN - specifically one of Floci's reserved storage directory names ('.accounts', '.versions', '.annotations'), a name containing a path separator, or '.'/'..'/empty - which pre-patch bypassed validation and resolved outside the owning account's storage directory. Limiting factor: the escape is described relative to 'the owning account's directory,' implying the attacker already acts within an account context, so the CVSS PR:N (unauthenticated) claim is not confirmed by the mechanism and should be verified with the vendor. Impact is bounded to crossing the per-account storage boundary (reading/colliding with another account's object version and annotation data), not arbitrary host filesystem access. |
| Impact | This is a moderate-severity path traversal (vendor CVSS 4.0 base 6.9) with the attack-maturity extension E:P (proof-of-concept). The 4.0 vector claims network, low-complexity, no-privilege, no-interaction access (AV:N/AC:L/AT:N/PR:N/UI:N), but all impacts are rated Low (VC:L/VI:L/VA:L) with no subsequent-system impact (SC:N/SI:N/SA:N), so the ceiling is constrained to limited cross-account read/overwrite rather than full compromise. No EPSS score and no KEV listing are provided, and the vuln.today Decision label is 'this_month' - not act_now or emergency - so the decision signals point to routine patching rather than crisis response. The PR:N claim is questionable: the source evidence shows the flaw lets a crafted bucket name climb out of 'the owning account's directory,' which implies the attacker is already operating within an account context, so verify the real authentication requirement with the vendor rather than treating this as fully unauthenticated. Combined with a niche product footprint, this reads as a genuine but non-urgent, lower-priority issue - a real bug with low blast radius, not a high-CVSS-but-overrated finding nor an emergency. |
| Exploit ScenarioDerived | An attacker interacting with Floci's S3 API supplies a bucket name (via the BucketARN) set to a reserved storage directory such as '.versions' or '.annotations', or a name containing a path separator, which on the disk-backed (persistent or hybrid) backends resolves outside the attacker's own account storage root. This lets them collide with or overwrite another account's object version/annotation data, or escape the account boundary. A public proof-of-concept is claimed by VulDB (and reflected in CVSS E:P), but it is not verified as working exploit code. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Nov 09, 2026
Path traversal in floci-io Floci 2.0 and 2.1.0 lets a caller supply a crafted bucket name through a Firehose S3 destination BucketARN and have the resulting object path resolved outside the owning account's storage directory whenever the persistent or hybrid storage backend is in use, exposing or overwriting another bucket's object version and annotation data. The flaw is fixed in 2.2.0 (commit b986b95074ef524019be7af51e1df172e48faa4b); the upstream advisory states that exploit code is publicly available and the CVSS 4.0 vector carries E:P, matching that maturity signal, and the issue is not listed in CISA KEV. Vendor severity is 6.9, while our own assessment of the mechanism is CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:L - the PR:N rating in the published vector is not confirmed, since the escape is described relative to the owning account's directory and therefore implies an existing account context, and impact is bounded to crossing that per-account storage boundary rather than reaching arbitrary host files.
RemediationAI
Upgrade Floci to version 2.2.0, which is the release carrying the fix (https://github.com/floci-io/floci/releases/tag/2.2.0); the equivalent upstream change is PR https://github.com/floci-io/floci/pull/4289 and commit b986b95074ef524019be7af51e1df172e48faa4b. The patch rejects empty names, '.', '..', names containing a path separator, and the reserved storage directories .accounts, .versions and .annotations, and it applies that check on the versioned path resolver as well as bucket creation, so upgrading is the only complete fix. If upgrading immediately is not possible, run Floci with the in-memory, non-persistent storage backend, since the vendor states the escape occurs only on the persistent and hybrid backends - the trade-off is loss of on-disk persistence and of versioned/annotated object data across restarts. As a secondary control, restrict who can create or update Firehose delivery streams and S3 buckets (including BucketARN values they can supply) to trusted principals, which shrinks the population able to reach the vulnerable bucket-name path but does not remove the flaw; note that pre-existing bucket records persisted before the fix can still reference reserved names, so review stored state after upgrading. Because the upstream advisory reports publicly available exploit code, treat exposed instances as untrusted until patched.
Affected VersionsENISA
Affected Packages
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
Floci is a Java-based AWS service emulator, and the affected code sits in its Firehose implementation: S3Destination.bucketName in services/firehose/model/DeliveryStreamDescription.java derives a bucket name from the caller-supplied BucketARN, which is then passed into the S3 storage layer. This is CWE-22 (path traversal): on disk-backed backends the S3 layer maps buckets to directories under a data root (dataRoot/.accounts/<accountId>/<bucketName>, with separate .versions and .annotations trees for object versioning and annotations), so a bucket name that is not path-safe resolves outside the owning account's directory. The pre-patch requirePathSafeBucketName routine rejected empty names, '.', '..', names containing a path separator, and the literal account storage root '.accounts', but did not reject the sibling reserved directories '.versions' and '.annotations', and the versioned-path resolver did not invoke the check at all. The fix in 2.2.0 centralizes this into a RESERVED_BUCKET_NAMES set covering .accounts, .versions and .annotations, adds the requirePathSafeBucketName call on the versioned path resolver, replaces string literals with named constants, and adds an integration test asserting that attempts to write through the reserved '.versions' bucket against a victim bucket's version object are rejected with InvalidBucketName. The trigger is a caller-controlled bucket name reaching the path resolver on a persistent or hybrid backend; an in-memory, non-persistent configuration writes no such directory tree and is not affected.
Know when Floci gets its next vulnerability
- 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
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:L/VA:L/SC:N/SI:N/SA:N/E:P
Triggered via the S3 API (AV:N/AC:L), but the escape is relative to the owning account's directory, implying account-context access (PR:L); impact is limited to cross-account object/version data, so C/I/A Low.
Primary rating from Vendor (VulDB).
CVSS VectorVendor: VulDB
Lifecycle Timeline
1DescriptionCVE.org
A vulnerability was identified in floci-io Floci up to 2.1.0. The affected element is the function S3Destination.bucketName of the file services/firehose/model/DeliveryStreamDescription.java of the component S3 Destination Configuration Handler. Such manipulation of the argument BucketARN leads to path traversal. The attack can be launched remotely. The exploit is publicly available and might be used. Upgrading to version 2.2.0 is sufficient to fix this issue. The name of the patch is b986b95074ef524019be7af51e1df172e48faa4b. You should upgrade the affected component.
Threat Intelligence Overview
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Path traversal exploits occur when applications use user-controlled input to construct file system paths without proper validation.
EUVD-2026-119770
GHSA-cv6g-fvjc-qjxv
NVD
CVE.org
VulDB
Exploit-DB