70% din problemele de securitate din Chromium sunt cauzate de erori în gestionarea memoriei

Dezvoltatorii proiectului Chromium au analizat 912 vulnerabilități periculoase și critice, identificate în versiunile stabile ale Chrome din 2015, și au concluzionat că 70% dintre ele au fost cauzate de gestionarea nesigură a memoriei (erori în gestionarea pointerelor în codul C/C++). Jumătate dintre aceste probleme (36.1%) sunt cauzate de accesările la buffer după eliberarea memoriei asociate (use-after-free).

70% din problemele de securitate din Chromium sunt cauzate de erori în gestionarea memoriei

În proiectarea Chromium a fost inițial preconizat, că în cod pot apărea erori, motiv pentru care s-a pus un accent mare pe aplicarea izolării sandbox pentru a limita consecințele apariției vulnerabilităților. În prezent, capacitățile de aplicare a acestei tehnologii au atins limitele sale și fragmentarea suplimentară pe procese nu mai este fezabilă din punct de vedere al consumului de resurse.

Pentru a menține securitatea bazei de cod, Google aplică de asemenea „regula celor două“, conform căreia orice cod adăugat trebuie să îndeplinească nu mai mult de două condiții din trei: manipularea datelor de intrare nesecurizate, utilizarea unui limbaj de programare nesigur (C/C++) și executarea cu privilegii ridicate. Din această regulă rezultă că codul pentru prelucrarea datelor externe trebuie fie să fie restrâns la privilegii minime (izolate), fie să fie scris într-un limbaj de programare sigur.

Pentru a întări și mai mult securitatea bazei de cod a fost inițiat un proiect de prevenire a apariției erorilor de gestionare a memoriei în baza de cod. Se disting trei abordări principale: crearea de biblioteci C++ cu funcții pentru gestionarea sigură a memoriei și extinderea domeniului de aplicare al colectorului de gunoi, aplicarea mecanismelor hardware de protecție MTE (Memory Tagging Extension) și scrierea de componente în limbaje care asigură gestionarea sigură a memoriei (Java, Kotlin, JavaScript, Rust, Swift).

Se așteaptă ca lucrările să se concentreze în două direcții:

  • Schimbări semnificative în procesul de dezvoltare în C++, care nu exclud influența negativă asupra performanței (verificări suplimentare de limite și colectare de gunoi). În loc de pointeri raw, se propune utilizarea în cod a tipului MiraclePtr, care permite reducerea erorilor exploatabile de tip use-after-free la blocaje care nu reprezintă o amenințare pentru securitate, fără un impact negativ semnificativ asupra performanței, consumului de memorie și stabilității.
  • Utilizarea limbajelor concepute pentru a efectua verificări de siguranță în gestionarea memoriei în timpul compilării (va exclude impactul negativ asupra performanței, specific acestor verificări în timpul execuției codului, dar va duce la costuri suplimentare pentru organizarea interacțiunii codului în noul limbaj cu codul C++).

Folosirea bibliotecilor pentru gestionarea sigură a memoriei este cea mai simplă, dar și cea mai puțin eficientă metodă. Rescrierea codului în Rust este considerată cea mai eficientă, dar și o cale foarte costisitoare.

70% din problemele de securitate din Chromium sunt cauzate de erori în gestionarea memoriei

Sursa: opennet.ro

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster