, Chromium-projekti tukee kolmannen osapuolen C++ Rust -kirjastojen käyttöä Chromiumissa
Google ilmoitti hiljattain , että Chromium-projektin takana oleva tiimi työskentelee Rust-työkaluketjun lisäämiseksi tuotantoympäristöön sen rakennusjärjestelmään.
Niiden, jotka eivät vielä ole tietoisia Rustista, kannattaa muistaa se hyvin, koska tämä ohjelmointikieli, jonka Mozilla on kehittänyt käytettäväksi selaimen kirjoittamiseen, on alkanut tunkeutua ja tulla hyväksyttyjen monissa tärkeissä projekteissa, joista yksi on Rust Kernel. Linux.
Tämän ansiosta voimme sisällyttää Rust-koodin Chromen binaariin seuraavan vuoden aikana. Tavoitteena on aloittaa pienestä ja asettaa selkeät odotukset, mitä kirjastoja harkitaan, kun ne ovat valmiita.
On siis loogista, että Chromium on vihdoin alkanut kehittää tätä teknologiaa. Googlelle Rustin käyttöönotto Chromiumissa täyttää tavoitteen tarjota helpompi ja turvallisempi tapa saavuttaa "kahden sääntö", joka tarkoittaa kehityksen nopeuttamista ja Chromen tietoturvan parantamista. Lisäksi se parantaa tietoturvaa poistamalla muistivirheitä ja vähentämällä koodin virhetiheyttä.
Tiedämme, että C++ ja Rust voivat toimia erittäin hyvin yhdessä sellaisten työkalujen ansiosta, kuten cxx, autocxx bindgen, cbindgen, diplomat ja (kokeellinen) crubit. On kuitenkin myös rajoituksia. Voimme odottaa näiden rajoitusten muodon muuttuvan ajan myötä uusien tai parannettujen työkalujen myötä, mutta tässä esitetyt päätökset ja kuvaukset perustuvat tekniikan nykytilaan.
Päätös tehtiin osana aloitetta, jolla pyritään estämään muistivirheiden esiintyminen Chromen koodikannassa. Kaksi vuotta sitten julkaistujen tilastojen mukaan 70 % Chromiumin kriittisistä ja vaarallisista tietoturvaongelmista johtuu muistivirheistä.
Rust-kielen käyttö, joka keskittyy turvalliseen muistinhallintaan ja tarjoaa automaattisen muistinhallinnan, vähentää haavoittuvuuksien riskiä, jotka johtuvat esimerkiksi muistialueen käyttämisestä sen vapauttamisen jälkeen ja puskurin ylivuodosta.
Rustin tuomisen Chromiumiin tavoitteena on tarjota helpompi (ei IPC:tä) ja turvallisempi (vähemmän monimutkainen C++ yleensä, ei hiekkalaatikkomuistin turvallisuusvirheitä) tapa täyttää kahden sääntö, jotta kehitystä nopeuttaisi (vähemmän kirjoitettavaa koodia). , vähemmän suunnitteluasiakirjoja, vähemmän suojauskorjauksia) ja parantaa Chromen turvallisuutta (enemmän koodirivejä ilman suojausvirheitä muistissa, pienempi koodivirhetiheys). Lisäksi yhtiö luottaa siihen, että voimme käyttää kolmannen osapuolen Rust-kirjastoja saavuttaaksemme tämän tavoitteen.
Chromium-tiimi oli jo kokeillut Rustia vuoden 2022 alussa ja muutaman kuukauden kuluttua he totesivat, että kieli ei aluksi sovellu C++:n korvaajaksi monimutkaisissa tehtävissä, joissa käytetään asynkronista koodia, jonka on toimittava olemassa olevan koodin rinnalla.
Siksi Rustin suunniteltu käyttö Chromiumissa on aluksi selvästi rajoitettua . Yhtäältä yhteentoimivuus tapahtuu vain yhteen suuntaan: C++:sta Rustiin. Toisaalta aluksi sallitaan vain kolmansien osapuolten kirjastojen käyttö. Nämä toimivat itsenäisinä komponentteina ja ovat riippumattomia Chromiumin sisäisistä komponenteista. Kirjastoilla on oltava yksinkertainen API niiden tiettyä tehtävää varten. Chromium-tiimi tarkistaa sitten kirjastot.
Lopuksi on syytä mainita, että tuen lisääminen Chromiumiin mahdollistaa Rust-koodin siirtämisen Chromen binääreihin ensi vuodesta alkaen. Päätös johtuu pääasiassa turvallisuussyistä: Rust tarjoaa paremman turvallisuuden muistiin kirjoitettaessa kuin C++ ja estää mahdollisesti haitalliset toiminnot, kuten kirjoittamattomien muuttujien lukemisen, taulukoiden asettamien rajojen ulkopuolella olevien arvojen käytön, null- tai virheellisten osoittimien dereference-toiminnon ja mitätöityjen iteraattoreiden käytön.
Jos olet kiinnostunut oppimaan lisää, löydät tiedot seuraavasta linkistä.