🇰🇷 한글 설명
visionmedia send 0.8.4 이전 버전에서 디렉토리가 문서 루트 내에 있는지 확인할 때 부분 비교를 사용하여 경로 검증이 우회됩니다. 이를 통해 공격자가 "public" 디렉토리 내의 "public-restricted" 같은 디렉토리에 접근하여 제한된 리소스에 도달할 수 있습니다.
💡 쉬운 설명
서버가 파일 접근 권한을 확인할 때 경로명의 일부만 비교해서 발생하는 문제입니다. 공격자가 경로 이름을 조작하면 접근이 차단돼야 할 파일들을 볼 수 있게 됩니다.
🇺🇸 원문 (English)
visionmedia send before 0.8.4 for Node.js uses a partial comparison for verifying whether a directory is within the document root, which allows remote attackers to access restricted directories, as demonstrated using "public-restricted" under a "public" directory.
📍 영향받는 시스템
visionmedia send npm 패키지 버전 0.8.3 이하 (Node.js 애플리케이션)
⚔️ 공격 벡터
HTTP 요청 경로에 "public-restricted" 같은 이름의 디렉토리를 포함시키면 경로 비교 로직을 우회하여 접근
🛡️ 대응 방법
visionmedia send를 0.8.4 이상으로 업그레이드하거나 다른 정적 파일 제공 미들웨어(express.static 등) 사용
🔧 검증 코드
설치된 send 패키지 버전이 0.8.0~0.8.3 범위에 있으면 취약, 0.8.4 이상이거나 미설치면 안전
npm list send 2>/dev/null | grep -E 'send@0\.8\.[0-3]' && echo 'Vulnerable' || echo 'Safe or not installed'