🇰🇷 한글 설명
Ludwig 프레임워크 0.10.4 이하 버전의 모델 서빙 컴포넌트에서 torch.load() 함수가 보안 제한이 없는 상태로 실행되어 안전하지 않은 역직렬화(CWE-502) 취약점을 가지고 있습니다. 공격자는 악의적으로 조작된 PyTorch 모델 파일을 제공하여 임의의 Python 코드를 실행할 수 있으며, Ludwig 모델 서버를 완전히 장악할 수 있습니다.
💡 쉬운 설명
Ludwig 모델 서버가 신뢰할 수 없는 파일을 안전하지 않게 로드하여 해킹된 모델 파일로부터 악성 코드가 실행될 수 있습니다. 공격자는 특별히 만든 모델 파일 하나로 서버를 완전히 제어할 수 있습니다.
🇺🇸 원문 (English)
The Ludwig framework thru 0.10.4 is vulnerable to insecure deserialization (CWE-502) in its model serving component. When starting a model server with the ludwig serve command, the framework loads model weight files using torch.load() without enabling the security-restrictive weights_only=True parameter. This default behavior allows the deserialization of arbitrary Python objects via the pickle module. An attacker can exploit this by providing a maliciously crafted PyTorch model file, leading to arbitrary code execution on the system hosting the Ludwig model server.
📍 영향받는 시스템
Ludwig 프레임워크 버전 0.10.4 이하
⚔️ 공격 벡터
악의적으로 조작된 PyTorch 모델 파일을 ludwig serve 명령으로 로드할 때 임의의 코드 실행
🛡️ 대응 방법
Ludwig을 0.10.5 이상으로 업그레이드하거나 토치 로드 호출에 weights_only=True 파라미터 추가
🔧 검증 코드
VULNERABLE이 출력되면 즉시 업데이트 필요, PATCHED이면 안전. Ludwig이 설치되지 않았으면 출력 없음.
pip show ludwig 2>/dev/null | grep Version | awk -F': ' '{print $2}' | grep -E '^0\.(0|1|2|3|4|5|6|7|8|9|10\.[0-4])$' && echo VULNERABLE || echo PATCHED