From 595670dd9afe450dea7e994cf1490860b2415228 Mon Sep 17 00:00:00 2001 From: seonghobae <8172694+seonghobae@users.noreply.github.com> Date: Sun, 2 Aug 2026 21:00:53 +0000 Subject: [PATCH] =?UTF-8?q?=EB=B3=B4=EC=95=88:=20index.html=20=EB=8D=AE?= =?UTF-8?q?=EC=96=B4=EC=93=B0=EA=B8=B0=20=EC=A4=91=20TOCTOU=20=EB=B0=A9?= =?UTF-8?q?=EC=A7=80=EB=A5=BC=20=EC=9C=84=ED=95=9C=20=EC=9B=90=EC=9E=90?= =?UTF-8?q?=EC=A0=81=20=EC=93=B0=EA=B8=B0=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Files.move 실행 시 `StandardCopyOption.ATOMIC_MOVE` 옵션을 우선 적용하여 파일 교체 중 발생할 수 있는 시간차 공격(TOCTOU) 및 부분적 데이터 읽기 취약점을 완화했습니다. 파일 시스템이 원자적 이동을 지원하지 않는 경우(`AtomicMoveNotSupportedException` 발생 시) 기존의 `REPLACE_EXISTING`으로 우아하게 폴백(Fallback)하여 다양한 환경에서의 호환성을 유지합니다. 테스트 코드를 추가하여 100% 분기 커버리지를 확보했습니다. --- .jules/sentinel.md | 5 +++++ src/main/kotlin/html4tree/main.kt | 12 ++++++++++-- src/test/kotlin/html4tree/MainTest.kt | 20 ++++++++++++++++++++ 3 files changed, 35 insertions(+), 2 deletions(-) diff --git a/.jules/sentinel.md b/.jules/sentinel.md index 6ecf72f1..d97717c7 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-'` 방식을 적용하고, `