🇰🇷 한글 설명
Ludwig 프레임워크 0.17.8 미만 버전에서 압축 해제 시 심볼릭 링크 및 하드 링크에 대한 검증이 누락되어 발생하는 취약점입니다. 공격자가 조작된 아카이브를 통해 추출 디렉토리를 벗어나 임의의 파일 시스템 경로에 파일을 생성할 수 있습니다.
💡 쉬운 설명
압축 파일을 풀 때 파일이 엉뚱한 곳에 저장되지 않도록 막는 기능이 부족한 상태입니다. 나쁜 의도를 가진 압축 파일을 열면 컴퓨터의 중요한 시스템 파일을 공격자가 원하는 위치에 덮어쓸 수 있습니다.
🇺🇸 원문 (English)
Ludwig is a low-code framework for building custom LLMs, neural networks, and other AI models. Prior to 0.17.8, ludwig.datasets.archives.extract_archive() validated tar member names before calling TarFile.extractall() but did not validate symlink members or hard-link members. A crafted archive could create a link that escaped the extraction directory and then write a later member through that link, placing attacker-controlled content at an arbitrary filesystem path with the extracting process's privileges. The same containment check used os.path.commonprefix, so a sibling path sharing the destination's character prefix could also pass. The dataset-loading path can download and extract configured archive URLs, but exploitation requires a user to process an archive from a source controlled or compromised by the attacker on supported Python 3.12 and 3.13 runtimes. Python 3.14 is not affected because its default tar data filter rejects escaping links. This issue is fixed in version 0.17.8.
📍 영향받는 시스템
Ludwig framework versions prior to 0.17.8 (on Python 3.12 and 3.13)
⚔️ 공격 벡터
공격자가 조작된 심볼릭/하드 링크가 포함된 아카이브 파일을 사용자에게 전달하여 실행 유도
🛡️ 대응 방법
Ludwig 프레임워크를 0.17.8 버전 이상으로 업데이트하십시오.
🔧 검증 코드
출력된 버전이 0.17.8 미만이면 취약한 상태이며, 0.17.8 이상이면 안전합니다.
pip show ludwig | grep Version