Yordamchi dasturda , boshqa foydalanuvchilar nomidan buyruqlar bajarilishini tashkil qilish uchun foydalaniladi, zaiflik (), bu sizga imtiyozlaringizni root foydalanuvchisiga o'tkazish imkonini beradi. Muammo sudo 1.7.1 dan beri faqat /etc/sudoers faylida "pwfeedback" opsiyasidan foydalanganda mavjud bo'lib, u sukut bo'yicha o'chirilgan, ammo ba'zi distributivlarda yoqilgan, masalan. Linux Mint va Elementary OS. Muammo nashrda hal qilindi , bir necha soat oldin chop etilgan. Zaiflik tarqatishlarda tuzatilmaganligicha qolmoqda.
"Pwfeedback" opsiyasi parolni kiritishda kiritilgan har bir belgidan keyin "*" belgisini ko'rsatishga imkon beradi. tufayli Tgetpass.c faylida aniqlangan getln() funksiyasini amalga oshirishda standart kiritish oqimi (stdin) orqali uzatilgan katta hajmli parollar qatori maʼlum sharoitlarda ajratilgan buferga sigʻmasligi va stekdagi boshqa maʼlumotlarni qayta yozishi mumkin. To'lib ketish sudo kodini ildiz huquqlari bilan bajarishda sodir bo'ladi.
Muammoning mohiyati shundan iboratki, kiritish jarayonida ^U (chiziqni tozalash) maxsus belgisidan foydalanilganda va yozish operatsiyasi bajarilmasa, chiqish belgilarini tozalash uchun mas'ul bo'lgan "*" kod mavjud bufer hajmi bo'yicha ma'lumotlarni qayta o'rnatadi, lekin ko'rsatgichni buferdagi joriy holatiga dastlabki qiymatiga qaytarmaydi. Ekspluatatsiyaga yordam beradigan yana bir omil - ma'lumotlar terminaldan emas, balki kirish oqimi orqali qabul qilinganda "pwfeedback" rejimini avtomatik ravishda o'chirib qo'ymaslikdir (bu kamchilik, masalan, bir tomonlama tizimlarda yozish xatosi yuzaga kelishi uchun sharoit yaratishga imkon beradi. Xato o'qish kanalining oxiridan o'tib yozishga harakat qilganda sodir bo'ladi).
Buzg'unchi stekdagi ma'lumotlarni qayta yozish ustidan to'liq nazoratga ega bo'lganligi sababli, ularning imtiyozlarini root qilish uchun kengaytirish uchun ekspluatatsiya yaratish oson. Bu muammodan sudo ruxsatlari yoki sudoer-dagi foydalanuvchiga xos sozlamalardan qat'i nazar, har qanday foydalanuvchi foydalanishi mumkin. Ushbu muammoning oldini olish uchun /etc/sudoers da "pwfeedback" sozlamasi mavjud emasligiga ishonch hosil qiling va agar kerak bo'lsa, uni o'chirib qo'ying ("Defaults !pwfeedback"). Muammoni tekshirish uchun quyidagi kodni ishga tushiring:
$ perl -e 'print(("A" x 100 . "\x{00}") x 50)' | sudo -S id
Parol: Segmentatsiya xatosi
Manba: opennet.ru
