Skip to main content

croc CVE-2026-119298

| EUVDEUVD-2026-114188 MEDIUM
External Control of File Name or Path (CWE-73)
2026-10-30 GitHub_M
4.2
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

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

  1. Access
    Victim accepts attacker's croc transfer
  2. Delivery
    Send file named croc-stdin-<existing-name>
  3. Exploit
    croc-stdin- prefix bypasses overwrite confirmation
  4. Execution
    recipientInitializeFile truncates/overwrites matching file
  5. Impact
    Silent overwrite, empty-file, or in-directory symlink substitution

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V5 - File Handling File name/path control
Exploitation Conditions

Concrete prerequisites, all drawn from the advisory: (1) the victim must run croc receive and accept a transfer from the attacker (UI:R); (2) a regular file whose basename begins with 'croc-stdin-' must already exist in the receiver's working directory under an exact name the sender can predict (receiver-generated text artifacts use unpredictable os.CreateTemp suffixes, so the practical target is a name the attacker already knows, e.g. a file kept from an earlier transfer by the same peer); (3) the attacker sends a file whose basename reuses that exact 'croc-stdin-' name, with Size==0 or a Symlink to hit the delete-and-replace branch, or a non-empty regular file to hit the O_RDWR truncate/overwrite branch. Limiting factors that reduce realistic risk: exploitation cannot reach outside the croc-stdin- namespace (dotfiles such as .bashrc cannot be named this way and are unreachable), symlink targets remain confined to the receive directory, there is no read/confidentiality primitive, and only croc receivers prior to 11.5.2 are affected. The only complete fix stated is updating to 11.5.2, which gates the prefix exemption on c.Options.SendingText.

Impact

Signals converge on a genuine but low-urgency integrity/availability issue, not a high-CVSS paper tiger nor an emergency. The provided NVD vector (CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:N/I:L/A:L = 4.2) and the vendor GHSA both agree the sender is remote and unauthenticated (PR:N) but that exploitation requires the victim to accept a transfer (UI:R); they disagree on complexity, with NVD choosing AC:H (reflecting the need for a pre-existing, predictably-named colliding file) and the GHSA arguing AC:L (base 5.4) plus an alternative I:H reading at 7.1 - this AC/impact discrepancy is unresolved and should be verified against your environment. No EPSS score is provided and there is no CISA KEV entry in the supplied data, so there is no evidence of active or widespread exploitation; the vuln.today priority is 'this_month' (schedule, not act_now/emergency). A public PoC reference exists in the form of a self-contained reproduction test in the GHSA advisory, but it is not marked as confirmed working exploit code. Net: patch on a normal monthly cadence. Practical risk is bounded by three factors stated in the advisory - the victim must accept the attacker's transfer, a regular file must already exist with an exact sender-predictable name in the croc-stdin- namespace, and there is no read/exfiltration primitive (C:N) - which together make this targeted rather than mass-exploitable.

Exploit ScenarioDerived

