무슨 일이 있었나
Trail of Bits의 fickling — 악성 pickle 기반 ML 모델 파일을 탐지하기 위한 광범위하게 사용되는 정적 분석 도구에서의 논리 오류로 인해 핵심 보호 기능(MLAllowlist)이 무력화되어 세밀하게 제작된 악성 pickle 페이로드가 안전성 검사를 통과하고 역직렬화 시 임의의 코드를 실행할 수 있습니다. 2026년 7월 4일 NVD에 발표, CVSS 8.8 (높음).
왜 중요한가
fickling은 ML 에코시스템 전반에서 사용되는 사실상의 표준 스캐닝 도구입니다(Hugging Face Hub 도구 포함). 로드 전에 신뢰할 수 없는 pickle 직렬화 모델을 검증하는 보안 도구이며, 핵심 검사가 침묵적으로 실패한다는 것은 fickling의 판정에 따라 모델 로드를 제어하는 모든 파이프라인이 중독된 모델 파일에서 공격자가 제어하는 코드를 무의식중에 실행할 수 있다는 의미이며, 이는 대규모 ML 공급망 신뢰를 직접적으로 약화시킵니다.
공격 경로
UnsafeImportsML 분석 패스는 검사하는 모든 import 노드에 대해 조건 없이 AnalysisContext.shorten_code(node)를 호출하고, 부작용으로 공유된 'reported_shortened_code' 집합을 채웁니다. 이로 인해 후속 MLAllowlist 패스가 allowlist 검사를 완전히 건너뛰어 데드 코드가 됩니다. 결과적으로 UNSAFE_IMPORTS 거부 목록 외부의 모든 모듈(임의의 코드 실행이 가능한 비-ML 표준 라이브러리 모듈 포함)이 fickling.check_safety()를 통과할 수 있으며 LIKELY_SAFE로 보고된 후 fickling의 판정을 신뢰하는 모든 애플리케이션에 의해 pickle.loads()를 통해 실행됩니다.
영향받는 시스템
Trail of Bits fickling ≤ 0.1.11 (0.1.12에서 수정됨)
완화 방안
fickling 0.1.12 이상으로 업그레이드하세요. 이 버전은 MLAllowlist 적용을 복원하는 논리 오류를 수정합니다. 신뢰할 수 없는 pickle 파일의 안전성 판정에만 의존하지 말고 샌드박싱 또는 safetensors 형식 마이그레이션과 함께 사용하세요.