70% masalah keselamatan dalam Chromium disebabkan oleh ralat memori

Pembangun projek Chromium dianalisis 912 kerentanan berisiko tinggi dan kritikal yang dikenal pasti dalam keluaran stabil Chrome sejak 2015, dan menyimpulkan bahawa 70% daripadanya disebabkan oleh ketidakselamatan memori (ralat semasa menggunakan penunjuk dalam kod C/C++). Separuh daripada masalah ini (36.1%) disebabkan oleh akses kepada penimbal selepas membebaskan memori yang berkaitan dengannya (bebas guna selepas).

70% masalah keselamatan dalam Chromium disebabkan oleh ralat memori

Apabila mereka bentuk Chromium ia pada mulanya baring, bahawa ada kemungkinan ralat muncul dalam kod, jadi penekanan besar diberikan pada penggunaan pengasingan kotak pasir untuk mengehadkan akibat kelemahan. Pada masa ini, kemungkinan menggunakan teknologi ini telah mencapai had keupayaan mereka dan pemecahan selanjutnya ke dalam proses adalah tidak praktikal dari sudut penggunaan sumber.

Untuk mengekalkan keselamatan pangkalan kod, Google turut menguatkuasakan "peraturan duaβ€œ, mengikut mana mana-mana kod tambahan mesti memenuhi tidak lebih daripada dua daripada tiga syarat: bekerja dengan data input yang tidak sah, menggunakan bahasa pengaturcaraan yang tidak selamat (C/C++) dan berjalan dengan keistimewaan yang tinggi. Peraturan ini menunjukkan bahawa kod untuk memproses data luaran mesti sama ada dikurangkan kepada keistimewaan minimum (terpencil) atau ditulis dalam bahasa pengaturcaraan selamat.

Untuk meningkatkan lagi keselamatan pangkalan kod, projek telah dilancarkan untuk mengelakkan ralat ingatan daripada muncul dalam pangkalan kod. Terdapat tiga pendekatan utama: mencipta perpustakaan C++ dengan fungsi untuk pengendalian memori yang selamat dan mengembangkan skop pemungut sampah, menggunakan mekanisme perlindungan perkakasan MTE (Sambungan Penandaan Memori) dan menulis komponen dalam bahasa yang memastikan kerja selamat dengan ingatan (Java, Kotlin, JavaScript, Rust, Swift).

Dijangka kerja akan tertumpu dalam dua bidang:

  • Perubahan ketara kepada proses pembangunan C++, yang tidak mengecualikan kesan negatif terhadap prestasi (pemeriksaan sempadan tambahan dan kutipan sampah). Daripada penunjuk mentah, adalah dicadangkan untuk menggunakan jenis tersebut MiraclePtr, yang membolehkan anda mengurangkan ralat tanpa penggunaan yang boleh dieksploitasi kepada ranap yang tidak menimbulkan ancaman keselamatan, tanpa kesan negatif yang ketara terhadap prestasi, penggunaan memori dan kestabilan.
  • Penggunaan bahasa yang direka untuk melakukan pemeriksaan keselamatan memori pada masa penyusunan (akan menghapuskan kesan negatif ke atas prestasi yang wujud dalam semakan sedemikian semasa pelaksanaan kod, tetapi akan membawa kepada kos tambahan untuk mengatur interaksi kod dalam bahasa baharu dengan kod dalam C++).

Menggunakan perpustakaan selamat memori adalah cara yang paling mudah, tetapi juga kurang cekap. Menulis semula kod dalam Rust dinilai sebagai cara yang paling berkesan, tetapi juga sangat mahal.

70% masalah keselamatan dalam Chromium disebabkan oleh ralat memori

Sumber: opennet.ru

Tambah komen