Në utilitarin , i përdorur për të organizuar ekzekutimin e komandave në emër të përdoruesve të tjerë, një vulnerabilitet (), i cili lejon rritjen e privilegjeve në sistem në nivelin e përdoruesit root. Problemi shfaqet duke filluar nga lëshimi i sudo 1.7.1 vetëm kur përdoret në skedarin /etc/sudoers opsioni "pwfeedback", i cili është i çaktivizuar si parazgjedhje, por aktivizohet në disa distribucione, të tilla si Linux Mint dhe Elementary OS. Problemi është zgjidhur në lëshimin , i publikuar disa orë më parë. Në distribucionet, vulnerabiliteti ende mbetet i pa korrigjuar.
Opsioni "pwfeedback" aktivizon shfaqjen e simbolit "*" pas çdo simboli të futur gjatë futjes së fjalëkalimit. Për shkak të në zbatimin e funksionit getln(), të përcaktuar në skedarin tgetpass.c, një varg i kaluar përmes kanali standard të hyrjes (stdin) që është shumë i madh në kushte të caktuara mund të mos përputhet në tamponin e ndarë dhe të mbulojë të dhëna të tjera në stack. Mbushja e tamponit ndodh gjatë ekzekutimit të kodit sudo me privilegje root.
Thelbi i problemit është se gjatë përdorimit në procesin e futjes së simbolit të veçantë ^U (pastrimi i rreshtit) dhe në rastin e dështimit të operacionit të shkrimit, kodi që përgjigjet për pastrimin e simboleve të dhëna "*" rikthen të dhënat për madhësinë e tamponit, por nuk kthyer në vlerën e origjinës treguesin në pozitat aktuale në tampon. Një faktor tjetër që kontribuon në shfrytëzim është mungesa e çaktivizimit automatik të modit "pwfeedback" gjatë marrjes së të dhënave jo nga terminali, por përmes kanali të hyrjes (ky problem lejon krijimin e kushteve për të shkaktuar gabimin e shkrimit, për shembull, në sistemet me kanale të njëanshme gabimi ndodh gjatë përpjekjes për të shkruar përtej fundit të kanalit për leximin).
Duke sul sulmuesi mund të kontrollojë plotësisht rinovimin e të dhënave në stack, nuk paraqet vështirësi krijimi i një eksploiti që mund të rrisë privilegjet e veta deri te përdoruesi root. Problemi mund të shfrytëzohet nga çdo përdorues, pa marrë parasysh të drejtat për përdorimin e sudo dhe praninë e konfigurimeve specifike për përdoruesin në sudoers. Për të bllokuar problemin, duhet të siguroheni që nuk ka asnjë konfigurim në /etc/sudoers të quajtur "pwfeedback" dhe, nëse është e nevojshme, ta çaktivizoni atë ("Defaults !pwfeedback"). Për të verifikuar praninë e problemit, mund të ekzekutoni kodin:
$ perl -e ‘print(("A" x 100 . "\x{00}") x 50)’ | sudo -S id
Fjalëkalimi: Segmentation fault
Burimi: opennet.ru
