El 70% dels problemes de seguretat a Chromium són causats per errors de memòria

Desenvolupadors del projecte Chromium analitzat 912 vulnerabilitats crítiques i d'alt risc identificades en versions estables de Chrome des del 2015 i van concloure que el 70% d'elles van ser causades per inseguretat de memòria (errors en treballar amb punters en codi C/C++). La meitat d'aquests problemes (36.1%) són causats per accessos a la memòria intermèdia després d'alliberar la memòria associada a aquest (use-after-free).

El 70% dels problemes de seguretat a Chromium són causats per errors de memòria

En dissenyar Chromium ho va ser inicialment establert, que és possible que apareguin errors al codi, per la qual cosa es va posar un gran èmfasi en l'ús de l'aïllament sandbox per limitar les conseqüències de les vulnerabilitats. Actualment, les possibilitats d'utilització d'aquesta tecnologia han arribat al límit de les seves capacitats i la fragmentació addicional en processos és impracticable des del punt de vista del consum de recursos.

Per mantenir la seguretat de la base de codi, Google també fa complir "regla de dos", segons el qual qualsevol codi afegit no ha de complir més de dues de les tres condicions: treballar amb dades d'entrada no validades, utilitzar un llenguatge de programació insegur (C/C++) i executar-se amb privilegis elevats. Aquesta regla implica que el codi per processar dades externes s'ha de reduir a privilegis mínims (aïllat) o escrit en un llenguatge de programació segur.

Per millorar encara més la seguretat de la base de codi, s'ha llançat un projecte per evitar que els errors de memòria apareguin a la base de codi. Hi ha tres enfocaments principals: crear biblioteques C++ amb funcions per al funcionament segur de la memòria i ampliar l'abast del col·lector d'escombraries, utilitzant mecanismes de protecció de maquinari. MTE (Extensió d'etiquetatge de memòria) i components d'escriptura en idiomes que garanteixen un treball segur amb memòria (Java, Kotlin, JavaScript, Rust, Swift).

Es preveu que el treball se centrarà en dues àrees:

  • Canvi significatiu en el procés de desenvolupament de C++, que no exclou un impacte negatiu en el rendiment (comprovacions addicionals de límits i recollida d'escombraries). En lloc de punters en brut, es proposa utilitzar el tipus MiraclePtr, que us permet reduir els errors explotables d'ús després de lliure a fallades que no suposen una amenaça per a la seguretat, sense un impacte negatiu notable en el rendiment, el consum de memòria i l'estabilitat.
  • L'ús de llenguatges dissenyats per dur a terme comprovacions de seguretat de la memòria en temps de compilació (eliminarà l'impacte negatiu en el rendiment inherent a aquestes comprovacions durant l'execució del codi, però comportarà costos addicionals per organitzar la interacció del codi en un idioma nou amb codi en C++).

L'ús de biblioteques segures per a la memòria és la manera més senzilla, però també menys eficient. Reescriure codi a Rust es considera la forma més eficaç, però també molt cara.

El 70% dels problemes de seguretat a Chromium són causats per errors de memòria

Font: opennet.ru

Afegeix comentari