Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

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

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

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-92392 — 로컬 curl/libcurl 빌드가 CVE-2026-92392 HTTP/2 업로드 use-after-free 취약점에 노출되어 있는지 검사하며, 수동 인벤토리, 마운트된 이미지 스캔, 제한된 루프백 PoC 프로브를 제공합니다. | Kitploit
도구/GitHubGitHub/ashu7ank/cve-2026-92392
Defensive ToolsVulnerability ScannersContainer SecurityDynamic Analysis (Sandboxing)Vulnerability AnalysisInformation GatheringSecurity VirtualizationFuzzing
GitHubashu7ank/cve-2026-92392

CVE-2026-92392

로컬 curl/libcurl 빌드가 CVE-2026-92392 HTTP/2 업로드 use-after-free 취약점에 노출되어 있는지 검사하며, 수동 인벤토리, 마운트된 이미지 스캔, 제한된 루프백 PoC 프로브를 제공합니다.

120일 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
저장소 보기

CVE-2026-92392 curl/libcurl 노출 검사기 및 POC

cve_2026_92392_check.py는 로컬 curl 및 libcurl 아티팩트가 CVE-2026-92392에 노출되어 있는지 평가합니다. 이 취약점은 curl/libcurl의 HTTP/2 업로드 use-after-free입니다.

이 도구는 수동적 로컬 인벤토리, 제공된 배너 평가, 비실행 방식의 마운트된 이미지 스캔, 그리고 범위가 제한된 루프백 HTTP/2 프로토콜 프로브를 지원합니다. 이 프로브는 방어적이며 무기화되지 않았습니다. 명령 페이로드, 셸코드, 메모리 주소 조작, 정보 유출 로직, 또는 RCE 페이로드가 없습니다.

능동 프로브는 127.0.0.1에만 바인딩하며, 원격 대상 URL이나 호스트를 받지 않고, 선택된 로컬 curl 바이너리만 실행합니다.

이 검사기가 확립하는 것

이 검사기는 네 가지 서로 다른 증거 수준을 구분합니다:

증거 수준확립하는 것확립하지 않는 것
빌드 분류버전이 확인된 curl/libcurl 아티팩트가 업스트림 영향 범위 밖에 있는지, 업스트림 영향 대상이지만 벤더 패치 상태가 알려지지 않았는지, 또는 제공된 패치 상태 증거를 사용하여 영향받는 것으로 확인되었는지 여부애플리케이션이 실제로 영향받는 HTTP/2 업로드 경로를 사용하는지 여부
런타임 노출 컨텍스트제공된 애플리케이션 정보가 HTTP/2 업로드가 공격자가 제어하는 엔드포인트에 도달할 수 있음을 나타내는지 여부취약점이 트리거되었는지 여부
프로토콜 자극로컬 루프백 하네스가 하나의 HTTP/2 연결에서 두 번의 업로드로 문서화된 두 가지 리셋 변형을 모두 전달했는지 여부use-after-free, 크래시 원인, 또는 코드 실행
CVE 귀속 새니타이저 결과후보 시퀀스, AddressSanitizer 힙 use-after-free, 업스트림 영향 아티팩트 식별 정보, 그리고 일치하는 HTTP/2 스택이 모두 관찰되었는지 여부다른 시스템에서의 신뢰성 또는 실질적 익스플로잇 가능성

깨끗한 실행, 불완전한 프로토콜 실행, 또는 크래시가 없는 새니타이저 실행은 빌드가 안전하다는 것을 증명하지 않습니다.

취약점 요약

CVE-2026-92392는 curl/libcurl의 HTTP/2 업로드 처리에 영향을 미칩니다. 업로드 중에 영향받는 빌드는 REFUSED_STREAM 또는 HTTP_1_1_REQUIRED를 담은 HTTP/2 RST_STREAM을 처리할 수 있습니다. 그런 다음 버퍼링된 업로드 데이터가 원래 전송의 HTTP/2 상태가 분리된 후 새로운 요청으로 파싱될 수 있습니다. 이후의 HTTP/2 콜백이 오래된 Curl_easy 포인터를 역참조할 수 있습니다.

