W bootloaderze Das U-Boot do wersji 2019.07 wykryto podatność typu out-of-bounds write (CWE-787) w funkcji nfs_readlink_reply obsługującej protokół NFS. Umożliwia ona zdalnemu, nieuwierzytelnionemu atakującemu wykonanie dowolnego kodu na urządzeniu.
▸ Pokaż oryginał (EN)
An issue was discovered in Das U-Boot through 2019.07. There is an unbounded memcpy with an unvalidated length at nfs_readlink_reply, in the "if" block after calculating the new path length.
W bloku 'if' funkcji nfs_readlink_reply, po obliczeniu nowej długości ścieżki, wykonywana jest operacja memcpy bez walidacji długości kopiowanych danych. Atakujący może spreparować złośliwą odpowiedź NFS readlink zawierającą nadmiernie długą ścieżkę, co powoduje przepisanie pamięci poza przeznaczonym buforem. Brak sprawdzenia granic pozwala na kontrolowane nadpisanie obszarów pamięci, co w konsekwencji może prowadzić do wykonania arbitralnego kodu (RCE).
Zdalny, nieuwierzytelniony atakujący może uzyskać pełną kontrolę nad urządzeniem poprzez wykonanie dowolnego kodu podczas procesu bootowania. Zagrożone są poufność, integralność oraz dostępność systemu w najwyższym stopniu.
Należy zastosować patche dostępne u producenta zgodnie z referencjami. Zaleca się aktualizację U-Boot do wersji wydanej po 2019.07. Jako obejście — jeśli bootowanie przez NFS nie jest wymagane — należy wyłączyć obsługę NFS w konfiguracji U-Boot (CONFIG_CMD_NFS).
Das U-Boot (Denx) we wszystkich wersjach do 2019.07 włącznie, na urządzeniach korzystających z bootowania przez NFS.
Szczegółowa analiza techniczna podatności została opublikowana przez badaczy Semmle pod adresem blog.semmle.com/uboot-rce-nfs-vulnerability/. Podatność dotyczy środowisk embedded i IoT, gdzie U-Boot jest powszechnie stosowanym bootloaderem.
CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HDenx U Boot
APPDenx≤ 2019.07
Powiązane podatności
Stack-based buffer overflow w Das U-Boot — komenda 'i2c md'
Buffer overflow w obsłudze NFS w Das U-Boot (CVE-2022-30767)
Double free w U-Boot umożliwia zdalne wykonanie kodu (RCE)
U-Boot: nieograniczone memcpy w nfs_lookup_reply prowadzące do RCE
U-Boot: nieograniczone memcpy przez integer underflow przy przetwarzaniu pakietów UDP