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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
도구/GitHubGitHub/paparojonathan/cve-2026-9335-keras-hdf5-externallink
Vulnerability AnalysisExploitationPapers & ResearchLearning & EducationCurated Resources
GitHubpaparojonathan/cve-2026-9335-keras-hdf5-externallink

CVE-2026-9335-keras-hdf5-externallink

CVE-2026-9335: KerasFileEditor와 load_weights가 h5py ExternalLinks를 따라가며, keras ≤ 3.14.0에서 임의의 로컬 HDF5 파일 내용을 노출합니다. 권고 및 검증된 PoC 포함.

저장소 보기

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
4시간 전아직 검토되지 않음
공유

CVE-2026-9335 — Keras HDF5 ExternalLink 로컬 파일 내용 노출

CVE CVSS CWE-22 Affected Fixed

두 개의 공개 Keras API — keras.saving.KerasFileEditor 및 keras.saving.load_weights / model.load_weights — 는 링크 유형 검사 없이 으로 HDF5 그룹 멤버를 읽습니다. h5py는 인덱싱 시 / 를 하므로, 공격자가 제공한 링크만 포함된 , 또는 파일은 Keras가 피해자 로컬 파일시스템의 을 읽도록 만듭니다.

직접 인덱싱
ExternalLink
SoftLink
자동 역참조
.weights.h5
.h5
.keras
임의 HDF5 파일 내용

Keras에는 이미 올바른 가드(saving_lib.py의 safe_get_h5_group / safe_get_h5_dataset)가 포함되어 있습니다 — 이 두 진입점은 단순히 이를 호출하지 않습니다.

한눈에 보기

CVECVE-2026-9335
영향 범위keras-team/keras ≤ 3.14.0 (PyPI)
유형경로 탐색 / 정보 노출 (CWE-22, CWE-200)
CVSS 3.1AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:N/A:N → 6.5 (Medium)
영향피해자가 읽을 수 있는 모든 로컬 HDF5 파일의 노출
공격 경로피해자가 악성 .weights.h5 / .h5 / .keras 파일을 열거나 로드함
상태keras 3.15.0에서 수정됨 (PR #22899 / #22900); huntr에서 검증됨 (2026-05-22, 유지관리자 hertschuh)
제보자Jonathan Paparo (jonathan-paparo)

저장소 구성

경로설명
advisory/CVE-2026-9335.md전체 기술 문서: 근본 원인, 두 취약 지점, PoC 출력, 수정 사항
poc/poc_file_editor.pyPoC 1 — KerasFileEditor가 ExternalLink를 따라가 피해자 h5를 유출
poc/poc_load_weights.pyPoC 2 — model.load_weights가 ExternalLink를 통해 피해자의 가중치를 가져옴
poc/requirements.txt고정된 재현 환경
docs/timeline.md조율된 공개 타임라인

근본 원인 (30초 요약)

root@kitploit:~
# keras/src/saving/saving_api.py  (load_weights, 레거시 .h5 분기)
with h5py.File(filepath, "r") as f:
    if "layer_names" not in f.attrs and "model_weights" in f:
        f = f["model_weights"]      # <-- 여기의 ExternalLink는 h5py에 의해 자동 역참조됨

f["model_weights"](및 file_editor.py의 유사한 data[key] 탐색)는 다른 파일로의 링크를 투명하게 따라갑니다. Keras가 다른 곳에서 사용하는 안전한 패턴은 먼저 링크 유형을 사전 검사합니다:

root@kitploit:~
# keras/src/saving/saving_lib.py  (safe_get_h5_group)
group_type = parent.get(name, default=None, getclass=True, getlink=True)
if group_type in (h5py.ExternalLink, h5py.SoftLink):
    raise ValueError(f"Not allowed: H5 file with {group_type.__name__}")

재현

root@kitploit:~
python -m pip install -r poc/requirements.txt

# PoC 1 — KerasFileEditor가 별도의 피해자 h5 파일 내용을 유출
KERAS_BACKEND=jax python poc/poc_file_editor.py

# PoC 2 — model.load_weights가 ExternalLink를 통해 피해자 파일의 가중치를 로드
KERAS_BACKEND=jax python poc/poc_load_weights.py

각 PoC는 시스템 임시 디렉터리 아래에 자체 "피해자" 및 "공격자" h5 파일을 생성하고, 유출을 시연하며, *** VULNERABILITY CONFIRMED ***를 출력한 후 스스로 정리합니다. keras==3.14.0, Python 3.12.6, JAX 백엔드에서 검증되었습니다.

수정 사항

두 지점 모두 기존 safe_get_h5_group 헬퍼를 통해 라우팅하거나, 인덱싱 전에 (h5py.ExternalLink, h5py.SoftLink)를 거부하는 data.get(key, default=None, getclass=True, getlink=True) 사전 검사를 추가합니다. 정확한 diff는 advisory를 참조하세요.

책임 있는 사용

이 자료는 조율된 공개 및 CVE 지정 이후 방어 및 교육 목적으로 게시되었습니다. PoC는 임시 디렉터리에서 스스로 생성한 파일에만 작동합니다. 테스트 권한이 없는 시스템이나 데이터에 이러한 기법을 사용하지 마십시오.

크레딧

Jonathan Paparo가 발견 및 제보했습니다 (huntr: jonathan-paparo). keras-team 유지관리자 hertschuh가 검증했습니다.

도구 다운로드