이 검사기를 개정하는 데 사용된 REA 비교는 관련 정리 순서 차이를 확인했습니다:

  1. 영향받는 아티팩트는 Curl_conn_ev_data_done을 호출하고, 대기 중인 핸들을 처리한 다음, 그 후에야 Curl_req_done을 호출합니다.
  2. Curl_req_done이 req_flush에 도달하는 반면, HTTP/2 데이터 완료 경로는 이미 스트림 컨텍스트를 지운 상태입니다.
  3. 남은 버퍼링된 업로드 데이터가 동일한 원시 easy-handle 포인터와 연관된 이후의 HTTP/2 스트림을 생성할 수 있습니다.
  4. 수정된 구현은 Curl_conn_ev_data_done 전에 Curl_req_done을 수행하여 해당 오래된 순서를 제거합니다.

이것은 검사기의 증명 모델을 뒷받침하는 구현 증거입니다. 벤더 패치 상태는 여전히 독립적인 검증이 필요합니다.

영향을 받는 업스트림 릴리스

업스트림 권고는 취약한 구현이 curl 8.12.0에서 도입되었다고 식별합니다. 검사기는 업스트림 릴리스를 다음과 같이 분류합니다:

릴리스 조건분류
8.12.0 이전NOT AFFECTED
8.12.0부터 8.22.0까지, 수정된 백포트 제외업스트림 영향받음
8.14.3 이상의 8.14 브랜치수정된 백포트
8.16.2 이상의 8.16 브랜치수정된 백포트
8.20.2 이상의 8.20 브랜치수정된 백포트
8.23.0 이상NOT AFFECTED
개발, 스냅샷, 나이틀리, 또는 모호한 버전INDETERMINATE

벤더는 curl의 업스트림 버전 문자열을 변경하지 않고 수정 사항을 백포트할 수 있습니다. 따라서 영향받는 업스트림 버전은 인벤토리 증거이지, 벤더 빌드가 패치되지 않았다는 결정적 증거가 아닙니다.

다운스트림의 의미론적 수정 상태가 벤더 권고, 패키지 체인지로그, 소스 비교, 또는 다른 신뢰할 수 있는 아티팩트 수준 방법을 통해 검증된 경우에만 --patch-state를 사용하십시오.

--patch-state 값의미
unknown기본값. 영향을 받는 업스트림 버전은 UPSTREAM-AFFECTED VERSION을 생성합니다.
absent운영자가 다운스트림 수정 사항이 없음을 독립적으로 확인했습니다. HTTP/2를 지원하는 영향을 받는 빌드는 AFFECTED BUILD를 생성합니다.
present운영자가 다운스트림 의미론적 수정 사항이 존재함을 독립적으로 확인했습니다. 이는 운영자의 단정이며, curl의 업스트림 수정 사항과 바이너리가 동등하다는 자동 증명은 아닙니다.

요구 사항

  • Python 3.10 이상.
  • 표준 라이브러리 외에 Python 의존성 없음.
  • --poc를 위한 로컬 curl 실행 파일.
  • 의미 있는 능동 프로빙을 위한 확인된 HTTP/2 지원.
  • --poc-proof asan을 위한 AddressSanitizer 계측 curl 빌드.
  • --tls가 사용될 때만 openssl 명령.
  • 능동 프로빙을 위한 제품으로 검증된 네이티브 ELF 또는 Mach-O curl 실행 파일.

능동 PoC 모드는 스크립트, 래퍼, 식별되지 않은 네이티브 실행 파일, 그리고 PE/Windows 바이너리를 거부합니다. 수동 평가는 배너와 마운트된 파일 시스템에 대해 계속 사용할 수 있습니다.

빠른 시작

PATH에서 발견된 curl 바이너리를 검사합니다:

python3 cve_2026_92392_check.py

JSON으로 출력하세요:

python3 cve_2026_92392_check.py --json

내부 자체 테스트 실행:

python3 cve_2026_92392_check.py --self-test
python3 -O cve_2026_92392_check.py --self-test

선택한 curl 실행 파일과 libcurl 공유 라이브러리를 검사합니다:

python3 cve_2026_92392_check.py \
  --curl-binary /opt/curl/bin/curl \
  --libcurl-path /opt/curl/lib/libcurl.so \
  --json

신뢰할 수 있는 curl 배너를 바이너리를 실행하지 않고 평가합니다:

python3 cve_2026_92392_check.py \
  --version-string 'curl 8.12.0 libcurl/8.12.0 nghttp2/1.61.0' \
  --json

8.12.0과 같은 버전 번호만으로는 검증된 curl/libcurl 신원 증거로 인정되지 않습니다.

원격 인벤토리 워크플로

검사기는 의도적으로 원격 호스트에 접속하지 않습니다. 승인된 관리 채널을 통해 배너를 확보하여 로컬에 저장한 후, 로컬에서 평가하십시오:

ssh [email protected] 'curl --version' > host-curl-version.txt

python3 cve_2026_92392_check.py \
  --version-file host-curl-version.txt \
  --http2-use unknown \
  --untrusted-upload unknown \
  --https-certificate unknown \
  --json

애플리케이션 검토나 신뢰할 수 있는 추적을 통해 업로드가 HTTP/2를 사용하고, 공격자가 제어하는 엔드포인트에 도달할 수 있으며, 해당 HTTPS 인증서를 수용한다는 사실이 확인되면, 그 사실을 명시적으로 제공하십시오:

python3 cve_2026_92392_check.py \
  --version-file host-curl-version.txt \
  --http2-use yes \
  --untrusted-upload yes \
  --https-certificate yes \
  --patch-state unknown \
  --json

일반 텍스트 h2c의 경우 --https-certificate not-applicable을 사용합니다.

--http2-use yes는 런타임 HTTP/2 사용을 식별합니다. 이는 해당 아티팩트가 HTTP/2 지원으로 컴파일되었음을 증명하지는 않습니다. 마찬가지로 --untrusted-upload yes는 애플리케이션 데이터 흐름을 설명하는 반면, --https-certificate yes는 별도의 HTTPS 신뢰 조건을 기록합니다.

마운트된 이미지 평가

--root를 사용하면 발견된 파일을 실행하지 않고 마운트된 컨테이너 이미지, VM 이미지 또는 추출된 파일 시스템을 스캔할 수 있습니다:

python3 cve_2026_92392_check.py \
  --root /mnt/rootfs \
  --json

루트 스캔:

  • 파일시스템 루트를 스캔 대상으로 거부합니다.
  • 발견된 바이너리를 실행하지 않습니다.
  • 이름이 지정된 curl, curl.exe, libcurl 아티팩트만 검사합니다.
  • 이름이 변경된 curl 바이너리나 정적으로 임베드된 libcurl은 평가하지 않습니다.
  • 문자열에서 버전 또는 HTTP/2 단서를 복구할 수 있지만, 문자열만으로 얻은 증거는 INDETERMINATE로 남을 수 있습니다.

판정 및 노출 모델

빌드 판정은 두 가지 조건에 의해 결정됩니다:

전제 조건의미
P1영향을 받는 업스트림 범위 내에서 검증된 curl/libcurl 식별 정보 및 버전이며, 검증된 다운스트림 패치 상태가 적용됨
P2평가 대상 아티팩트에 HTTP/2 지원이 컴파일되어 있음

런타임 노출은 별도로 평가됩니다:

전제 조건의미
P3평가 대상 업로드가 실제로 HTTP/2를 협상함
P4애플리케이션이 공격자가 제어하는 HTTP/2 엔드포인트로 업로드할 수 있음
P5HTTPS 사용 시 HTTPS 인증서가 수락됨
P6아키텍처, libc, TLS 할당 동작, CA 번들 등 익스플로잇별 환경 세부 사항
P7업로드 크기, 동시성, 페이로드 윈도우, 타이밍 등 익스플로잇 측 안무

P1과 P2는 빌드 적용 가능성을 결정합니다. P3과 P4는 잠재적으로 영향을 받는 사용이 식별되는지 여부를 결정합니다. P5부터 P7까지는 원격 익스플로잇 조건에 영향을 미치며, HTTP/2 use-after-free가 존재하는지 여부와는 무관합니다.

