Odebrany

CVE-2026-92499

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ę:

ext4: sprawdź przesunięcie readdir przed uzyskaniem dostępu do dirent

Uszkodzony katalog może wywołać następujący raport KASAN, gdy
ext4_readdir() wznawia pracę z nieprawidłowej pozycji:

BŁĄD: KASAN: użyj po zwolnieniu w __ext4_check_dir_entry+0x5ef/0x820
Odczytaj rozmiar 2 pod adresem ffff88810a646000 za pomocą zadania repro_linear/509

Zadzwoń do śledzenia:
<ZADANIE>
dump_stack_lvl+0x53/0x70
print_report+0xd0/0x630
kasan_report+0xce/0x100
__ext4_check_dir_entry+0x5ef/0x820
ext4_readdir+0xcde/0x2b70
iterate_dir+0x1a1/0x520
__x64_sys_getdents64+0x12b/0x220
do_syscall_64+0xf9/0x540
wpis_SYSCALL_64_after_hwframe+0x77/0x7f
</ZADANIE>

KASAN zgłasza użycie po bezpłatnym, ponieważ dostęp poza granicami ląduje w
sąsiednia wolna strona. Nadal występuje odniesienie do samego bufora katalogu.

ext4_dir_llseek() unieważnia plik cookie katalogu, dzięki czemu ext4_readdir()
ponownie skanuje wpisy katalogu od początku bloku. Ponowne skanowanie sprawdza
tylko dolna granica rec_len przed przejściem dalej. Uszkodzona puszka rec_len
dlatego umieść przesunięcie tam, gdzie w bloku nie ma wystarczającej ilości miejsca na a
pełny wpis w katalogu. Samo ponowne skanowanie może usunąć odwołanie do tego obciętego
wpis lub pętla główna może przekazać go do __ext4_check_dir_entry(). Ten ostatni
czyta de->rec_len przed sprawdzeniem zakresu. Na przykład:

przesunięcie bloku 0 4092 4096
|---- de1.rec_len = 4092 -----|----|
de2.i-węzeł
| de2.rec_len
^ OOB, zgłaszane jako UAF

de2 zaczyna się od przesunięcia 4092 w tym bloku 4 KiB. Pasuje do niego czterobajtowy i-węzeł
bloku, ale jego rec_len zaczyna się od przesunięcia 4096 i przecina granicę.

Minimalna bezpieczna długość jest zależna od i-węzła. Zaszyfrowane i złożone
wpisy w katalogu wymagają ośmiu dodatkowych bajtów skrótu i prawidłowych metadanych
koniec sumy kontrolnej ma tylko 12 bajtów.

Buforuj stan funkcji sumy kontrolnej metadanych i uzyskaj minimalny katalog
długość wpisu z formatu na dysku. Użyj go, aby powiązać zarówno ponowne skanowanie, jak i
przesunięcie przekazywane do głównej pętli. Zgłoś przesunięcie w obciętym bloku
ogon i pomiń pozostałą część bloku, kontynuując akceptację an
przesunięte dokładnie na granicy bloku.

>_ 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