A user runs croc and accepts a transfer from a peer they do not fully trust (croc's sender-is-untrusted model). The attacker sends a file whose basename begins with croc-stdin- and exactly matches a pre-existing file in the receiver's working directory; the receiver skips the overwrite confirmation and silently truncates/overwrites that file via recipientInitializeFile, or deletes and replaces it with an empty file or an in-directory symlink via createEmptyFileAndFinish. A reproduction test demonstrating this is included in the GHSA advisory (public PoC reference, not verified here as packaged working exploit code).

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.3% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Oct 30, 2026

Silent file overwrite and delete-and-replace in the croc receiver's working directory is possible when a remote sender names a transferred file with a 'croc-stdin-' prefix, bypassing the interactive overwrite confirmation; croc versions before 11.5.2 are affected. An attacker who can get a victim to accept a transfer (user interaction required) can truncate, overwrite, or delete-and-substitute an existing file of that exact name, or plant an in-directory symlink, with no 'Overwrite?' prompt, because the receive loop treats the prefix as proof of an internal text artifact instead of checking whether the transfer is actually a text transfer. Impact is bounded: only pre-existing names inside the 'croc-stdin-' namespace that the sender can predict are reachable, there is no read primitive, symlink targets stay confined to the receive directory, and dotfiles cannot be named this way; the assessed severity is low (CVSS 4.2, AC:H/UI:R, I:L/A:L), no CISA KEV entry or confirmed public exploit tooling was identified, and the issue is rated 'this_month' priority rather than an emergency.

RemediationAI

Vendor-released patch: upgrade to croc 11.5.2 (https://github.com/schollz/croc/releases/tag/v11.5.2), which implements the fix merged in https://github.com/schollz/croc/pull/1327 (commit 25fe49b6f14db99f517e902cfef76299ad0a95a3) and gates the croc-stdin- exemption on c.Options.SendingText so the prefix alone no longer suppresses askReceiveOverwrite or rename handling. The advisory states that updating to 11.5.2 is the complete fix; until upgrades can be rolled out, reduce exposure by having users run croc receive inside a dedicated, empty directory so no predictable 'croc-stdin-*' filename exists to collide with (side effect: received files land in that scratch location and must be moved manually), by avoiding storing user-kept files whose names begin with 'croc-stdin-' in any directory used as a receive target (side effect: requires auditing existing working directories and adopting a naming convention outside that prefix), and by accepting transfers only from peers who are trusted with write access to the receive directory (side effect: untrusted-sender workflows such as ad-hoc internet transfers are no longer viable). Note that --overwrite and --rename are not reliable workarounds for pre-11.5.2 receivers, since the same prefix exemption bypasses the rename branch as well.

Affected VersionsENISA

croc < 11.5.2

Affected Packages

euvd croc fix: 11.5.2

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

Root cause classes are CWE-73 (external control of file name or path, the GHSA-selectable classification) with CWE-693 (protection mechanism failure) as the underlying defect: an overwrite-protection control is keyed on a value the peer fully controls. In the Go receive loop of src/croc/croc.go, a boolean isStdinName is computed purely from strings.HasPrefix(path.Base(fileInfo.Name), "croc-stdin-") and used to skip askReceiveOverwrite and the rename handling, even when c.Options.SendingText is false. The exemption was originally introduced (commit b687778d, 'doesn't ask overwrite text') so that the receiver's own os.CreateTemp(".", "croc-stdin-") text artifacts would not trigger prompts; the later refactor 615af377 ('gate overwrites and receive hash algorithms', first released in v11.3.6) extracted the prefix test into isStdinName and dropped the explicit !SendingText conjunct, and also moved the Size==0 / symlink branch (createEmptyFileAndFinish, src/croc/croc.go:3245) below the prompt gate. Consequently, with the prompt skipped, createEmptyFileAndFinish removes any existing destination via root.Lstat/root.Remove and then writes the attacker's empty file or validated in-directory symlink, while a non-empty regular-file transfer flows through recipientInitializeFile (src/croc/croc.go:3109), which opens the existing destination with os.O_RDWR without O_EXCL, truncates to the sender-declared size and writes sender chunks at declared offsets. The same prefix exemption also suppresses the --rename branch, so --rename receivers keep the attacker-chosen name and overwrite. The fix in PR #1327 (commit 25fe49b6f14db99f517e902cfef76299ad0a95a3) replaces the boolean with isTextArtifact := c.Options.SendingText && strings.HasPrefix(...), so the exemption is reserved for validated text transfers whose destination names are generated by the receiver.

Know when Croc 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

Vendor (GitHub_M) PRIMARY 4.2 MEDIUM
AV:N/AC:H/PR:N/UI:R/S:U/C:N/I:L/A:L
vuln.today AI 4.2 MEDIUM

AC:H because success needs a pre-existing file with an exact sender-predictable croc-stdin- name; PR:N (no account); UI:R (victim accepts transfer); C:N, I:L/A:L bounded to that namespace.

3.1 AV:N/AC:H/PR:N/UI:R/S:U/C:N/I:L/A:L
4.0 AV:N/AC:L/AT:P/PR:N/UI:A/VC:N/VI:L/VA:L/SC:N/SI:N/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
High
Privileges Required
None
User Interaction
Required
Scope
Unchanged
Confidentiality
None
Integrity
Low
Availability
Low

Lifecycle Timeline

1
Patch available
Oct 30, 2026 - 18:03 EUVD

DescriptionCVE.org

croc is a tool that allows any two computers to simply and securely transfer files and folders. Prior to 11.5.2, the receive-side file-readiness loop in src/croc/croc.go treats any sender-controlled basename beginning with croc-stdin- as a trusted text-transfer artifact even when SendingText is false. This skips askReceiveOverwrite and rename handling for a predictable exact-name collision in the receiver's working directory, allowing a remote sender whose transfer the user accepts to overwrite or truncate a matching regular file through recipientInitializeFile, or to remove and replace a matching destination with an empty file or an in-directory symlink through createEmptyFileAndFinish, without confirmation. The impact is limited to pre-existing names in the croc-stdin- namespace that the sender can predict; other filenames retain the prompt, dotfiles outside that namespace are not reachable, and symlink targets remain confined to the receive directory. This issue is fixed in version 11.5.2.

Threat Intelligence Overview

EPSS Score
0.3%
Top 77% exploitable
Prevalence
Medium
popular open-source CLI file-transfer tool, developer-focused, not server-deployed
Data Quality
5 sources
Confidence: Medium

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 MEDIUM
CISA KEV No
Public POC No
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.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· derived
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

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

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