🇰🇷 한글 설명
Vite 프론트엔드 개발 서버에서 대소문자를 구분하지 않는 파일 시스템(Windows 등)을 사용할 경우, 파일 경로의 대소문자를 변형하여 `server.fs.deny` 설정된 파일에 접근할 수 있는 보안 취약점입니다. 이는 `picomatch` 라이브러리의 대소문자 구분 방식과 파일 서버의 처리 방식 차이로 인해 발생합니다.
💡 쉬운 설명
파일 접근을 막아두는 차단 목록이 대소문자 차이를 구별하지 못해 발생하는 문제입니다. 공격자가 파일 이름의 대소문자를 살짝 바꾸어 요청하면 차단 시스템을 피해 민감한 파일에 접근할 수 있습니다.
🇺🇸 원문 (English)
Vite is a frontend tooling framework for javascript. The Vite dev server option `server.fs.deny` can be bypassed on case-insensitive file systems using case-augmented versions of filenames. Notably this affects servers hosted on Windows. This bypass is similar to CVE-2023-34092 -- with surface area reduced to hosts having case-insensitive filesystems. Since `picomatch` defaults to case-sensitive glob matching, but the file server doesn't discriminate; a blacklist bypass is possible. By requesting raw filesystem paths using augmented casing, the matcher derived from `config.server.fs.deny` fails to block access to sensitive files. This issue has been addressed in
[email protected],
[email protected],
[email protected], and
[email protected]. Users are advised to upgrade. Users unable to upgrade should restrict access to dev servers.
📍 영향받는 시스템
Vite 버전 5.0.12 미만, 4.5.2 미만, 3.2.8 미만, 2.9.17 미만 (Windows 환경 영향 높음)
⚔️ 공격 벡터
대소문자를 구분하지 않는 파일 시스템에서 파일 경로의 대소문자를 변형하여 차단 목록(blacklist)을 우회하는 방식
🛡️ 대응 방법
Vite를 최신 보안 패치 버전(5.0.12, 4.5.2, 3.2.8, 2.9.17 이상)으로 업그레이드하거나 개발 서버 접근을 제한하십시오.
🔧 검증 코드
출력된 Vite 버전을 확인하여 보안 패치가 적용된 버전(5.0.12, 4.5.2, 3.2.8, 2.9.17 이상)인지 대조하십시오.
npm list vite | grep -E 'vite@([0-9]+\.[0-9]+\.[0-9]+)'