70% fan befeiligingsproblemen yn Chromium wurde feroarsake troch ûnthâldflaters

Untwikkelders fan it Chromium-projekt analysearre 912 heech-risiko en krityske kwetsberens identifisearre yn stabile releases fan Chrome sûnt 2015, en konkludearre dat 70% fan harren waarden feroarsake troch ûnthâld ûnfeiligens (flaters by it wurkjen mei pointers yn C / C ++ koade). De helte fan dizze problemen (36.1%) wurdt feroarsake troch tagongen ta de buffer nei it befrijen fan it ûnthâld ferbûn mei it (gebrûk-na-fergees).

70% fan befeiligingsproblemen yn Chromium wurde feroarsake troch ûnthâldflaters

By it ûntwerpen fan Chromium wie it yn earste ynstânsje delleindat it mooglik is dat flaters yn 'e koade ferskine, dus waard in grutte klam lein op it brûken fan sânbox-isolaasje om de gefolgen fan kwetsberens te beheinen. Op it stuit hawwe de mooglikheden fan it brûken fan dizze technology de limyt fan har mooglikheden berikt en fierdere fragmintaasje yn prosessen is ûnpraktysk út it eachpunt fan boarneferbrûk.

Om de feiligens fan 'e codebase te behâlden, hanthavenet Google ek "regel fan twa", neffens hokker elke tafoege koade net mear as twa fan trije betingsten moat foldwaan: wurkje mei net-validearre ynfiergegevens, gebrûk fan in ûnfeilige programmeartaal (C/C++) en rinne mei ferhege privileezjes. Dizze regel hâldt yn dat de koade foar it ferwurkjen fan eksterne gegevens of moatte wurde fermindere ta minimale privileezjes (isolearre) of skreaun yn in feilige programmeartaal.

Om de feiligens fan 'e koadebasis fierder te ferbetterjen, is in projekt lansearre om te foarkommen dat ûnthâldflaters ferskine yn' e koadebasis. D'r binne trije haadbenaderingen: it meitsjen fan C++-biblioteken mei funksjes foar feilige wurking fan ûnthâld en it útwreidzjen fan it berik fan 'e garbage collector, mei help fan hardwarebeskermingsmeganismen MTE (Memory Tagging Extension) en skriuwkomponinten yn talen dy't soargje foar feilich wurk mei ûnthâld (Java, Kotlin, JavaScript, Rust, Swift).

It wurdt ferwachte dat it wurk rjochte sil wêze op twa gebieten:

  • Signifikante feroaring oan de C ++ ûntwikkeling proses, dat net útslute in negative ynfloed op prestaasjes (ekstra grinzen kontrôles en garbage sammeljen). Yn stee fan rauwe oanwizings wurdt foarsteld om it type te brûken MiraclePtr.
  • It brûken fan talen ûntworpen om kontrôles foar ûnthâldfeiligens út te fieren by it kompilearjen (sil de negative ynfloed eliminearje op prestaasjes dy't ynherint binne oan sokke kontrôles by it útfieren fan koade, mar sil liede ta ekstra kosten foar it organisearjen fan de ynteraksje fan koade yn in nije taal mei koade yn C++).

It brûken fan ûnthâldfeilige biblioteken is de ienfâldichste, mar ek minder effisjinte manier. Koade oerskriuwe yn Rust wurdt beoardiele as de meast effektive, mar ek heul djoere manier.

70% fan befeiligingsproblemen yn Chromium wurde feroarsake troch ûnthâldflaters

Boarne: opennet.ru

Add a comment