From 746a8ae399f8f8d986b069a898edae42bcd4e299 Mon Sep 17 00:00:00 2001 From: seonghobae <8172694+seonghobae@users.noreply.github.com> Date: Tue, 14 Jul 2026 21:04:24 +0000 Subject: [PATCH 1/4] =?UTF-8?q?=F0=9F=9B=A1=EF=B8=8F=20Sentinel:=20[HIGH]?= =?UTF-8?q?=20=EC=9B=90=EC=9E=90=EC=A0=81=20=ED=8C=8C=EC=9D=BC=20=EC=9D=B4?= =?UTF-8?q?=EB=8F=99(Atomic=20Move)=EC=9D=84=20=ED=86=B5=ED=95=9C=20Race?= =?UTF-8?q?=20Condition=20=EB=B0=A9=EC=A7=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 파일 생성 시 발생하는 TOCTOU 및 Race Condition을 방지하기 위해 Files.move 시 StandardCopyOption.ATOMIC_MOVE 옵션을 적용했습니다. - 지원하지 않는 파일 시스템의 경우를 대비하여 폴백(REPLACE_EXISTING)을 제공하는 atomic_move 래퍼 함수를 도입했습니다. - 100% 테스트 커버리지를 위해 단위 테스트를 추가했습니다. - .jules/sentinel.md에 관련된 보안 학습 내용을 업데이트했습니다. --- .jules/sentinel.md | 5 ++ src/main/kotlin/html4tree/main.kt | 17 ++++- src/test/kotlin/html4tree/AtomicMoveTest2.kt | 69 ++++++++++++++++++++ 3 files changed, 89 insertions(+), 2 deletions(-) create mode 100644 src/test/kotlin/html4tree/AtomicMoveTest2.kt diff --git a/.jules/sentinel.md b/.jules/sentinel.md index 6ecf72f..1dbff6c 100644 --- a/.jules/sentinel.md +++ b/.jules/sentinel.md @@ -83,3 +83,8 @@ **Vulnerability:** 정적 HTML 생성 도구에서 매번 다른 Nonce를 동적으로 생성하여 CSP에 적용하는 것은, 캐싱 효율을 저하시킬 뿐만 아니라 정적 배포 환경(예: GitHub Pages 등)에서 올바른 보안 정책 수립을 방해할 수 있는 안티 패턴입니다. **Learning:** 정적으로 고정된 인라인 스타일이나 스크립트에는 난수화된 Nonce보다 콘텐츠 자체의 해시(SHA-256 등)를 사용하는 것이 안전하고 일관된 방식임을 배웠습니다. **Prevention:** 자동 생성되는 정적 HTML의 콘텐츠 보안 정책(CSP)에는 `style-src 'sha256-'` 방식을 적용하고, `