Chromium’dagi xavfsizlik muammolarining 70 foizi xotira xatolaridan kelib chiqadi

Chromium loyihasini ishlab chiquvchilar tahlil qilindi 912-yildan beri Chrome’ning barqaror relizlarida 2015 ta yuqori xavfli va muhim zaifliklar aniqlandi va ularning 70 foizi xotiraning ishonchsizligi (C/C++ kodidagi ko‘rsatkichlar bilan ishlashdagi xatolar) sabab bo‘lgan degan xulosaga keldi. Ushbu muammolarning yarmi (36.1%) buferga u bilan bog'liq xotirani bo'shatgandan so'ng kirish (foydalanishdan keyin) sabab bo'ladi.

Chromium’dagi xavfsizlik muammolarining 70 foizi xotira xatolaridan kelib chiqadi

Chromium-ni loyihalashda u dastlab edi qo'ydi, kodda xatolar paydo bo'lishi mumkinligi, shuning uchun zaifliklarning oqibatlarini cheklash uchun sandbox izolyatsiyasidan foydalanishga katta e'tibor berildi. Hozirgi vaqtda ushbu texnologiyadan foydalanish imkoniyatlari o'z imkoniyatlarining chegarasiga yetdi va resurslarni iste'mol qilish nuqtai nazaridan jarayonlarga bo'linish amaliy emas.

Kodlar bazasi xavfsizligini ta'minlash uchun Google shuningdek, "ikkilik qoidasi", unga ko'ra har qanday qo'shilgan kod uchta shartdan ikkitadan ko'p bo'lmagan holda javob berishi kerak: tasdiqlanmagan kirish ma'lumotlari bilan ishlash, xavfsiz bo'lmagan dasturlash tilidan (C/C++) foydalanish va yuqori imtiyozlar bilan ishlash. Ushbu qoida tashqi ma'lumotlarni qayta ishlash uchun kod minimal imtiyozlarga (izolyatsiya qilingan) qisqartirilishi yoki xavfsiz dasturlash tilida yozilishi kerakligini anglatadi.

Kod bazasi xavfsizligini yanada oshirish uchun kodlar bazasida xotira xatolarining paydo bo'lishining oldini olish loyihasi ishga tushirildi. Uchta asosiy yondashuv mavjud: xotiraning xavfsiz ishlashi uchun funktsiyalarga ega C++ kutubxonalarini yaratish va apparat himoya mexanizmlaridan foydalangan holda axlat yig'uvchining ko'lamini kengaytirish. MTE (Memory Tagging Extension) va xotira bilan xavfsiz ishlashni ta'minlaydigan tillarda yozish komponentlari (Java, Kotlin, JavaScript, Rust, Swift).

Ish ikki yo'nalishda yo'naltirilishi kutilmoqda:

  • C++ ni ishlab chiqish jarayonidagi sezilarli o'zgarish, bu ishlashga salbiy ta'sirni istisno qilmaydi (qo'shimcha chegaralarni tekshirish va axlat yig'ish). Xom ko'rsatkichlar o'rniga turni ishlatish taklif etiladi MiraclePtr, bu sizga ishlash, xotira iste'moli va barqarorlikka sezilarli salbiy ta'sir ko'rsatmasdan, xavfsizlikka tahdid solmaydigan nosozliklar uchun foydalanish mumkin bo'lgan xatolarni kamaytirish imkonini beradi.
  • Kompilyatsiya vaqtida xotira xavfsizligini tekshirish uchun mo'ljallangan tillardan foydalanish (kodni bajarish paytida bunday tekshiruvlarga xos bo'lgan ishlashga salbiy ta'sirni yo'q qiladi, lekin kodning yangi tildagi kod bilan o'zaro ta'sirini tashkil qilish uchun qo'shimcha xarajatlarga olib keladi) C++).

Xotira uchun xavfsiz kutubxonalardan foydalanish eng oddiy, ammo unchalik samarali emas. Rust-da kodni qayta yozish eng samarali, ammo ayni paytda juda qimmat usul sifatida baholanadi.

Chromium’dagi xavfsizlik muammolarining 70 foizi xotira xatolaridan kelib chiqadi

Manba: opennet.ru

a Izoh qo'shish