Kerangka pikeun nyerat supir aman pikeun kernel Linux dina Rust

Josh Triplett, anu damel di Intel sareng janten panitia anu ngawaskeun pangwangunan Crates.io, nyarios dina Open Source Technology Summit. ngenalkeun grup kerja aimed dina bringing basa Rust ka parity jeung basa C dina widang programming sistem.

Dina grup kerja anu aya dina prosés nyiptakeun, pamekar Rust, sareng insinyur ti Intel, bakal nyiapkeun spésifikasi anu nangtukeun fungsionalitas anu kedah dilaksanakeun dina Rust pikeun program sistem. Pemrograman sistem sering ngabutuhkeun manipulasi tingkat rendah, sapertos ngalaksanakeun paréntah prosésor anu hak istimewa sareng kéngingkeun inpormasi lengkep ngeunaan kaayaan prosesor. Tina fitur anu sami anu parantos dikembangkeun pikeun Rust, dukungan pikeun struktur anu henteu namina, union, inserts basa assembly (makro "asm!") sareng format angka floating point BFLOAT16.

Josh percaya yén masa depan program sistem milik Rust, sareng basa C dina realitas modéren ngaku tempat anu dijajah ku Majelis dina taun-taun katukang. Karat
teu ngan relieves pamekar ti masalah alamiah dina basa C anu timbul alatan karya-tingkat low kalawan memori, tapi ogé nyadiakeun kasempetan pikeun ngagunakeun eta dina ngembangkeun paradigma programming modern.

Salila diskusi pagelaran
Josh datang jeung gagasan pikeun nambahkeun kamampuhan pikeun ngembangkeun drivers dina kernel Linux Ubuntu dina basa Rust, nu bakal ngidinan pikeun nyieun supir aman tur hadé kalawan usaha minimal, bébas tina masalah kayaning aksés memori sanggeus freeing, null dereferences pointer jeung panyangga overruns.

Greg Kroah-Hartman, anu tanggung jawab pikeun ngajaga cabang stabil tina kernel Linux, nyatakeun kasiapan pikeun nambihan kerangka pikeun ngembangkeun supir dina basa Rust kana kernel upami éta gaduh kaunggulan nyata dina C, contona, éta bakal nyayogikeun aman. bindings leuwih kernel API. Salaku tambahan, Greg nganggap kerangka ieu ngan ukur salaku pilihan, henteu aktip sacara standar, supados henteu kalebet Rust salaku kagumantungan ngawangun dina kernel.

Tétéla sababaraha tim parantos damel di arah ieu. Salaku conto, pamekar ti perusahaan "Lauk dina Laras" disiapkeun a toolkit pikeun nulis modul loadable pikeun kernel Linux Ubuntu dina basa Rust, ngagunakeun susunan lapisan abstrak dina interfaces jeung struktur kernel pikeun ngaronjatkeun kaamanan. Lapisan sacara otomatis dihasilkeun dumasar kana file lulugu kernel anu aya nganggo utilitas bindgen. Clang dipaké pikeun ngawangun lapisan. Salian interlayers, modul dirakit ngagunakeun pakét staticlib.

Paralel ngembang Proyék sanésna museurkeun kana pamekaran supir pikeun sistem anu dipasang sareng alat IoT, anu ogé ngagunakeun bindgen pikeun ngahasilkeun lapisan dumasar kana file lulugu kernel. Kerangka ngamungkinkeun anjeun pikeun ningkatkeun kaamanan supir tanpa ngarobih kernel - tinimbang nyiptakeun tingkat isolasi tambahan pikeun supir dina kernel, diusulkeun pikeun meungpeuk masalah dina tahap kompilasi, nganggo basa Rust anu langkung aman. Diperkirakeun yén pendekatan sapertos kitu tiasa dipénta ku produsén alat-alat ngembangkeun supir proprietary buru-buru tanpa ngalaksanakeun audit anu leres.

Henteu sakabéh pungsionalitas dimaksudkeun geus acan dilaksanakeun, tapi kerangka geus rada cocog pikeun digawé sarta dipaké pikeun nulis supir gawé pikeun LAN9512 USB Ethernet controller disadiakeun dina dewan buah prambus Pi 3. Supir smsc95xx aya, ditulis ku di basa C. Perlu dicatet yén ukuran modul sareng overhead tina komponén runtime nalika ngembangkeun supir di Rust teu pati penting, anu ngamungkinkeun kerangka dianggo pikeun alat anu sumber daya terbatas.

sumber: opennet.ru

Tambahkeun komentar