70 % Chromiumin tietoturvaongelmista johtuu muistivirheistä

Chromium-projektin kehittäjät analysoitu 912 korkean riskin ja kriittistä haavoittuvuutta on tunnistettu vakaissa Chrome-julkaisuissa vuodesta 2015 lähtien, ja pääteltiin, että 70 % niistä johtui muistin epävarmuudesta (virheet työskenneltäessä osoittimien kanssa C/C++-koodissa). Puolet näistä ongelmista (36.1 %) johtuu puskurin käyttämisestä siihen liittyvän muistin vapauttamisen jälkeen (use-af-free).

70 % Chromiumin tietoturvaongelmista johtuu muistivirheistä

Chromiumia suunniteltaessa se oli alun perin säädettyä, että koodissa saattaa esiintyä virheitä, joten suuri painoarvo asetettiin hiekkalaatikkoeristyksen käyttöön haavoittuvuuksien seurausten rajoittamiseksi. Tällä hetkellä tämän teknologian käyttömahdollisuudet ovat saavuttaneet kykyjensä rajan ja edelleen pirstoutuminen prosesseihin on resurssien kulutuksen kannalta epäkäytännöllistä.

Koodikannan turvallisuuden ylläpitämiseksi Google pakottaa myös "kahden sääntö", jonka mukaan minkä tahansa lisätyn koodin tulee täyttää enintään kaksi kolmesta ehdosta: työskentely vahvistamattomien syöttötietojen kanssa, turvattoman ohjelmointikielen (C/C++) käyttö ja käyttö korotetuilla oikeuksilla. Tämä sääntö tarkoittaa, että ulkoisten tietojen käsittelyyn käytettävä koodi on joko rajoitettava vähimmäisoikeuksiin (eristetty) tai kirjoitettava turvallisella ohjelmointikielellä.

Koodikannan turvallisuuden parantamiseksi on käynnistetty projekti, jolla estetään muistivirheiden esiintyminen koodikannassa. On olemassa kolme pääasiallista lähestymistapaa: C++-kirjastojen luominen, joissa on muistin turvallisen käytön toiminnot ja roskankeräimen soveltamisalan laajentaminen laitteistosuojausmekanismeja käyttämällä MTE (Memory Tagging Extension) ja kirjoituskomponentit kielillä, jotka varmistavat turvallisen työskentelyn muistin kanssa (Java, Kotlin, JavaScript, Rust, Swift).

Työn odotetaan keskittyvän kahdelle alueelle:

  • Merkittävä muutos C++-kehitysprosessiin, mikä ei sulje pois negatiivista vaikutusta suorituskykyyn (lisärajojen tarkistukset ja roskien keräys). Raakaosoittimien sijasta ehdotetaan käytettäväksi tyyppiä MiraclePtr, jonka avulla voit vähentää hyödynnettävän käytön jälkeen-free -virheet kaatumisiksi, jotka eivät aiheuta turvallisuusuhkaa, ilman havaittavia kielteisiä vaikutuksia suorituskykyyn, muistin kulutukseen ja vakauteen.
  • Sellaisten kielten käyttö, jotka on suunniteltu suorittamaan muistin turvatarkistuksia käännösvaiheessa (poistaa kielteisen vaikutuksen suorituskykyyn, joka on luontainen tällaisille tarkistuksille koodin suorittamisen aikana, mutta johtaa lisäkustannuksiin uudella kielellä olevan koodin vuorovaikutuksen järjestämisestä koodin kanssa C++).

Muistiturvallisten kirjastojen käyttäminen on yksinkertaisin, mutta myös vähemmän tehokas tapa. Koodin uudelleenkirjoittaminen Rustissa on arvioitu tehokkaimmaksi, mutta myös erittäin kalliiksi tapaksi.

70 % Chromiumin tietoturvaongelmista johtuu muistivirheistä

Lähde: opennet.ru

Lisää kommentti