docs(system-overview): scope symlink-escape claim to upload; clone gap tracked in #182#197
Merged
Conversation
…p tracked in Second-Origin#182 SYSTEM_OVERVIEW.md incorrectly stated symlink-escape rejection applied to the GitHub clone path. Only upload extraction guards symlinks (storage/local.py:121); the clone tree walk follows symlinks (issue Second-Origin#182, filesystem disclosure + recursion). Corrected the import diagram, validation node, and the untrusted-input note to scope the guard to upload and reference Second-Origin#182.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
SYSTEM_OVERVIEW.mdincorrectly stated that symlink-escape rejection applies to the GitHub clone path. Only upload extraction guards symlinks (storage/local.py:121); the clone tree walk follows symlinks (verified, issue #182 — filesystem disclosure + recursion/DoS). This corrects the documentation to match the code and avoids overstating a security control.Linked issue
Related to #182
What changed
docs/architecture/SYSTEM_OVERVIEW.md: import diagram note, validation node, and untrusted-input bullet now scope symlink rejection to upload and reference security: clone path does not guard symlink escapes (filesystem disclosure + DoS) #182 for the clone-path gap.Acceptance criteria completed
Testing performed
Documentation-only change; no code/test impact. Verified the three edited passages read consistently with
storage/local.py:121(upload guard) andrepository_parser.py(clone walk follows symlinks).Screenshots
Not applicable
Security and data considerations
Documentation honesty fix: removes a false claim that the clone path rejects symlink escapes. No code, secrets, or data changed.
Dependencies and blocked work
Depends on #182 for the actual clone-path hardening (this PR only documents the current state).
Scope changes or remaining work
None — documentation only.
Contributor checklist