Në utilitarin e e2fsck, i ofruar si pjesë e paketës , (), që lejon ekzekutimin e kodit nga një sulmues gjatë verifikimit të sistemit të skedarëve që përmban katalogë të përgatitur në mënyrë të veçantë. Prania e dobësisë është konfirmuar në versionet nga 1.43.3 në 1.45.4. Dobësia është eliminuar në azhurnimin . Në distribucionet, problemi ende mbetet i pazgjidhur (, , , , ).
Dobësia është shkaktuar nga një gabim në funksionin mutate_name() nga skedari rehash.c, i përdorur gjatë rindërtimit të tabelave të hash-it të lidhura me katalogun, që sigurojnë përputhjen me katalogun e të gjitha skedarëve të tij. Dëmtimi i strukturës hash_entry të lidhur me katalogun mund të çojë në shkrimin e të dhënave të sulmuesit në një zonë jashtë buferit të caktuar. Në rast se në tabelën e hash-it ka lidhje me katalogun me disa skedarë me të njëjtin emër, utilitari e2fsck rinon emrat e skedarëve që përsëriten me shtimin e ~0, ~1 etj. Për ruajtjen temporale të emrit të ri gjatë një rinovimi të tillë, në stack alokohet një bufer me madhësi 256 byte.
Madhësia e të dhënave të kopjuara përcaktohet nga shprehja «entry->name_len & 0xff», por vlera entry->name_len ngarkohet nga struktura në disk, dhe jo llogaritet mbi bazën e madhësisë reale të emrit. Nëse madhësia është zero, indeksi i masës merr vlerën -1 dhe krijohen kushte për mbivendosjen e të dhënave në stack me vlerën «~0» (integer underflow). Për sistemet 64-bit, shfrytëzimi i dobësisë vlerësohet si jo shumë i mundshëm dhe kërkon që të mos ketë kufizime mbi madhësinë e stack-ut (ulimit -s unlimited). Për sistemet 32-bit, shfrytëzimi konsiderohet i mundshëm, por rezultati varet shumë nga mënyra si është ndërtuar skedari ekzekutiv nga kompajleri.
Për të kryer një sulm, një sulmues duhet të dëmtojë të dhënat në një pjesë me FS ext2, ext3 ose ext4. Duke qenë se kjo operacion kërkon privilegje superuser, dobësia paraqet një kërcënim gjatë verifikimit të jashtëm nga utilitari e2fsck të ruajtjeve të jashtme ose imazheve të marra nga jashtë të FS-së.
Burimi: opennet.ru
