🇰🇷 한글 설명
Manyfold는 3D 모델 컬렉션을 관리하기 위한 오픈소스 자체 호스팅 웹 애플리케이션이다. 0.96.0부터 0.140.0 이전 버전까지, 인증된 사용자가 업로드된 파일의 이름을 경로 탐색(path traversal) 문자열로 변경할 수 있으며, 이로 인해 파일이 설정된 라이브러리 디렉터리 외부로 이동되거나 기록될 수 있다. 이는 app/models/model_file.rb에서 사용자 입력 파일명을 충분한 검증 없이 File.join(model.path, filename)에 사용하기 때문이다. 0.140.0 버전에서 수정되었다.
💡 쉬운 설명
로그인한 사용자가 파일 이름에 특수한 경로 문자를 넣어 원래 저장 폴더 밖에 파일을 옮기거나 쓸 수 있는 취약점입니다. 최신 버전으로 업데이트하면 해결됩니다.
🇺🇸 원문 (English)
Manyfold is an open source, self-hosted web application for managing a collection of 3d models, particularly focused on 3d printing. From 0.96.0 until 0.140.0, authenticated users can rename uploaded files with path traversal sequences because app/models/model_file.rb uses the user-controlled filename in File.join(model.path, filename) without sufficient sanitization, allowing files to be moved or written outside the configured library directory. This issue is fixed in version 0.140.0.
📍 영향받는 시스템
Manyfold 0.96.0 이상 0.140.0 미만 버전
⚔️ 공격 벡터
인증된 사용자가 모델 파일의 이름을 '../' 등 경로 탐색 시퀀스가 포함된 값으로 변경하여 라이브러리 디렉터리 외부에 파일을 생성하거나 이동
🛡️ 대응 방법
Manyfold를 0.140.0 이상 버전으로 업데이트
🔧 검증 코드
출력이 나오면 취약한 코드가 존재하므로 Manyfold를 0.140.0 이상으로 업데이트해야 하며, 출력이 없으면 해당 코드가 없거나 이미 수정된 버전이다.
grep -rn 'File.join(model.path, filename)' $(find / -path '*manyfold*' -name 'model_file.rb' 2>/dev/null) 2>/dev/null | head -5