CRITICAL🇬🇧 English

CVE-2022-24900

Path traversal w Piano LED Visualizer — dostęp do plików systemowych

CVSS 9.9v3.1pub. 2022-04-29upd. 2024-11-21

Piano LED Visualizer w wersji 1.3 i wcześniejszych zawiera podatność typu path traversal, wynikającą z niebezpiecznego użycia funkcji `os.path.join` z niezaufanymi danymi wejściowymi. Atakujący bez uwierzytelnienia może odczytywać dowolne pliki w systemie operacyjnym serwera.

Pokaż oryginał (EN)

Piano LED Visualizer is software that allows LED lights to light up as a person plays a piano connected to a computer. Version 1.3 and prior are vulnerable to a path traversal attack. The `os.path.join` call is unsafe for use with untrusted input. When the `os.path.join` call encounters an absolute path, it ignores all the parameters it has encountered till that point and starts working with the new absolute path. Since the "malicious" parameter represents an absolute path, the result of `os.path.join` ignores the static directory completely. Hence, untrusted input is passed via the `os.path.join` call to `flask.send_file` can lead to path traversal attacks. A patch with a fix is available on the `master` branch of the GitHub repository. This can also be fixed by preventing flow of untrusted data to the vulnerable `send_file` function. In case the application logic necessiates this behaviour, one can either use the `flask.safe_join` to join untrusted paths or replace `flask.send_file` calls with `flask.send_from_directory` calls.

🤖 Analiza AI
Jak działa

Podatność wynika ze specyficznego zachowania funkcji `os.path.join` w Pythonie: gdy napotka ona ścieżkę bezwzględną (absolutną) jako jeden z argumentów, ignoruje wszystkie wcześniejsze elementy ścieżki i traktuje tę wartość jako nowy punkt startowy. Oznacza to, że przekazanie przez atakującego złośliwego parametru w postaci ścieżki bezwzględnej powoduje całkowite pominięcie zdefiniowanego katalogu statycznego. Wynikowa ścieżka jest następnie przekazywana do funkcji `flask.send_file`, która odsyła zawartość wskazanego pliku atakującemu.

Skutki

Atakujący może odczytać dowolne pliki dostępne dla procesu aplikacji na serwerze, w tym potencjalnie pliki konfiguracyjne, klucze prywatne lub inne wrażliwe dane. Podatność umożliwia również ograniczone naruszenie integralności i dostępności systemu, co odzwierciedla wysoki wynik CVSS 9.9.

Mitygacja

Należy zastosować patch dostępny na gałęzi `master` repozytorium GitHub (commit 3f10602323cd8184e1c69a76b815655597bf0ee5). Alternatywnie można: zastąpić wywołanie `os.path.join` funkcją `flask.safe_join` do łączenia niezaufanych ścieżek, lub zastąpić wywołania `flask.send_file` wywołaniami `flask.send_from_directory`. W każdym przypadku należy zapobiec przepływowi niezaufanych danych do funkcji `send_file`.

Kogo dotyczy

Piano LED Visualizer w wersji 1.3 oraz wcześniejszych (projekt: Piano Led Visualizer Project).

Uwagi

Podatność zgłoszona i udokumentowana w ramach GitHub Security Advisory GHSA-g78x-q3x8-r6m4. Poprawka została opublikowana jako pull request #351 w repozytorium projektu.

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:L/A:L
  • Piano Led Visualizer Project Piano Led Visualizer

    APP
    Piano Led Visualizer Project
    ≤ 1.3
🔵
ZWERYFIKUJ U PRODUCENTA
Brak jednoznacznych danych o patchu. Sprawdź referencje od producenta.
Tagi
Path Traversal
CWE
Referencje