AGL app-framework-main w wersjach do 17.1.12 zawiera podatność typu Zip Slip (path traversal) połączoną z błędem wyścigu TOCTOU w procesie instalacji widgetów. Atakujący może zapisać dowolne pliki w dowolnym miejscu systemu plików, omijając przy tym weryfikację podpisu.
▸ Pokaż oryginał (EN)
AGL app-framework-main thru 17.1.12 contains a Zip Slip path traversal vulnerability (CWE-22) combined with a TOCTOU race condition (CWE-367) in the widget installation flow. The is_valid_filename function in wgtpkg-zip.c validates ZIP entry names but does not check for dot notation directory traversal sequences it only blocks absolute paths. The zread extraction function uses openat(workdirfd, filename, O_CREAT) which resolves dot notation values relative to the work directory, allowing files to be written anywhere on the filesystem. Critically, in function install_widget in file wgtpkg-install.c, extraction via zread occurs BEFORE signature verification via check_all_signatures. Even if signature verification fails, the error cleanup (remove_workdir) only deletes the temporary work directory files written outside via path traversal persist permanently.
Funkcja `is_valid_filename` w pliku `wgtpkg-zip.c` weryfikuje nazwy wpisów w archiwum ZIP, jednak blokuje wyłącznie ścieżki bezwzględne — nie sprawdza sekwencji zawierających notację z kropkami (np. `../`). Funkcja `zread` dokonuje ekstrakcji przy użyciu `openat(workdirfd, filename, O_CREAT)`, co powoduje rozwiązanie ścieżek względnych poza katalogiem roboczym i umożliwia zapis plików w dowolnym miejscu systemu. Krytyczny błąd wyścigu TOCTOU polega na tym, że w funkcji `install_widget` (plik `wgtpkg-install.c`) ekstrakcja plików przez `zread` następuje PRZED weryfikacją podpisu przez `check_all_signatures`. Nawet jeśli weryfikacja podpisu zakończy się błędem, procedura czyszcząca `remove_workdir` usuwa jedynie pliki z katalogu tymczasowego — pliki zapisane poza nim za pośrednictwem path traversal pozostają na systemie plików na stałe.
Atakujący bez uwierzytelnienia może zapisać dowolne pliki w dowolnym miejscu systemu plików urządzenia, co w praktyce umożliwia trwałe przejęcie kontroli nad systemem, privilege escalation lub wprowadzenie złośliwego kodu — nawet jeśli dostarczony widget posiada nieprawidłowy podpis.
Należy zastosować patche dostępne u producenta zgodnie z referencjami. Tymczasowo należy ograniczyć możliwość instalacji widgetów do zaufanych, uwierzytelnionych źródeł oraz monitorować integralność krytycznych zasobów systemu plików. Zaleca się śledzenie repozytorium projektu pod adresem https://gerrit.automotivelinux.org/gerrit/src/app-framework-main w celu uzyskania aktualnych poprawek.
AGL app-framework-main w wersjach do 17.1.12 włącznie.
Podatność została udokumentowana wraz z publicznym proof-of-concept dostępnym pod adresem https://gist.github.com/sgInnora/8526eedcfd826d05ef1fc45d8f405643. Połączenie Zip Slip z TOCTOU sprawia, że weryfikacja podpisu nie stanowi skutecznej ochrony, ponieważ zapis pliku następuje przed jej przeprowadzeniem.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HLinuxfoundation Automotive Grade Linux
OSLinuxfoundation≤ 17.1.12
Powiązane podatności
AGL app-framework-binder (afb-daemon) through v19.90.0 contains a privilege escalation vulnerability in the su...
AGL app-framework-binder (afb-daemon) through v19.90.0 allows any local process to execute privileged supervis...
AGL agl-service-can-low-level thru 17.1.12 contains a stack buffer overflow in the uds-c library. The send_dia...
AGL agl-service-can-low-level thru 17.1.12 contains a heap buffer over-read in the isotp-c library. In isotp_c...
In MPD before 0.23.8, as used on Automotive Grade Linux and other platforms, the PipeWire output plugin mishan...