판정의미
NOT AFFECTED버전이 업스트림 영향 범위를 벗어나거나, 수정된 백포트가 식별되었거나, HTTP/2가 권위 있게 부재함.
UPSTREAM-AFFECTED VERSIONHTTP/2 지원이 있는 영향받는 업스트림 버전이 식별되었으나 다운스트림 패치 상태는 알 수 없음.
AFFECTED BUILD영향받는 업스트림 버전과 HTTP/2 지원이 식별되었고, --patch-state absent가 독립적으로 검증된 증거로 제공됨.
INDETERMINATE제품 식별 정보, 버전, HTTP/2 지원 또는 릴리스 상태를 확립할 수 없음.

루프백 프로토콜 프로브

기본 활성 프로브는 127.0.0.1에 바인딩된 서버를 대상으로 두 개의 합성 업로드를 실행합니다. 이는 문서화된 두 가지 리셋 변형을 모두 전달합니다:

  • REFUSED_STREAM
  • HTTP_1_1_REQUIRED

각 변형에 대해 하네스는 업로드 정지를 기다린 후 부분 응답을 보내고, RST_STREAM을 보내며, 스트림 수준 증거를 기록합니다. 프로토콜 증명은 두 리셋 변형이 모두 전달되었고 각 변형에 대해 하나의 연결에서 두 개의 업로드 스트림이 관찰된 경우에만 충족됩니다.

python3 cve_2026_92392_check.py \
  --curl-binary /path/to/curl \
  --poc \
  --poc-proof protocol \
  --json

STIMULUS REPRODUCED라는 결과는 경계가 정해진 프로토콜 조건이 관찰되었음을 의미합니다. 이는 use-after-free, 크래시 인과관계, CVE 귀속 또는 코드 실행을 입증하지 않습니다.

기본적으로 선택된 아티팩트가 업스트림 영향을 받는 HTTP/2 지원 curl 빌드로 식별되지 않으면 PoC 모드는 건너뜁니다. --force는 로컬 네거티브 컨트롤에 대해 무해한 루프백 하네스를 실행하는 것을 허용하지만, 네이티브 형식 또는 제품 식별 검증을 우회하지는 않습니다.

python3 cve_2026_92392_check.py \
  --curl-binary /path/to/known-fixed-curl \
  --poc \
  --force \
  --json

AddressSanitizer 모드

AddressSanitizer 모드는 무해한 요청 유사 마커가 포함된 로컬에서 생성된 합성 업로드를 사용합니다. 이는 공개 익스플로잇 구조의 복사본이 아니라 후보 정리 경로 프로브입니다.

python3 cve_2026_92392_check.py \
  --curl-binary /path/to/asan/curl \
  --poc \
  --poc-proof asan \
  --json

검사기는 다음 조건이 모두 참일 때만 CVE-2026-92392 REPRODUCED를 보고합니다:

  1. 후보 루프백 시퀀스가 전달되었다.
  2. AddressSanitizer가 heap-use-after-free를 보고했다.
  3. 선택된 아티팩트가 업스트림 영향을 받는 HTTP/2 지원 curl 빌드로 식별된다.
  4. 기호화된 sanitizer 스택이 on_begin_headers와 HTTP/2 컨텍스트를 포함한 curl의 공개된 HTTP/2 콜백 경로와 일치한다.

일치하는 아이덴티티나 스택이 없는 일반적인 AddressSanitizer heap-use-after-free는 SANITIZER UAF OBSERVED로 보고됩니다. 이는 메모리 안전성 신호일 뿐, 확인된 CVE 귀속은 아닙니다.

지원되는 sanitizer 진단 없이 발생한 프로세스 시그널은 INCONCLUSIVE입니다.

AddressSanitizer 빌드 구성 예시:

CC=clang \
CFLAGS='-O1 -g -fno-omit-frame-pointer -fsanitize=address' \
LDFLAGS='-fsanitize=address' \
./configure --with-nghttp2 --disable-shared

make -j4
도구 다운로드