🇰🇷 한글 설명
BentoML 1.4.38 이전 버전에서 빌드 프로세스가 공격자가 조작한 심볼릭 링크를 따라가며, 참조된 파일의 내용을 Bento 아티팩트로 패키징합니다. 이를 통해 공격자는 클라우드 자격증명, SSH 키, API 토큰, 환경 파일 등 민감한 로컬 파일을 Bento 아티팩트로 유출할 수 있으며, 이 아티팩트가 내보내기, 업로드, 또는 컨테이너화될 때 정보 유출 범위가 확대됩니다.
💡 쉬운 설명
BentoML 빌드 도구가 악의적인 링크를 따라가서 실수로 컴퓨터의 비밀번호, API 키, SSH 키 같은 민감 정보를 패키지에 포함시킵니다. 공격자는 이 정보를 빌드된 패키지에서 훔칠 수 있습니다.
🇺🇸 원문 (English)
BentoML is a Python library for building online serving systems optimized for AI apps and model inference. In versions 1.4.38 and prior, the build packaging workflow follows attacker-controlled symlinks inside the build context and copies the referenced file contents into the generated Bento artifact. If a victim builds an untrusted repository or other attacker-supplied build context, the attacker can place a symlink such as loot.txt -> /tmp/outside-marker.txt or a link to a more sensitive local file. When bentoml build runs, BentoML dereferences the symlink and packages the target file contents into the Bento. The leaked file can then propagate further through export, push, or containerization workflows. An attacker can exfiltrate local files from the build host into the Bento artifact, exposing secrets such as cloud credentials, SSH keys, API tokens, environment files, or other sensitive local configurations. Because Bento artifacts are commonly exported, uploaded, stored, or containerized after build, the leaked file contents can spread beyond the original build machine. This issue has been fixed in version 1.4.39.
📍 영향받는 시스템
BentoML 1.4.38 이전 모든 버전
⚔️ 공격 벡터
공격자가 untrusted 저장소에 심볼릭 링크를 배치하고, 피해자가 bentoml build 실행 시 로컬 파일이 빌드 아티팩트로 유출됨
🛡️ 대응 방법
BentoML을 1.4.39 이상으로 업그레이드하거나, untrusted 소스코드는 격리된 환경에서만 빌드 수행
🔧 검증 코드
PATCHED가 출력되면 취약점이 수정되었으며, VULNERABLE이 출력되거나 버전 정보가 없으면 업그레이드 필요
pip show bentoml | grep -oP 'Version: \K[\d.]+' | awk -F. '{if($1==1 && $2==4 && $3<=38) print "VULNERABLE"} {if($1==1 && $2==4 && $3>=39) print "PATCHED"}'