Repository navigation
Changelog
A release focused on closing ways an untrusted repository could affect the machine or leak data during a scan.
Security
- No more reads outside the repository. Surface files like
.npmrcorscripts/*.shthat are symlinks pointing outside the scanned tree are now refused. Previously, with-llm, scanning an untrusted repo could follow such a link and send the file's contents, potentially your local credentials, to the model endpoint. - LLM review stays on your endpoint. Redirects that leave the configured host or scheme are no longer followed. A 307/308 redirect replays the request body, so a redirecting endpoint could previously send repository contents, and possibly your token, somewhere else.
- Shell-safe advice. The
git clonecommands side-eye prints are now shell-quoted. A remote URL containing;or$(...)can no longer turn the printed advice into an execution. - Correct files scanned on raw endpoints. A branch or tag containing
?or#is now escaped in raw file URLs, so a URL scan reads the right ref. - Harder-to-shape LLM prompt. The prompt's untrusted-data fence is drawn from
crypto/randper run, and every file-listing line is quoted, so crafted file names can no longer break out of the listing and read as instructions.
Reliability
- No hangs on hostile files. A FIFO or device named like a surface file used to block a scan forever while it waited for a writer. Both are now refused, and files over 8 MiB are treated as unreadable and skipped.
- Bounded ZIP scans. A ZIP archive with more than 100,000 entries now fails immediately with an explanatory error, instead of stalling the scan with unbounded memory use.
Install
- The installer fails closed without
gh. It used to print a warning and install an unverifiable binary anyway. Now it stops and explains the two ways forward: installgh, or setSIDE_EYE_INSTALL_SKIP_ATTESTATION=1for an air-gapped mirror. - HTTPS everywhere. Every download, including redirects, requires HTTPS with TLS 1.2 or later.
Under the hood
- Go 1.27.3 build. Clears the 9 standard-library vulnerabilities govulncheck reported for 1.27.1.
- Dependencies updated. All dependencies are at their latest versions.
- Security-conscious CI. CI now runs govulncheck on every push and PR, and the release workflow runs vet and tests before publishing any asset.
- Tags only from reviewed commits. Release tags can only be cut from commits pushed to
origin/main. - New developer targets.
make upgradeupdates all dependencies, andmake checkmirrors the full CI behavior.
Commits
- d9b7393 docs: cover the security fixes and tooling added since v1.0.1
- 903e199 chore(make): add upgrade target and make check mirror CI
- 2668562 fix(go): bump toolchain to 1.27.3 and deps to latest
- 6fd06d1 fix: refuse a ZIP archive with more entries than side-eye will index
- 72b1ab3 fix: shell-quote the clone command printed in remote-scan advice
- 473e76b fix: escape the whole branch or tag in raw file URLs
- 183ec25 fix: draw the LLM prompt fence from crypto/rand and quote listing lines
- 707f673 ci: run vet and tests before the release is published
- 5318953 ci: scope the test workflow token and run govulncheck
- 1a9e3b2 fix: release only the commit that main has on origin
- 7d3fd43 fix: make the installer fail closed without gh and pin curl to https
- cab0767 fix: stop the LLM client following redirects off the configured endpoint
- 4a99860 fix: confine repository file reads to the scanned tree
- 1446079 fix: refuse FIFOs, devices, and oversized files during a scan