Linux 7.3 ispravlja opasnu grešku u FAT upravljačkom programu

Linux 7.3 ispravlja opasnu grešku u FAT upravljačkom programu
0
0

Linux 7.3 donosi rijetku ispravku u FAT upravljačkom programu koja otkriva ozbiljan propust u provjeri duljine naziva datoteka, a koji je mogao dovesti do neočekivanog ponašanja sustava.

Inženjer iz Huaweija, Zizhi Wo, otkrio je i ispravio grešku u FAT upravljačkom programu za FAT12/FAT16/FAT32 formate. Problem je u tome što funkcija msdos_format_name() nije provjeravala gornju granicu duljine naziva datoteke, što je dovodilo do tihog skraćivanja naziva dužih od 255 bajtova (NAME_MAX) na 11 bajtova u 8.3 formatu, a sustav bi to prijavio kao uspješnu operaciju.

Kako je greška funkcionirala

Kada bi korisnik predao naziv datoteke duži od 255 bajtova, primjerice 300 znakova ‘A’, sustav bi ga skratio na 8 znakova i tri razmaka, te bi prijavio uspjeh. Problem postaje ozbiljniji jer VFS (Virtual File System) provjerava samo PATH_MAX, a ne duljinu pojedinačne komponente putanje. To znači da dentry zadržava originalni dugi naziv, ali dobiva priključeni inode, što kasnije izaziva upozorenje u fsnotify_open() funkciji, a događaj se korisniku prijavljuje s praznim nazivom.

Zanimljivo je da vfat nije pogođen ovom greškom jer koristi funkciju xlate_to_uni() koja odbija nazive duže od FAT_LFN_LEN. Ispravak je dodan na samom ulazu u msdos_format_name(), jedinu ulaznu točku za sve msdos nazive, čime se usklađuje s provjerama koje već rade xfs, 9p, ceph i simple_lookup() sustavi.

Šire implikacije za stabilnost

Ovaj slučaj postavlja pitanje koliko još sličnih propusta vreba u jezgri Linuxa. Iako je riječ o rubnom slučaju koji prosječan korisnik vjerojatno nikada neće iskusiti, činjenica da je greška postojala godinama bez da je itko primijetio govori o tome koliko je teško osigurati potpunu ispravnost tako složenog sustava kao što je Linux kernel. Ispravak je već uklopljen u Linux 7.3, a očekuje se i njegov prijenos na stabilne verzije jezgre u skoroj budućnosti.

Ovo je još jedan dokaz da čak i naizgled stabilni i zreli sustavi poput Linuxa kriju neočekivane duboke greške koje čekaju pravog inženjera s dovoljno upornosti da ih pronađe. Pitanje je koliko još ovakvih tihih propusta spava u kodu koji koristimo svakodnevno.

FATispravakkernellinuxsigurnost

Stavovi izneseni u tekstu i u komentarima ne odražavaju nužno stav redakcije.

PRAVILA KOMENTIRANJA: Vaši komentari ne smiju biti kritika drugog komentatora, nego vaše mišljenje, prijedlog ili ideja o temi. Nema rasprave tko je u pravu. Čitatelji neka zaključe što je istina. Cilj nije polemika, nego napredak svih Logičara. Inspiracija, umjesto uvjeravanja. Ako nemate ideju, ne komentirajte. Ne budete li respektirali pravila, biti će te blokirani.
Pretplatiti se
Obavijesti o
0 Komentari
Najstariji
Najnoviji Najviše komentiran
© 2024 – Portal Logično

POVEZANE VIJESTI