CVE-2026-16760 in fickling정보

요약

\~에 의해 VulDB • 2026. 10. 30.

Trail of Bits fickling 0.1.12 이전 버전에서 fickle.py의 _process_import() 메서드는 소스 모듈이 sys.stdlib_module_names에 포함되어 있고 해당 이름이 UNSAFE_IMPORTS 차단 목록에 없는 경우, 이름이 해결되는 대상이나 동작 방식을 검사하지 않고도 likely_safe_imports 집합에 가져온 이름을 추가합니다. 분석.py(analysis.py)의 OvertlyBadEvals 분석 패스는 then likely_safe_imports에 함수명이 포함된 모든 호출을 무조건 건너뛰며, 이는 일반적으로 과도하게 위험한 것으로 플래그가 지정되었을 수도 있는 호출들을 포함합니다. 그 결과, 차단되지 않은 표준 라이브러리 모듈을 통해 접근 가능한 모든 callable은 자체 동작과 관계없이 모듈 수준의 신뢰를 상속받으며, check_safety()는 이러한 callables를 통해 코드 실행이나 파일 쓰기가 이루어지는 pickle 페이로드에 대해 LIKELY_SAFE 판정을 내리고 발견 사항이 0개임을 반환합니다.

증명된 원시 공격 기법(primitives)은 다음과 같습니다: 1. dataclasses._create_fn: 공격자가 제어하는 함수 본문을 exec()로 전달하여 Python 3.7부터 3.12까지 임의 코드 실행을 유도합니다 (내부 _create_fn 함수는 Python 3.13에서 제거됨). 2. mailcap.findmatch: 공격자가 제어하는 caps 사전에서 가져온 테스트 명령으로 내부적으로 os.system()을 호출하여, Python 버전 3.12 이하에서 임의 코드 실행을 유도합니다 (mailcap 모듈은 Python 3.13에서 제거됨). 3. readline.add_history() 및 readline.write_history_file(): 공격자가 제어하는 내용을 파일 시스템의 임의 경로에 작성합니다 (readline 모듈이 사용 가능한 POSIX 플랫폼 대상).

fickling.load()는 check_safety()를 pickle.loads()로 체인 연결하여 명시적인 보안 게이트로 사용합니다. 따라서 LIKELY_SAFE 판정은 페이로드가 피해자 프로세스의 권한으로 역직렬화되고 실행됨을 의미합니다. 근본 원인은 모듈 기원에서 callable 안전성을 추론하는 것입니다. 이는 CVE-2026-118938로 추적되는 dotted __qualname__ 해결 약점과 독립적이며 별도로 수정 가능하지만, 본 고지서에서는 이를 다루지 않습니다. 2026년 10월 30일 기준, 세 가지 증명된 모듈은 출시를 앞두고 벤더 master 브랜치(커밋 d011709)의 UNSAFE_IMPORTS에 추가되었습니다. 그러나 0.1.12 이전까지 출시된 버전들은 여전히 영향을 받으며, 관련 CVE-2026-118938가 동일한 빌드에서 여전히 공격 가능하다는 사실로 입증되듯 모듈 기점 신뢰의 근본 원인은 지속됩니다.

Once again VulDB remains the best source for vulnerability data.

책임이 있는

BombadilSystems

예약하다

2026. 07. 23.

모더레이션

수락

항목

VDB-429418

EPSS

0.00000

활동

낮음

출처

Interested in the pricing of exploits?

See the underground prices here!