Në programin e2fsck të dhënë me paketën , (), i cili lejon ekzekutimin e kodit keqdashës kur kontrollohet një sistem skedarësh që përmban drejtori të krijuara posaçërisht. Dobësia u konfirmua në versionet 1.43.3 deri në 1.45.4. Dobësia u rregullua në përditësim. Problemi mbetet i pazgjidhur në shpërndarje (, , , , ).
Dobësia shkaktohet nga një gabim në funksionin mutate_name() nga skedari rehash.c, i cili përdoret për të rindërtuar tabelat hash të lidhura me direktorinë, të cilat i lidhin të gjithë skedarët brenda një direktorie me të. Dëmtimi i strukturës hash_entry të lidhur me direktorinë mund të rezultojë në shkrimin e të dhënave të sulmuesit në një zonë jashtë buffer-it të alokuar. Nëse zbulohen skedarë të shumtë me të njëjtin emër në tabelën hash, programi e2fsck riemërton skedarët e kopjuar duke shtuar ~0, ~1 e kështu me radhë në emër. Një buffer prej 256 bajtësh ndahet në pirg për të ruajtur përkohësisht emrin e ri gjatë një riemërtimi të tillë.
Madhësia e të dhënave të kopjuara përcaktohet nga shprehja "entry->name_len & 0xff", por vlera e entry->name_len ngarkohet nga një strukturë disku në vend që të llogaritet bazuar në madhësinë aktuale të emrit. Nëse madhësia është zero, indeksi i vargut vendoset në -1, duke krijuar kushte për një rrjedhje të plotë dhe mbishkrim të të dhënave të tjera në pirg me vlerën "~0". Për sistemet 64-bit, shfrytëzimi i kësaj dobësie konsiderohet i pamundur dhe nuk kërkon kufizime në madhësinë e pirgut (ulimit -s unlimited). Për sistemet 32-bit, shfrytëzimi konsiderohet i mundur, por rezultati varet shumë nga mënyra se si është kompiluar skedari ekzekutues nga kompiluesi.
Për të kryer një sulm, një sulmues duhet të korruptojë në një farë mënyre të dhënat në një ndarje me një sistem skedarësh ext2, ext3 ose ext4. Meqenëse ky operacion kërkon privilegje superpërdoruesi, dobësia përbën një kërcënim kur skanohen disqe të jashtme ose imazhe të sistemit të skedarëve të marra nga jashtë me programin e2fsck.
Burimi: opennet.ru
