Katalog CVE

CVE-2026-84374

WysokieCVSS 7.5
Opublikowano: Zaktualizowano: Przetłumaczono: NVD NIST

Prawdopodobieństwo exploitacji (EPSS)

Niskie ryzyko
0.57%

Percentyl 45 - wyżej niż 45% wszystkich znanych CVE

Streszczenie

Laravel Excel od wersji 3.1.8 do 3.1.70 ma podatność w src/Files/Disk.php, gdzie metoda Disk::copy() rozwiązuje kontrolowany przez wywołującego parametr $destination (przekazywany przez Excel::store(), $export->store() lub storeExcel()) względem katalogu roboczego procesu za pomocą realpath() zamiast skonfigurowanego dysku systemu plików. Jeśli ścieżka wskazuje istniejący zapisywalny plik, Disk::copy() otwiera go trybem rb+ i używa stream_copy_to_stream(), omijając ograniczenia Flysystem, co pozwala atakującemu kontrolującemu ścieżkę eksportu na nadpisanie dowolnych istniejących plików zawartością eksportu. Zachowanie rb+ powoduje nadpisanie bez skracania i pozostawia końcowe bajty, a nadpisanie pliku PHP może prowadzić do zdalnego wykonania kodu.

Ocena ryzyka

Podatność może pozwolić atakującemu na nadpisanie dowolnych plików na serwerze, w tym plików wykonywalnych, co może prowadzić do zdalnego wykonania kodu i pełnego przejęcia systemu.

Rekomendacja

Zaleca się natychmiastową aktualizację Laravel Excel do wersji 3.1.70, która zawiera poprawkę. Należy również unikać przekazywania ścieżek pochodzących od użytkownika do funkcji eksportu.

Powiązane podatności

Oryginalny opis (angielski, źródło NVD)

Laravel Excel provides supercharged Excel exports and imports in Laravel. From 3.1.8 until 3.1.70, in src/Files/Disk.php the Maatwebsite\Excel\Files\Disk::copy() method resolves the caller-controlled $destination supplied through Excel::store(), $export->store(), or storeExcel() against the process working directory with realpath() instead of the configured filesystem disk. If the path names an existing writable file, Disk::copy() opens it with fopen() in rb+ mode and uses stream_copy_to_stream(), bypassing Flysystem path confinement and allowing an attacker whose application input controls the export path to overwrite arbitrary existing files with export content. The rb+ behavior creates a non-truncating overwrite and trailing bytes when the new export is shorter, and overwriting an executable PHP file can lead to remote code execution. This issue is fixed in version 3.1.70.

Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS