security(ignore): preserve fail-closed sibling pending canonical TOCTOU repair - #768
seonghobae wants to merge 6 commits into
Conversation
🚨 심각도: CRITICAL 💡 취약점: .html4ignore 파일이 유효하지 않거나 깨진 심볼릭 링크일 때, 권한이 없어 읽을 수 없을 때 해당 디렉토리를 열어 모든 파일을 퍼블리싱하는 Fail-Open 취약점이 있었습니다. 이로 인해 TOCTOU(Time-of-check to time-of-use) 공격이나 심볼릭 링크 조작으로 민감한 파일이 노출될 수 있습니다. 🎯 영향: 디렉토리의 민감한 파일들이 의도치 않게 외부에 노출될 수 있습니다 (정보 노출, 디렉토리 탐색 우회). 🔧 수정사항: `IgnoreFileReadException`을 도입하고, `process_ignore_file`에서 파일 접근 실패나 깨진 심볼릭 링크 등의 상황이 발생하면 이 예외를 던지도록 하였습니다. `crawl_directories`에서 이 예외를 잡으면 해당 디렉토리의 파싱(디렉토리 내부 퍼블리싱)을 중지하여 Fail-Closed 되도록 하였습니다. ✅ 검증: 100% 테스트 커버리지를 보장하는 관련 단위 테스트 추가 및 `jacocoTestCoverageVerification` 통과 확인.
|
👋 Jules, reporting for duty! I'm here to lend a hand with this pull request. When you start a review, I'll add a 👀 emoji to each comment to let you know I've read it. I'll focus on feedback directed at me and will do my best to stay out of conversations between you and other bots or reviewers to keep the noise down. I'll push a commit with your requested changes shortly after. Please note there might be a delay between these steps, but rest assured I'm on the job! For more direct control, you can switch me to Reactive Mode. When this mode is on, I will only act on comments where you specifically mention me with New to Jules? Learn more at jules.google/docs. For security, I will only act on instructions from the user who triggered this task. |
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: trueThanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
🚨 심각도: CRITICAL 💡 취약점: .html4ignore 파일이 유효하지 않거나 깨진 심볼릭 링크일 때, 권한이 없어 읽을 수 없을 때 해당 디렉토리를 열어 모든 파일을 퍼블리싱하는 Fail-Open 취약점이 있었습니다. 이로 인해 TOCTOU(Time-of-check to time-of-use) 공격이나 심볼릭 링크 조작으로 민감한 파일이 노출될 수 있습니다. 🎯 영향: 디렉토리의 민감한 파일들이 의도치 않게 외부에 노출될 수 있습니다 (정보 노출, 디렉토리 탐색 우회). 🔧 수정사항: `IgnoreFileReadException`을 도입하고, `process_ignore_file`에서 파일 접근 실패나 깨진 심볼릭 링크 등의 상황이 발생하면 이 예외를 던지도록 하였습니다. `crawl_directories`에서 이 예외를 잡으면 해당 디렉토리의 파싱(디렉토리 내부 퍼블리싱)을 중지하여 Fail-Closed 되도록 하였습니다. ✅ 검증: 100% 테스트 커버리지를 보장하는 관련 단위 테스트 추가 및 `jacocoTestCoverageVerification` 통과 확인.
🚨 심각도: CRITICAL 💡 취약점: .html4ignore 파일이 유효하지 않거나 깨진 심볼릭 링크일 때, 권한이 없어 읽을 수 없을 때 해당 디렉토리를 열어 모든 파일을 퍼블리싱하는 Fail-Open 취약점이 있었습니다. 이로 인해 TOCTOU(Time-of-check to time-of-use) 공격이나 심볼릭 링크 조작으로 민감한 파일이 노출될 수 있습니다. 🎯 영향: 디렉토리의 민감한 파일들이 의도치 않게 외부에 노출될 수 있습니다 (정보 노출, 디렉토리 탐색 우회). 🔧 수정사항: `IgnoreFileReadException`을 도입하고, `process_ignore_file`에서 파일 접근 실패나 깨진 심볼릭 링크 등의 상황이 발생하면 이 예외를 던지도록 하였습니다. `crawl_directories`에서 이 예외를 잡으면 해당 디렉토리의 파싱(디렉토리 내부 퍼블리싱)을 중지하여 Fail-Closed 되도록 하였습니다. ✅ 검증: 100% 테스트 커버리지를 보장하는 관련 단위 테스트 추가 및 `jacocoTestCoverageVerification` 통과 확인.
🚨 심각도: CRITICAL 💡 취약점: .html4ignore 파일이 유효하지 않거나 깨진 심볼릭 링크일 때, 권한이 없어 읽을 수 없을 때 해당 디렉토리를 열어 모든 파일을 퍼블리싱하는 Fail-Open 취약점이 있었습니다. 이로 인해 TOCTOU(Time-of-check to time-of-use) 공격이나 심볼릭 링크 조작으로 민감한 파일이 노출될 수 있습니다. 🎯 영향: 디렉토리의 민감한 파일들이 의도치 않게 외부에 노출될 수 있습니다 (정보 노출, 디렉토리 탐색 우회). 🔧 수정사항: `IgnoreFileReadException`을 도입하고, `process_ignore_file`에서 파일 접근 실패나 깨진 심볼릭 링크 등의 상황이 발생하면 이 예외를 던지도록 하였습니다. `crawl_directories`에서 이 예외를 잡으면 해당 디렉토리의 파싱(디렉토리 내부 퍼블리싱)을 중지하여 Fail-Closed 되도록 하였습니다. ✅ 검증: 100% 테스트 커버리지를 보장하는 관련 단위 테스트 추가 및 `jacocoTestCoverageVerification` 통과 확인.
🚨 심각도: CRITICAL 💡 취약점: .html4ignore 파일이 유효하지 않거나 깨진 심볼릭 링크일 때, 권한이 없어 읽을 수 없을 때 해당 디렉토리를 열어 모든 파일을 퍼블리싱하는 Fail-Open 취약점이 있었습니다. 이로 인해 TOCTOU(Time-of-check to time-of-use) 공격이나 심볼릭 링크 조작으로 민감한 파일이 노출될 수 있습니다. 🎯 영향: 디렉토리의 민감한 파일들이 의도치 않게 외부에 노출될 수 있습니다 (정보 노출, 디렉토리 탐색 우회). 🔧 수정사항: `IgnoreFileReadException`을 도입하고, `process_ignore_file`에서 파일 접근 실패나 깨진 심볼릭 링크 등의 상황이 발생하면 이 예외를 던지도록 하였습니다. `crawl_directories`에서 이 예외를 잡으면 해당 디렉토리의 파싱(디렉토리 내부 퍼블리싱)을 중지하여 Fail-Closed 되도록 하였습니다. ✅ 검증: 100% 테스트 커버리지를 보장하는 관련 단위 테스트 추가 및 `jacocoTestCoverageVerification` 통과 확인.
🚨 심각도: CRITICAL 💡 취약점: .html4ignore 파일이 유효하지 않거나 깨진 심볼릭 링크일 때, 권한이 없어 읽을 수 없을 때 해당 디렉토리를 열어 모든 파일을 퍼블리싱하는 Fail-Open 취약점이 있었습니다. 이로 인해 TOCTOU(Time-of-check to time-of-use) 공격이나 심볼릭 링크 조작으로 민감한 파일이 노출될 수 있습니다. 🎯 영향: 디렉토리의 민감한 파일들이 의도치 않게 외부에 노출될 수 있습니다 (정보 노출, 디렉토리 탐색 우회). 🔧 수정사항: `IgnoreFileReadException`을 도입하고, `process_ignore_file`에서 파일 접근 실패나 깨진 심볼릭 링크 등의 상황이 발생하면 이 예외를 던지도록 하였습니다. `crawl_directories`에서 이 예외를 잡으면 해당 디렉토리의 파싱(디렉토리 내부 퍼블리싱)을 중지하여 Fail-Closed 되도록 하였습니다. ✅ 검증: 100% 테스트 커버리지를 보장하는 관련 단위 테스트 추가 및 `jacocoTestCoverageVerification` 통과 확인.
이 PR의 fail-closed 방향은 유효하지만 현재 evidence만으로
CRITICALexploit chain이나 TOCTOU closure를 주장하지 않습니다.현재 exact head:
2383eb6a9cdd571bd4d3dbb4a09450f76aac3d30.Sibling ownership
#761이 같은 protected
master@728f0f33323e43573d6664209891099502827d5d에서 더 강한 canonical repair/evidence lane을 유지하고 있습니다. #761은 broken symlink와 unsafe policy-file 상태를 fail-closed 하는 현재 delta를 보존하면서, pathname validation 뒤useLines에서 같은 path를 다시 resolve/open하는 잔존 TOCTOU를 명시하고 deterministic swap RED → single-open/no-follow handle GREEN을 acceptance로 갖습니다.이 #768 branch는
IgnoreFileReadException과 directory skip semantics를 갖지만, patch 기준으로 여전히 pathname 검사와 이후 읽기 사이의 object identity를 고정하지 못합니다. 따라서 #761이 exact-head GREEN/merge를 완료하고 이 branch의 유효 fail-closed semantic delta/test evidence를 완전히 승계했다고 검증되기 전에는 단순 Close하지 않습니다. 반대로 #768을 Ready/merge해 #761의 stronger acceptance를 우회하지도 않습니다.Severity boundary
현재 입증된 것은 unsafe
.html4ignore상태에서 디렉터리 publication을 fail closed하도록 하는 hardening 필요성과 잔존 race입니다. 로컬 entry mutation capability가 실제 privilege differential 및 민감 데이터 외부 노출로 이어지는 배포 exploit chain은 확인되지 않았으므로 severity를 확정하지 않습니다.Promotion acceptance
force push, destructive rebase, self-approval, gate weakening, source-neutral rerun은 사용하지 않습니다.