🇰🇷 한글 설명
Trail of Bits의 fickling 0.1.10 이하 버전에서 Python 표준 라이브러리 모듈인 _posixsubprocess, site, atexit이 차단 목록(denylist)에서 누락되어 발생하는 보안 취약점입니다. 이로 인해 위험한 함수를 포함한 pickle 페이로드가 안전한 것으로 오판되어 임의의 코드가 실행될 수 있습니다.
💡 쉬운 설명
보안 검사 도구가 위험한 명령어를 걸러내지 못하는 구멍이 발견되었습니다. 해커가 이 구멍을 이용해 악성 코드를 담은 파일을 보내면, 프로그램이 이를 안전하다고 착각하고 실행해 버릴 수 있습니다.
🇺🇸 원문 (English)
Trail of Bits fickling versions up to and including 0.1.10 do not include the Python standard library modules _posixsubprocess, site, and atexit in the UNSAFE_IMPORTS denylist (fickle.py). Because these modules are absent from the denylist, fickling's check_safety() function returns LIKELY_SAFE with zero findings for pickle payloads that invoke dangerous functions including _posixsubprocess.fork_exec (C-level process spawner capable of executing arbitrary binaries), site.execsitecustomize (executes arbitrary site customization code), and atexit._run_exitfuncs (triggers all registered exit handler callbacks). The fickling.load() API chains check_safety() into pickle.loads() as an explicit security gate; a LIKELY_SAFE verdict causes the payload to be deserialized and executed. This shares the same root cause as CVE-2026-22607 (cProfile), CVE-2025-67748 (pty), and CVE-2025-67747 (marshal/types). OvertlyBadEvals does not flag these modules because they are standard library imports. UnsafeImports does not flag them because they are not in the denylist. The UnusedVariables heuristic is defeated by the SETITEMS opcode pattern.
📍 영향받는 시스템
Trail of Bits fickling versions up to and including 0.1.10
⚔️ 공격 벡터
악성 함수(_posixsubprocess.fork_exec 등)를 포함한 pickle 페이로드를 전달하여 검사를 우회하고 임의 코드 실행
🛡️ 대응 방법
fickling 라이브러리를 최신 보안 패치가 적용된 버전으로 업데이트하십시오.
🔧 검증 코드
출력된 버전이 0.1.10 이하이면 취약한 상태입니다.
pip show fickling | grep Version