Średnia

Snipe-IT vulnerable to stored XSS via inline-served attachment

  • Ujawniono: 28.08.2026
  • Aktualizacja: 11.10.2026 10:22

Impact

A low-privilege user can store an active-content payload as an asset attachment and have it served inline, same-origin, with an active Content-Type, achieving stored XSS. The application sanitizes uploads only when PHP finfo detects image/svg+xml. By submitting an XHTML document whose finfo MIME is text/xml (an allowed extension), the svg-sanitize branch is skipped, the <script> is stored raw, and the inline-serve path returns it as text/xml; charset=utf-8 with Content-Disposition: inline — which the browser renders as a live XHTML document and executes. The dedicated StorageHelper::allowSafeInline() whitelist that should have constrained inline-renderable types is never wired into the serve path.

Details

Vulnerable code — sanitizer keyed on finfo MIME app/Http/Requests/UploadFileRequest.php:46-53

php
$extension = $file->getClientOriginalExtension();
$file_name = $name_prefix.'-'.str_random(8).'-'.str_slug(...).'.'.$file->guessExtension();
...
if ($file->getMimeType() === 'image/svg+xml') {
    $uploaded_file = $this->handleSVG($file);   // svg-sanitize fires
} else {
    $uploaded_file = file_get_contents($file);   // stored RAW — no sanitization
}

Vulnerable code — inline serve, no allowSafeInline() app/Http/Controllers/UploadedFilesController.php:103

php
if (request('inline') == 'true') {
    $headers = ['Content-Disposition' => 'inline'];
    return Storage::download($path.$log->filename, $log->filename, $headers);
}

StorageHelper::allowSafeInline() (app/Helpers/StorageHelper.php:88) exists to whitelist inline-renderable types but is not called here. The validation rule (UploadFileRequest::rules()) is mimes: over config('filesystems.allowed_upload_extensions_for_validator'), which includes svg, xml, and txt — so a text/xml file passes validation and bypasses the SVG sanitizer simultaneously.

POC

  1. From a fresh install, as a user with only assets.view + assets.files targeting any existing asset created by admin
  2. click on the asset created by admin and upload files.
  3. create a XML file with the following payload and upload it.
xml
<?xml version="1.0"?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head><script>alert(document.cookie)</script></head>
<body>hi</body>
</html>
  1. Noticed that it did not receive any error and the file was uploaded.
  2. Now, can just get the URL and view it. (need to add the inline=true). image.png

Notice that the XSS was able to request document.cookie. This means that it is possible for low privilege user to perform XSS and perform privilege escalation to admin.

Czego dotyczy

Kliknij technologię, aby zobaczyć wszystkie dotyczące jej podatności.

PlatformaPaczkaPodatne wersjePoprawka w wersji
Paczka Composer snipe/snipe-it < 8.6.2 8.6.2

Odnośniki

Ocena CVSS 8.7/10
Wektor CVSS
CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:N
Słabość (CWE)
CWE-79
Platforma
Composer
Paczka
snipe/snipe-it
Ujawniono
28.08.2026
Aktualizacja
11.10.2026 10:22

Źródła i licencje

OSV / GitHub Advisory Database - GHSA-jhph-5q74-pmfx - CC BY 4.0

Historia podatności: snipe/snipe-it

Wszystkie opisane podatności tej paczki (Paczka Composer), od najnowszej. Widać, czy to jednorazowa wpadka, czy paczka, której trzeba pilnować.

Wszystkie (81) w archiwum
Wszystkich wpisów
81
Pierwsza → ostatnia
10.2021 09.2026
Bez poprawki
6
Wykorzystywana w atakach
0

Rozkład istotności

  • Krytyczna 1
  • Wysoka 23
  • Średnia 53
  • Niska 4

Ujawnienia w latach

  1. 2021: 10
  2. 2022: 20
  3. 2023: 2
  4. 2024: 3
  5. 2025: 6
  6. 2026: 40
Istotność:
  1. Wysoka CVE-2026-63493 < 8.7.0 8.7.0
  2. Wysoka · 6.5 CVE-2026-55843 < 8.6.0 8.6.0
  3. Wysoka CVE-2026-55474 < 8.5.0 8.5.0
  4. Snipe-IT vulnerable to stored XSS via inline-served attachment ten wpis
    Średnia · 8.7 CVE-2026-55466 < 8.6.2 8.6.2
  5. Wysoka · 7.1 CVE-2026-55460 < 8.6.2 8.6.2
  6. Wysoka CVE-2026-55643 < 8.6.3 8.6.3
  7. Wysoka · 8.5 CVE-2026-54329 < 8.6.2 8.6.2
  8. Krytyczna · 9.8 CVE-2026-37709 < 8.4.1 8.4.1
  9. Wysoka · 8.8 CVE-2026-44832 < 8.4.1 8.4.1
  10. Wysoka · 8.7 CVE-2024-51093 <= 7.0.13 brak poprawki
  11. Wysoka · 7.2 CVE-2024-48987 < 7.0.10 7.0.10
  12. Wysoka · 8.8 CVE-2023-5511 < 6.2.3 6.2.3
  13. Wysoka · 8.8 CVE-2022-23064 >= 3.0-alpha, < 5.3.8 5.3.8
Pokaż więcej (5) Widać 20 z 25

Dowiedz się, które podatności dotyczą Twojej aplikacji

Po podłączeniu integracji DockRay i włączeniu raportowania oprogramowania DockRay porównuje zgłoszone wersje komponentów ze znanymi podatnościami i powiadamia o potwierdzonych dopasowaniach. Zakres zależy od obsługiwanej technologii i dostępnych biuletynów.

Podłącz swoją aplikację
Newsletter DockRay

Bezpieczeństwo aplikacji w Twojej skrzynce

Najważniejsze podatności, konkretne zalecenia i praktyczne wskazówki dla Twoich aplikacji. Wybierz technologie i śledź to, co ma znaczenie dla Twojego projektu.

  • Codzienne zestawienie nowych podatności, także krytycznych.
  • Powiadomienia o ważnych aktualizacjach.
  • Praktyczne porady o bezpieczeństwie i monitoringu aplikacji.

Pozostaw puste, aby otrzymywać informacje o wszystkich technologiach.

Zapis jest bezpłatny. Wypiszesz się jednym kliknięciem w wiadomości.