Odebrany

CVE-2026-93287

opublikowano:
modyfikacja:
Ocena CVSS
n/a
Brak oceny

>_ Opis

Tłumaczenie automatyczne – może zawierać nieścisłości.

W jądrze Linuksa usunięto następującą lukę:

i2c: smbus: odrzuca ponadwymiarowe transfery bloków na wspólnej ścieżce

Sprawdzana jest długość transferu bloku SMBus data->block[0].
i2c_smbus_xfer_emulated(), ale ta kontrola działa zbyt późno dla punktów śledzenia
i jest całkowicie pomijany, gdy adapter udostępnia natywny plik smbus_xfer
wdrożenie. Umożliwia to kontrolowanie przez użytkownika ponadgabarytowych długości bloków
Osiągnij wywołania memcpy Tracepoint i wywołania zwrotne sterowników niezaznaczone.

Dodaj wczesną walidację w __i2c_smbus_xfer(), która odrzuca blok
transfery, których długość podana przez rozmówcę wynosi zero lub przekracza
I2C_SMBUS_BLOCK_MAX przed uruchomieniem dowolnego punktu śledzenia lub wywołaniem zwrotnym sterownika
biegnie. dane->blok[0] jest wypełniany przez urządzenie na odczytach bloków SMBus,
więc kontrola obejmuje operacje, w których faktycznie występuje długość
dostarczone przez rozmówcę. Jest to zgodne z istniejącym -EINVAL
konwencję w emulowanej ścieżce i chroni wszystkich dalszych konsumentów
od razu: punkt śledzenia smbus_write, cały natywny sterownik smbus_xfer
implementacje i emulowana ścieżka.

Ta zmiana naprawia dwa różne błędy:

Błąd 1: smbus_write Tracepoint OOB (include/trace/events/smbus.h)
funkcja trace_smbus_write() uruchamia się przed jakąkolwiek walidacją i kopiowaniem
dane->blok[0]+1 bajt do 34-bajtowego bufora zdarzeń. Z
block[0]=0xfe punkt śledzenia kopiuje 255 bajtów, przekraczając 221.

BŁĄD: KASAN: przekroczenie limitu stosu w trace_event_raw_event_smbus_write+0x27c/0x530
Odczytaj rozmiar 255 pod adresem ffff88800d98fcf8 za pomocą zadania poc_smbus/91
Zadzwoń do śledzenia:
<ZADANIE>
__asan_memcpy+0x23/0x80
trace_event_raw_event_smbus_write+0x27c/0x530
__i2c_smbus_xfer+0x43a/0xa40
i2c_smbus_xfer+0x19e/0x340
i2cdev_ioctl_smbus+0x38f/0x7f0
i2cdev_ioctl+0x35e/0x680
__x64_sys_ioctl+0x147/0x1e0
do_syscall_64+0xcf/0x15a0
wpis_SYSCALL_64_after_hwframe+0x76/0x7e
</ZADANIE>

Błąd 2: i2c-stub I2C_SMBUS_I2C_BLOCK_DATA OOB (drivers/i2c/i2c-stub.c)
stub_xfer() implementuje .smbus_xfer bezpośrednio i tylko zaciska
block[0] przeciwko poleceniu 256, a nie I2C_SMBUS_BLOCK_MAX. Z
blok[0]=0xff i polecenie=0 pętla uzyskuje dostęp do bloku[1+i].
i do 254, daleko poza unią 34-bajtową.

UBSAN: indeks tablicy poza zakresem w sterownikach/i2c/i2c-stub.c:223:44
indeks 34 jest poza zakresem dla typu „__u8 [34]”
Zadzwoń do śledzenia:
<ZADANIE>
__ubsan_handle_out_of_bounds+0xd7/0x120
stub_xfer+0x1971/0x198f [i2c_stub]
__i2c_smbus_xfer+0x306/0xa40
i2c_smbus_xfer+0x19e/0x340
i2cdev_ioctl_smbus+0x38f/0x7f0
i2cdev_ioctl+0x35e/0x680
__x64_sys_ioctl+0x147/0x1e0
do_syscall_64+0xcf/0x15a0
wpis_SYSCALL_64_after_hwframe+0x76/0x7e
</ZADANIE>

Obydwa ślady odtworzone na v7.0-rc6+i2c/for-current z KASAN+UBSAN.

>_ Referencje

Dane podatności pochodzą z oficjalnych źródeł (CVE® List / NVD). Opisy po polsku są tłumaczone automatycznie i mogą zawierać nieścisłości – na stronie rekordu można wyświetlić wersję angielską.

This product uses the NVD API but is not endorsed or certified by the NVD.

Copyright © 1999–2026, The MITRE Corporation. CVE is a registered trademark and the CVE logo is a registered trademark of The MITRE Corporation.

CVE Usage: MITRE hereby grants you a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, sublicense, and distribute Common Vulnerabilities and Exposures (CVE®). Any copy you make for such purposes is authorized provided that you reproduce MITRE's copyright designation and this license in any such copy. ALL DOCUMENTS AND THE INFORMATION CONTAINED THEREIN PROVIDED BY MITRE ARE PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND.

NVD Terms of Use / CVE® Terms of Use / nvd.nist.gov / cve.org