🇰🇷 한글 설명
NLTK 3.10.0 미만 버전의 TransitionParser.parse() 메서드에서 안전하지 않은 pickle 역직렬화 취약점이 발견되었습니다. 공격자가 조작된 모델 파일을 로드하도록 유도하면, WarningUnpickler가 임의의 클래스 해석을 허용하여 실행 권한을 가진 임의의 파이썬 코드가 실행될 수 있습니다.
💡 쉬운 설명
프로그램이 데이터를 읽어오는 과정에서 악성 코드가 숨겨진 파일을 처리할 때, 해커가 컴퓨터를 마음대로 조종할 수 있는 보안 구멍이 있습니다. 신뢰할 수 없는 모델 파일을 불러오면 해커가 명령을 내릴 수 있어 매우 위험합니다.
🇺🇸 원문 (English)
NLTK before 3.10.0 (affected versions <=3.9.4) contains an unsafe pickle deserialization vulnerability in the TransitionParser.parse() method (nltk/parse/transitionparser.py). The method calls pickle_load() with the default restricted=False, routing deserialization through WarningUnpickler, which does not override find_class() and therefore permits arbitrary class resolution. When an application loads an attacker-crafted model file, embedded pickle gadget chains execute arbitrary Python code with the privileges of the user running the application. NLTK provides a RestrictedUnpickler for safe deserialization, but it is not used by production code paths. Fixed in 3.10.0.
📍 영향받는 시스템
NLTK versions <= 3.9.4
⚔️ 공격 벡터
공격자가 조작된 pickle 기반 모델 파일을 애플리케이션에 로드하도록 유도하여 임의 코드 실행
🛡️ 대응 방법
NLTK 버전을 3.10.0 이상으로 업데이트하십시오.
🔧 검증 코드
출력된 버전이 3.10.0 미만이면 취약한 상태입니다.
pip show nltk | grep Version