From 0d54fa5a59def56f78b857950e12d9ab580baa81 Mon Sep 17 00:00:00 2001 From: seonghobae <8172694+seonghobae@users.noreply.github.com> Date: Tue, 14 Jul 2026 21:07:56 +0000 Subject: [PATCH 1/4] =?UTF-8?q?=F0=9F=9B=A1=EF=B8=8F=20Sentinel:=20?= =?UTF-8?q?=EB=AF=BC=EA=B0=90=ED=95=9C=20=ED=8C=8C=EC=9D=BC=20=ED=99=95?= =?UTF-8?q?=EC=9E=A5=EC=9E=90=20=EB=8F=99=EC=A0=81=20=EC=A0=9C=EC=99=B8=20?= =?UTF-8?q?=EB=A1=9C=EC=A7=81=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit πŸ’‘ 취약점: 인증 ν‚€(.pem, .key λ“±) 및 λ°±μ—… 파일(.bak, .swp)이 디렉토리 λͺ©λ‘μ— ν¬ν•¨λ˜μ–΄ 정보 λ…ΈμΆœ(Information Exposure) μœ„ν—˜μ΄ μ‘΄μž¬ν–ˆμŠ΅λ‹ˆλ‹€. 🎯 영ν–₯: κ³΅κ²©μžκ°€ λ―Όκ°ν•œ μ‹œμŠ€ν…œ 및 인증 정보λ₯Ό λ‹€μš΄λ‘œλ“œν•  수 μžˆμŠ΅λ‹ˆλ‹€. πŸ”§ μˆ˜μ • 사항: `process_ignore_file`μ—μ„œ `.pem`, `.key`, `.p12`, `.pfx`, `.keystore`, `.bak`, `.swp`, `~` ν™•μž₯자λ₯Ό κ°€μ§„ νŒŒμΌλ“€μ„ λ™μ μœΌλ‘œ μ œμ™Έν•˜λ„λ‘ 필터링을 κ°•ν™”ν–ˆμŠ΅λ‹ˆλ‹€. βœ… 검증: Jacoco ν…ŒμŠ€νŠΈ 컀버리지 100%λ₯Ό μœ μ§€ν•˜λ©° ν•΄λ‹Ή ν™•μž₯μžλ“€μ΄ μ œμ™Έλ˜λŠ” 것을 λ‹¨μœ„ ν…ŒμŠ€νŠΈλ‘œ κ²€μ¦ν–ˆμŠ΅λ‹ˆλ‹€. --- .jules/sentinel.md | 4 ++++ src/main/kotlin/html4tree/main.kt | 13 +++++++++++-- src/test/kotlin/html4tree/MainTest.kt | 24 ++++++++++++++++++++++++ 3 files changed, 39 insertions(+), 2 deletions(-) diff --git a/.jules/sentinel.md b/.jules/sentinel.md index 6ecf72f..440340b 100644 --- a/.jules/sentinel.md +++ b/.jules/sentinel.md @@ -83,3 +83,7 @@ **Vulnerability:** 정적 HTML 생성 λ„κ΅¬μ—μ„œ 맀번 λ‹€λ₯Έ Nonceλ₯Ό λ™μ μœΌλ‘œ μƒμ„±ν•˜μ—¬ CSP에 μ μš©ν•˜λŠ” 것은, 캐싱 νš¨μœ¨μ„ μ €ν•˜μ‹œν‚¬ 뿐만 μ•„λ‹ˆλΌ 정적 배포 ν™˜κ²½(예: GitHub Pages λ“±)μ—μ„œ μ˜¬λ°”λ₯Έ λ³΄μ•ˆ μ •μ±… μˆ˜λ¦½μ„ λ°©ν•΄ν•  수 μžˆλŠ” μ•ˆν‹° νŒ¨ν„΄μž…λ‹ˆλ‹€. **Learning:** μ •μ μœΌλ‘œ κ³ μ •λœ 인라인 μŠ€νƒ€μΌμ΄λ‚˜ μŠ€ν¬λ¦½νŠΈμ—λŠ” λ‚œμˆ˜ν™”λœ Nonce보닀 μ½˜ν…μΈ  자체의 ν•΄μ‹œ(SHA-256 λ“±)λ₯Ό μ‚¬μš©ν•˜λŠ” 것이 μ•ˆμ „ν•˜κ³  μΌκ΄€λœ λ°©μ‹μž„μ„ λ°°μ› μŠ΅λ‹ˆλ‹€. **Prevention:** μžλ™ μƒμ„±λ˜λŠ” 정적 HTML의 μ½˜ν…μΈ  λ³΄μ•ˆ μ •μ±…(CSP)μ—λŠ” `style-src 'sha256-'` 방식을 μ μš©ν•˜κ³ , `