🇰🇷 한글 설명
Fickling은 Python 피클링 디컴파일러 및 정적 분석기입니다. Fickling 버전 0.1.6 이하에서는 Python의 cProfile 모듈을 안전하지 않은 것으로 처리하지 않습니다. 이로 인해 cProfile.run()을 사용하는 악의적인 피클이_SUSPICIOUS_대신_OVERTLY_MALICIOUS_로 분류될 수 있습니다. 사용자가 피클의安全성을 결정하기 위해 Fickling의 출력을 신뢰한다면, 이 잘못된 분류는 사용자가 공격자 제어 코드를 시스템에서 실행하도록 할 수 있습니다. 이는 Fickling을 피클 디세리얼라이제이션의 보안 게이트로 사용하는 모든 워크플로우 또는 제품에 영향을 미칩니다. 이 문제는 버전 0.1.7에서 해결되었습니다.
💡 쉬운 설명
Fickling은 Python 피클링 디컴파일러입니다. 버전 0.1.6 이하에서는 악의적인 코드를 안전한 코드로 판단하여 시스템을 공격할 수 있습니다. 사용자는 Fickling 버전을 0.1.7 이상으로 업데이트해야 합니다.
🇺🇸 원문 (English)
Fickling is a Python pickling decompiler and static analyzer. Fickling versions up to and including 0.1.6 do not treat Python's cProfile module as unsafe. Because of this, a malicious pickle that uses cProfile.run() is classified as SUSPICIOUS instead of OVERTLY_MALICIOUS. If a user relies on Fickling's output to decide whether a pickle is safe to deserialize, this misclassification can lead them to execute attacker-controlled code on their system. This affects any workflow or product that uses Fickling as a security gate for pickle deserialization. This issue has been patched in version 0.1.7.
📍 영향받는 시스템
Fickling 버전 0.1.6 이하
⚔️ 공격 벡터
악의적인 피클을 생성하여 cProfile.run()을 사용하여 시스템을 공격
🛡️ 대응 방법
Fickling 버전을 0.1.7 이상으로 업데이트하여 문제를 해결
🔧 검증 코드
로컬 Linux PC에서 Python을 실행하여 Fickling 버전을 확인합니다. pip show fickling 명령어를 사용하여 Fickling 버전을 확인하고, 버전이 0.1.6 이하이면 취약한 것으로 판단합니다. 코드를 실행하기 전에 Python과 pip가 설치되어 있는지 확인해야 합니다.
import subprocess
result = subprocess.run(['pip', 'show', 'fickling'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
if 'Version: 0.1.6' in result.stdout.decode('utf-8'):
print('{"result": "취약", "reason": "Fickling 버전이 0.1.6 이하입니다."}')
else:
print('{"result": "양호", "reason": "Fickling 버전이 0.1.7 이상입니다."}')