Il 70% dei problemi di sicurezza in Chromium è causato da errori nella gestione della memoria

Gli sviluppatori del progetto Chromium hanno analizzato Sono state identificate 912 vulnerabilità pericolose e critiche nelle versioni stabili di Chrome dal 2015, e si è giunti alla conclusione che il 70% di esse è stato causato da un utilizzo non sicuro della memoria (errori di gestione dei puntatori nel codice C/C++). La metà di questi problemi (36,1%) è dovuta ad accessi al buffer dopo il rilascio della memoria ad esso associata (use-after-free).

Il 70% dei problemi di sicurezza in Chromium è causato da errori nella gestione della memoria

Nella progettazione di Chromium si è inizialmente preveduto, che nel codice potevano verificarsi errori, per cui si puntava molto sull'applicazione della sandboxing per limitare le conseguenze delle vulnerabilità. Attualmente, le capacità di applicare questa tecnologia hanno raggiunto il loro limite e ulteriori suddivisioni in processi non sono sostenibili in termini di consumo di risorse.

Per mantenere la sicurezza della base di codice, Google applica anche la "regola del due«In base a cui qualsiasi codice aggiunto deve rientrare in non più di due condizioni su tre: lavorare con dati di input non verificati, utilizzare un linguaggio di programmazione non sicuro (C/C++) e operare con privilegi elevati. Da questa regola deriva che il codice per l'elaborazione di dati esterni deve essere ridotto a privilegi minimi (isolare) o scritto in un linguaggio di programmazione sicuro.

Per migliorare ulteriormente la sicurezza della base di codice, è stato avviato un progetto per prevenire la comparsa di errori di gestione della memoria nella base di codice. Vengono evidenziati tre approcci principali: la creazione di librerie C++ con funzioni per una gestione sicura della memoria e l'estensione dell'ambito del garbage collector, l'utilizzo di meccanismi di protezione hardware MTE (Memory Tagging Extension) e la scrittura di componenti in linguaggi che garantiscono una gestione sicura della memoria (Java, Kotlin, JavaScript, Rust, Swift).

Si prevede che il lavoro sarà concentrato in due direzioni:

  • Una significativa modifica del processo di sviluppo in C++, che non esclude un impatto negativo sulle prestazioni (controlli aggiuntivi dei confini e raccolta dei rifiuti). Si propone di utilizzare nel codice il tipo MiraclePtr, che può ridurre gli errori exploitabili di tipo use-after-free a crash non pericolosi per la sicurezza, senza un impatto negativo significativo sulle prestazioni, sul consumo di memoria e sulla stabilità.
  • L'uso di linguaggi progettati per eseguire controlli di sicurezza della memoria durante la compilazione (consentirà di evitare un impatto negativo sulle prestazioni, tipico di tali controlli durante l'esecuzione del codice, ma comporterà costi aggiuntivi per organizzare l'interazione del codice in un nuovo linguaggio con il codice in C++).

L'uso di librerie per la gestione sicura della memoria è il modo più semplice, ma anche meno efficace. Riscrivere il codice in Rust è considerato il modo più efficace, ma anche molto costoso.

Il 70% dei problemi di sicurezza in Chromium è causato da errori nella gestione della memoria

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, server VPS VDS 🔥 Acquista hosting affidabile per siti web con protezione DDoS, server VPS VDS | ProHoster