🇰🇷 한글 설명
Snipe-IT 8.6.3 이하 버전에서 '미수락 자산' 보고서 CSV 내보내기 시 수식 요소를 중립화하지 않는 취약점이 발견되었습니다. 인증된 저권한 사용자가 텍스트 필드에 수식을 삽입하면, 보고서를 확인하는 사용자의 스프레드시트 프로그램에서 해당 수식이 실행되어 데이터 유출이나 명령 실행이 가능할 수 있습니다.
💡 쉬운 설명
자산 관리 프로그램에서 보고서를 엑셀 파일로 만들 때, 악의적인 수식이 포함된 데이터를 걸러내지 못하는 문제입니다. 공격자가 입력한 특수 문자가 포함된 파일을 엑셀로 열면, 공격자가 원하는 명령이 실행되거나 정보가 빠져나갈 수 있습니다.
🇺🇸 원문 (English)
Snipe-IT through 8.6.3 does not neutralize formula elements in the "unaccepted assets" acceptance report CSV export. ReportsController::postAssetAcceptanceReport builds the CSV by hand (stripping commas and joining rows manually) and, unlike the six sibling exports in the same controller, never applies League\Csv\EscapeFormula or honors the config('app.escape_formulas') setting. An authenticated low-privilege user with ordinary create/edit rights on any record whose free-text fields appear in the report (asset name/tag, company name, category, model, or assignee display name) can set such a field to a value beginning with =, +, -, @, tab, or CR. When a user with reports.view privileges requests the export (POST /reports/unaccepted_assets) for a pending checkout acceptance referencing the poisoned record and opens the resulting CSV in Excel, LibreOffice Calc, or Google Sheets, the injected content is evaluated as a formula in the downloader's spreadsheet context, enabling data exfiltration (e.g., HYPERLINK/WEBSERVICE) or, on legacy Windows Excel configurations, DDE command execution. Fixed in 8.7.0.
📍 영향받는 시스템
Snipe-IT 8.6.3 및 그 이전 버전
⚔️ 공격 벡터
저권한 사용자가 자산 이름이나 사용자 이름 등 텍스트 필드에 수식 기호(=, +, -, @ 등)를 삽입한 후, 관리자가 해당 보고서를 CSV로 내보내어 실행하도록 유도
🛡️ 대응 방법
Snipe-IT를 최신 보안 패치가 적용된 8.7.0 버전 이상으로 업데이트하십시오.
🔧 검증 코드
출력된 버전이 8.7.0 미만(예: 8.6.3)이면 취약한 상태이며, 8.7.0 이상이면 안전합니다.
php artisan snipeit:version 2>/dev/null | grep -E '8(\.[0-9]+){0,2}([^0-9]|$)'
📊 CVSS Vector String
CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:L
💻 영향받는 소프트웨어
Storage Protect Snapshot for Windows