🇰🇷 한글 설명
Snipe-IT의 Full Multiple Company Support(FMCS) 기능 활성화 시, 특정 엔드포인트의 권한 검증 로직에 결함이 있습니다. 이로 인해 권한이 있는 사용자가 자신이 속하지 않은 다른 회사의 자산 수락 알림을 보내거나 수락 기록을 영구적으로 삭제할 수 있습니다.
💡 쉬운 설명
회사가 여러 개인 관리 시스템에서 권한 설정 오류로 인해, 다른 회사의 자산 정보를 마음대로 조작하거나 삭제할 수 있는 보안 취약점입니다. 공격자는 이를 통해 중요한 자산 관리 기록을 지우거나 정보를 유출할 수 있습니다.
🇺🇸 원문 (English)
Snipe-IT is an open source IT asset management system. In versions up to and including 8.6.3, the report acceptance endpoints POST /reports/unaccepted_assets/sent_reminder (ReportsController::sentAssetAcceptanceReminder) and DELETE /reports/unaccepted_assets/{acceptanceId}/delete (ReportsController::deleteAssetAcceptance) are not correctly scoped when Full Multiple Company Support (FMCS) is enabled. In 8.6.3 the guard ReportsController::currentUserCanAccessAcceptance() early-exits with 'return true' when '! $user->company_id' is truthy, which is the case for every pivot-only user (a user associated with companies through the company_user pivot table whose scalar users.company_id column is NULL); versions prior to 8.6.3 lacked the guard altogether. As a result, an authenticated user holding the reports.view permission can send acceptance-reminder emails for, and permanently delete, any pending acceptance record in the install regardless of which company owns the underlying checkoutable. Deletion is destructive and forfeits the acceptance audit trail for the affected item, and the reminder email exposes limited cross-company acceptance context (item name and assignment metadata) to the recipient. Acceptance IDs are sequential integers and can be enumerated. This issue is fixed in version 8.7.0.
📍 영향받는 시스템
Snipe-IT 8.6.3 이하 버전 (FMCS 활성화 시)
⚔️ 공격 벡터
인증된 사용자가 `reports.view` 권한을 이용해 순차적인 ID 값을 대입(Enumeration)하여 타사 자산의 엔드포인트에 POST/DELETE 요청 전송
🛡️ 대응 방법
Snipe-IT를 버전 8.7.0 이상으로 업데이트하십시오.
🔧 검증 코드
출력된 버전 정보가 8.6.3 이하인 경우 해당 취약점에 노출된 상태입니다.
curl -s http://<target_ip>/api/v1/version | grep -E '8(\.([0-5])|\.[6]\.[0-2])'