Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
auth-header-trust-rules — 헤더 신뢰 인증 우회 패턴(CVE-2025-29927 클래스)을 탐지하는 Semgrep 규칙입니다. bk-security.github.io의 동반 도구입니다. | Kitploit
도구/GitHubGitHub/bk-security/auth-header-trust-rules
Authentication & AuthorizationStatic Code Analysis (SAST)Vulnerability AnalysisCode AnalysisWeb SecurityLearning & Education
GitHubbk-security/auth-header-trust-rules

auth-header-trust-rules

헤더 신뢰 인증 우회 패턴(CVE-2025-29927 클래스)을 탐지하는 Semgrep 규칙입니다. bk-security.github.io의 동반 도구입니다.

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
저장소 보기
3개월 전아직 검토되지 않음

auth-header-trust-rules

공격자가 제어하는 HTTP 요청 헤더를 기반으로 인증, 권한 부여 또는 신뢰 결정을 내리는 코드를 플래그하는 작은 Semgrep 규칙 팩입니다.

이 취약점 클래스의 대표적인 예는 CVE-2025-29927입니다. Next.js는 x-middleware-subrequest 헤더를 신뢰하여 미들웨어가 실행되었는지 여부를 결정했으며, 조작된 값을 제공하는 모든 인바운드 요청이 미들웨어를 완전히 건너뛸 수 있었습니다. 동일한 패턴이 여러 프레임워크와 에코시스템에서 반복됩니다.

이 팩은 두 가지 언어 계열과 버그의 세 가지 하위 클래스에 대한 규칙을 제공합니다. 완전히 조정된 CI 게이트가 아닌 코드 검토 보조 도구로 설계되었습니다. 규칙은 정밀도보다 재현율을 선호하며, 사람이 각 결과에 대해 판단을 내리는 대화형으로 실행하는 것이 가장 좋습니다.

이 취약점 클래스와 이 팩의 설계 선택에 대한 더 긴 글은 bk-security.github.io에서 확인할 수 있습니다.

규칙 목록

규칙언어심각도탐지 대상
nodejs-header-flag-auth-bypassJS / TS경고내부 프로토콜 또는 인증 우회 용도로 사용됨을 암시하는 헤더 읽기 (x-internal, x-bypass-auth, x-middleware-subrequest, x-admin-override, x-impersonate 등)
nodejs-header-as-identityJS / TS경고일반적으로 사용자 ID를 전달하는 데 사용되는 헤더 읽기 (x-forwarded-user, x-authenticated-user, x-remote-user 등)
nodejs-forwarded-for-trustJS / TS정보보안 결정을 위해 일반적으로 신뢰되는 x-forwarded-for, x-real-ip 및 유사한 소스 IP 헤더 읽기
python-header-flag-auth-bypassPython경고Node.js 변형과 동일하며, Django 스타일의 request.META["HTTP_X_*"] 접근 포함
python-header-as-identityPython경고Node.js 변형과 동일, Python 방식
python-forwarded-for-trustPython정보Node.js 변형과 동일, Python 방식

빠른 시작

Semgrep 설치:

root@kitploit:~
pip install semgrep

대상에 대해 팩 실행:

root@kitploit:~
semgrep --config /path/to/auth-header-trust-rules/rules /path/to/target

또는 단일 규칙 실행:

root@kitploit:~
semgrep --config /path/to/auth-header-trust-rules/rules/nodejs/header-flag-auth-bypass.yaml /path/to/target

번들된 픽스처에 대해 규칙 검증:

root@kitploit:~
semgrep --test --config rules/ tests/

예상 출력:

root@kitploit:~
6/6: ✓ All tests passed

규칙이 잡아내는 것과 잡아내지 못하는 것

규칙은 신뢰할 때 위험하다고 알려진 헤더 이름의 선별된 목록과 일치합니다. 일반적인 경우는 잡아냅니다. 잡아내지 못하는 경우:

  • 헤더 읽기가 헤더 문자열을 포함하지 않는 도우미 함수 내에 숨겨진 프레임워크. x-some-novel-name을 읽는 getInternalFlag(req)라는 사용자 정의 도우미는 규칙을 통과합니다.
  • 선별된 목록에 없는 헤더 이름. CVE-2025-29927 클래스는 원칙적으로 모든 헤더 이름을 사용할 수 있습니다. x-internal-*, x-trust-*, x-bypass-*와 같은 패턴을 포함하여 재현율을 높였지만 새로운 이름은 누락될 수 있습니다.
  • 쿠키, 쿼리 매개변수 또는 요청 본문 필드를 기반으로 한 인증 결정. 이는 동일한 취약점 클래스이지만 자체 규칙이 필요합니다.
  • 헤더의 부재에 기반한 인증 결정. 일부 애플리케이션은 헤더가 없을 때 인증 검사를 건너뜁니다(잘못 구성된 허용 목록 패턴). 현재 규칙은 읽기 및 사용 패턴 기반이며 부재 기반이 아닙니다.

특정 코드베이스에 대해 팩을 확장할 때 가장 가치 있는 추가 사항은 일반적으로 프레임워크별 도우미 함수 패턴입니다. 코드베이스에 isInternalRequest(req) 도우미가 있는 경우 이를 잡아내는 규칙은 YAML 한 줄입니다.

규칙 추가

  1. rules/<lang>/<name>.yaml 아래에 규칙을 만듭니다.
  2. tests/<lang>/<name>.<ext> 아래에 긍정 예제에는 # ruleid: <rule-id> 주석을, 부정 예제에는 # ok: <rule-id> 주석을 단 테스트 픽스처를 만듭니다.
  3. semgrep --test --config rules/ tests/를 실행합니다. 새 규칙과 픽스처가 자동으로 감지됩니다. 변경 사항을 제출하기 전에 테스트가 통과해야 합니다.

라이선스

MIT.

작성자

Bruce Kang. 동반 블로그 게시물의 소스는 bk-security.github.io에 있습니다.

도구 다운로드