W firmware OpenPOWER 2.6 (Skiboot) wykryto błąd nieprawidłowej konwersji typów w funkcji unpack_timestamp(), który pozwala ominąć mechanizm weryfikacji znacznika czasu. Podatność otrzymała ocenę krytyczną (CVSS 9.8), co wskazuje na możliwość jej zdalnego wykorzystania bez uwierzytelnienia.
▸ Pokaż oryginał (EN)
An issue was discovered in OpenPOWER 2.6 firmware. unpack_timestamp() calls le32_to_cpu() for endian conversion of a uint16_t "year" value, resulting in a type mismatch that can truncate a higher integer value to a smaller one, and bypass a timestamp check. The fix is to use the right endian conversion function.
Funkcja unpack_timestamp() wywołuje le32_to_cpu() — funkcję przeznaczoną do konwersji 32-bitowych wartości — w celu przetworzenia 16-bitowego pola 'year' (rok) typu uint16_t. Skutkuje to niezgodnością typów (CWE-681: incorrect conversion between numeric types), w wyniku której wyższa wartość całkowita może zostać obcięta do mniejszej. Powstały w ten sposób błędny wynik konwersji prowadzi do ominięcia sprawdzenia poprawności znacznika czasu. Poprawka polega na zastosowaniu właściwej funkcji konwersji endianowości odpowiedniej dla 16-bitowych wartości.
Atakujący może zdalnie ominąć mechanizm weryfikacji znacznika czasu w firmware, co potencjalnie otwiera drogę do naruszenia poufności, integralności oraz dostępności systemu — na co wskazują składowe wektora CVSS (C:H/I:H/A:H).
Należy zastosować patche dostępne u producenta zgodnie z referencjami. Poprawka dostępna jest w repozytorium projektu Skiboot: commit 5be38b672c1410e2f10acd3ad2eecfdc81d5daf7 na GitHub (https://github.com/open-power/skiboot/).
Firmware OpenPOWER w wersji 2.6 (komponent Skiboot projektu open-power).
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HOpenpowerfoundation Skiboot
OSOpenpowerfoundation2.6