Dasturlash

C tilidagi xavfsizlik zaifligi: *sshole vulqonati

7-noyabr, 2026, 15:387 ko'rish3 daqiqa o'qish
C tilidagi xavfsizlik zaifligi: *sshole vulqonati

C tilidagi kodda yana bir zaiflik aniqlangan. Bu muammo musl libc va sshd o'rtasidagi muammolar tufayli yuzaga kelgan. Musl tizimlarida PAM bo'lmagan tizimlarda, noavtorizatsiyalangan foydalanuvchi root shelliga ega bo'lishi mumkin.

Muammo tafsilotlari

Bu muammo ikki turli shartning bir xil belgilangan qiymatdan foydalanishiga bog'liq. Unix tizimlarida, "*" belgilangan qiymatdan foydalanib, hisobni blokirovka qilish odatiy holdir. 2012-yildan buyon, musl libcning crypt funksiyasi parolni hashlash uchun juda uzun bo'lsa, "*" qiymatini qaytaradi.

The meme of a happy person and a sad person on a bus, the sad person captioned with '4' and the happy person with a string of 257 As.

Bu ikki shart birlashib, sshd noavtorizatsiyalangan kirish urinishlarini hashlash orqali vaqt o'tkazishni oldini oladi. Natijada, musl tizimlarida PAM bo'lmagan tizimlarda, noavtorizatsiyalangan foydalanuvchi root shelliga ega bo'lishi mumkin.

C tilidagi muammolar

Bu muammo xotira xavfsizligi bilan bog'liq emas. Bu, odatda, yaxshiroq turlari tizimiga ega tillar bu muammolarni hal qila olmaydi, degan fikrni tasdiqlaydi. Rust tilida ham parolni hashlash uchun juda uzun bo'lsa, "*" qiymatini qaytaradigan funktsiya yozish mumkin. Rust tilidagi muammolar, C tilidagi muammolardan farqli ravishda, jamoaning normalariga amal qilishni talab qiladi.

POSIX spetsifikatsiyasi xatolik holatlarini hisobga oladi. U shunday deydi: "Muvaffaqiyatli yakunlanganda, crypt() hashlangan parolga ishonchli bo'lgan belgilangan qiymatni qaytaradi; [...] Aks holda, u NULL belgilangan qiymatini qaytaradi va xatolikni ko'rsatish uchun errno ni sozlaydi." Ammo, C turlari tizimi dasturchilarni qaytarilgan qiymat NULL ekanligini tekshirishga majbur qila olmaydi.

Rust tilidagi farqlar

Rust tilida, parolni hashlash uchun juda uzun bo'lsa, xatolik variantida qaytariladi va chaqiruvchi bu xatolikni hal qilishga majbur bo'ladi. Agar bugungi kunda xatolik variantida bo'lmasa, buzuvchi o'zgarish xatolik variantini qo'shadi va RustSec xabarnomasini nashr etadi.

Linux distro muharrirlari Rustga bog'liq bo'lgan loyihalarni kiritishni tanqid qilishadi. Ular yangi dunyoda muhandislik normalarini qabul qilish o'rniga, dunyo ularning normalariga moslashishini talab qilishadi. Bu, muhandislik normalarini qabul qilish o'rniga, foydalanuvchilarning manfaatlarini himoya qilishga qaratilgan muammo.

Agentlar xavfsizligi

Hozirgi kunda, Rust tilining foydasi insonlar to'g'ri dasturlarni yozish uchun foydalidir. LLMlar (Large Language Models) xotira xavfsizligi va boshqa xatolik holatlarini aniqlash uchun ishlatilishi mumkin. Ammo, bu muammolarni hal qilish uchun C tilidan foydalanish, Rust tilidan foydalanishdan farqli ravishda, jamoaning normalariga amal qilishni talab qiladi.

Rust tilidagi dasturlarni yozish, Rust kutubxonalaridan foydalanishni talab qiladi va agentlar mavjud Rust kodlariga moslashadi. Bu, hatto siz Rust dasturchisi bo'lmasangiz ham, turlari tizimida ko'proq invariantlar kodlanadi.

C tilidagi muammolar, "*" belgilangan qiymatini xatolikni belgilash uchun qabul qilishi mumkin. Rust tilidagi muammolar, bu belgilangan qiymatni qabul qilmaslikka majbur qiladi. Bu normalar, jamoaning birlashgan hissalari natijasidir va dasturchining javobiyati bu jamoalarning bir qismi ekanligini tushunishdir.

Ba'zi odamlar, bu yangi dunyoda bu muammolarni e'tiborsiz qoldirishadi va boshqa odamlarning hissalari unchalik muhim emas deb hisoblashadi. Bu, ularning hubrislari ularga zarar etkazadi.

Hacker Newsda muhokama qilish uchun shu yerga o'ting.

Asl manba: sunshowers.io

Manba: Hacker News
#C tilidagi xavfsizlik #Rust tili #xavfsizlik zaifligi #dasturlash #muhandislik normalari
Telegram da muhokama qilish