Description
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.
Affected products
| Vendor | Product | Affected | Fixed |
|---|---|---|---|
| schollz | croc | < 11.5.2 | — |
Affected packages
| Ecosystem | Package | Affected | Fixed | Record |
|---|---|---|---|---|
| Go | github.com/schollz/croc | <= 3.0.6 | — | GHSA-x89h-7h96-v88f |
| Go | github.com/schollz/croc/v10 | <= 10.7.0 | — | GHSA-x89h-7h96-v88f |
| Go | github.com/schollz/croc/v11 | < 11.5.2 | 11.5.2 | GHSA-x89h-7h96-v88f |
| Go | github.com/schollz/croc/v6 | <= 6.4.11 | — | GHSA-x89h-7h96-v88f |
| Go | github.com/schollz/croc/v8 | <= 8.6.12 | — | GHSA-x89h-7h96-v88f |
| Go | github.com/schollz/croc/v9 | <= 9.6.17 | — | GHSA-x89h-7h96-v88f |