From 0ed69326a803e4aac2d93fdf311b867c0944c9b2 Mon Sep 17 00:00:00 2001 From: seonghobae <8172694+seonghobae@users.noreply.github.com> Date: Mon, 20 Jul 2026 20:52:50 +0000 Subject: [PATCH] =?UTF-8?q?=F0=9F=9B=A1=EF=B8=8F=20Sentinel:=20[CRITICAL/H?= =?UTF-8?q?IGH]=20Fix=20Unhandled=20Exception=20DoS=20in=20glob=20parsing?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Java의 `FileSystems.getDefault().getPathMatcher("glob:$pattern")`는 형식이 잘못된 패턴(예: `glob:` 또는 이스케이프 오류 등)이 입력될 경우 `IllegalArgumentException`을 발생시킵니다. 기존 코드에서는 `java.util.regex.PatternSyntaxException`만 catch 하도록 작성되어 있었으나, 이는 `IllegalArgumentException`의 하위 클래스일 뿐이므로, 다른 형식 오류로 인한 `IllegalArgumentException` 발생 시 어플리케이션 크래시(DoS)가 발생했습니다. 이 커밋은 `IllegalArgumentException` 전체를 catch 하도록 수정하여 처리되지 않은 예외로 인한 서비스 거부 취약점을 방지합니다. --- .jules/sentinel.md | 7 ++++- src/main/kotlin/html4tree/main.kt | 2 +- src/test/kotlin/html4tree/SentinelGlobTest.kt | 26 +++++++++++++++++++ 3 files changed, 33 insertions(+), 2 deletions(-) create mode 100644 src/test/kotlin/html4tree/SentinelGlobTest.kt diff --git a/.jules/sentinel.md b/.jules/sentinel.md index 6ecf72f..f2406ed 100644 --- a/.jules/sentinel.md +++ b/.jules/sentinel.md @@ -36,7 +36,7 @@ ## 2024-06-28 - [html4tree] 구성 파일에 대한 심볼릭 링크 및 디렉토리 공격 **Vulnerability:** 심볼릭 링크/디렉토리 `.html4ignore`를 통한 DoS 및 경로 탐색 **Learning:** 런타임에 파싱되는 애플리케이션 구성 파일(예: `.html4ignore`)은 해당 파일 유형이 암묵적으로 신뢰될 경우 표적이 될 수 있습니다. 사용자나 공격자는 `.html4ignore`라는 이름의 디렉토리를 생성하여 읽기 시 충돌을 유발하거나, `/dev/zero` 또는 `/dev/urandom`에 심볼릭 링크를 연결하여 애플리케이션이 멈추고 리소스를 무한히 소비하게 만들 수 있습니다. -**Prevention:** 구성 파일 파싱을 시도하기 전에 항상 구성 파일이 일반 파일인지(`isFile`) 확인하고 심볼릭 링크를 명시적으로 거부(`!Files.isSymbolicLink`)하십시오. +**Prevention:** 구성 파일 파싱을 시도하기 전에 항상 구성 파일이 일반 파일인지(`isFile`) 확인하고 심볼릭 처리 시에 심볼릭 링크를 명시적으로 거부(`!Files.isSymbolicLink`)하십시오. ## 2024-05-31 - [DoS Risk] 무시 파일 처리 중 통제되지 않은 리소스 소비 **Vulnerability:** `.html4ignore` 처리가 패턴의 수나 길이에 대한 상한 없이 정규식 패턴을 줄 단위로 읽습니다. 공격자는 수천 개의 지나치게 긴 정규식 패턴이 포함된 파일을 조작하여 서비스 거부(DoS) 및 잠재적인 ReDoS를 유발할 수 있습니다. @@ -83,3 +83,8 @@ **Vulnerability:** 정적 HTML 생성 도구에서 매번 다른 Nonce를 동적으로 생성하여 CSP에 적용하는 것은, 캐싱 효율을 저하시킬 뿐만 아니라 정적 배포 환경(예: GitHub Pages 등)에서 올바른 보안 정책 수립을 방해할 수 있는 안티 패턴입니다. **Learning:** 정적으로 고정된 인라인 스타일이나 스크립트에는 난수화된 Nonce보다 콘텐츠 자체의 해시(SHA-256 등)를 사용하는 것이 안전하고 일관된 방식임을 배웠습니다. **Prevention:** 자동 생성되는 정적 HTML의 콘텐츠 보안 정책(CSP)에는 `style-src 'sha256-'` 방식을 적용하고, `