RÄ«kÄ , kas tiek izmantota, lai organizÄtu komandu izpildi citu lietotÄju vÄrdÄ, vaina (), ļaujot paaugstinÄt savas privilÄÄ£ijas sistÄmÄ lÄ«dz root lietotÄjam. ProblÄma rodas sÄkot ar sudo 1.7.1 izlaidumu tikai tad, kad tiek izmantota opcija Ā«pwfeedbackĀ» failÄ /etc/sudoers, kas noklusÄjuma ir izslÄgta, bet aktivizÄta dažos izplatÄ«jumos, piemÄram, Linux Mint un Elementary OS. ProblÄma ir novÄrsta izlaidumÄ , kas tika publicÄts pirms dažÄm stundÄm. IzplatÄ«jumos ievainojamÄ«ba vÄl nav novÄrsta.
Opcija Ā«pwfeedbackĀ» aktivizÄ zvaigznÄ«tes Ā«*Ā» rÄdīŔanu pÄc katra ievadÄ«tÄ simbola, kad tiek ievadÄ«ta parole. DÄļ fŃŠ½Šŗcijas getln(), kas definÄta failÄ tgetpass.c, ja caur standarta ieejas plÅ«smu (stdin) tiek nodota pÄrÄk liela paroles virkne noteiktos apstÄkļos, tÄ var nepietikt iepriekÅ” pieŔķirtajai buferim un pÄrrakstÄ«t citus datus stekÄ. PÄrspriegums notiek, izpildot sudo kodu ar root privilÄÄ£ijÄm.
ProblÄmas bÅ«tÄ«ba ir tÄda, ka, lietojot speciÄlos simbolus ^U (rindas tÄ«rīŔana) ievades procesÄ un rakstīŔanas operÄcijas kļūmes gadÄ«jumÄ, kods, kas atbild par izvadÄ«to simbolu Ā«*Ā» tÄ«rīŔanu, atsakÄs no pieejamÄ bufera lieluma datiem, bet neatgriež iepriekÅ”Äjo pozÄ«ciju buferÄ«. VÄl viens faktors, kas veicina exploitu izveidi, ir automÄtiskÄ Ā«pwfeedbackĀ» režīma atslÄgÅ”anas trÅ«kums datu ienÄkÅ”anas gadÄ«jumÄ ne no terminÄla, bet caur ieejas plÅ«smu (Ŕī nepilnÄ«ba rada iespÄjas rakstīŔanas kļūmÄm, piemÄram, sistÄmÄs ar vienvirziena kļūda rodas, mÄÄ£inot ierakstÄ«t aiz lasīŔanas kanÄla beigÄm).
TÄ kÄ uzbrucÄjs var pilnÄ«bÄ kontrolÄt datu pÄrrakstīŔanu stekÄ, nav grÅ«ti izveidot exploitu, kas ļauj paaugstinÄt priviligijas lÄ«dz root lietotÄjam. ProblÄmu var izmantot jebkurÅ” lietotÄjs, neatkarÄ«gi no piekļuves tiesÄ«bÄm uz sudo un lietotÄjam specifiskajÄm iestatÄ«jumiem sudoers. Lai novÄrstu problÄmu, jÄpÄrliecinÄs, vai failÄ /etc/sudoers nav iestatÄ«juma Ā«pwfeedbackĀ» un nepiecieÅ”amÄ«bas gadÄ«jumÄ to jÄatslÄdz (Ā«Defaults !pwfeedbackĀ»). ProblÄmas pÄrbaudei var izpildÄ«t kodu:
$ perl -e 'print(("A" x 100 . "\x{00}") x 50)' | sudo -S id
Parole: SegmentÄcijas kļūda
Avots: opennet.lv
