The Chromium Chronicle n. 5: programmazione al di fuori della sandbox

Episodio 5: di Ade a Mountain View, CA (agosto 2019)
Puntate precedenti

Chrome è suddiviso in processi. Alcune sono limitate tramite sandbox, il che significa che hanno un accesso ridotto al sistema e agli account degli utenti. In un processo con sandbox, i bug che consentono l'esecuzione di codice dannoso sono molto meno gravi.

Il processo del browser non ha sandbox, quindi un bug potrebbe concedere al codice dannoso l'accesso completo all'intero dispositivo. Cosa dovresti fare di diverso? E qual è la situazione con gli altri processi?

Diagramma della sandbox

Tutto il codice presenta bug. Nel processo del browser, questi bug consentono a codice dannoso di installare un programma, rubare dati utente, regolare le impostazioni del computer, accedere ai contenuti di tutte le schede del browser, ai dati di accesso e così via.

In altri processi, l'accesso al sistema operativo è limitato tramite restrizioni specifiche della piattaforma. Per ulteriori informazioni, consulta la guida all'implementazione della sandbox di Chrome.

Evita i seguenti errori comuni:

regola del due

  • Non analizzare o interpretare dati inaffidabili utilizzando C++ durante la procedura del browser.
  • Non considerare attendibile l'origine di cui deve essere rappresentato un renderer. RenderFrameHost del browser può essere utilizzato per ottenere l'origine attuale in modo sicuro.


Cosa fare

Segui invece le seguenti best practice:

  • Sii più paranoico se il tuo codice è in fase di elaborazione nel browser.
  • Convalida tutti gli IPC da altri processi. Supponiamo che tutti gli altri processi siano già compromessi e intesi a ingannarti.
  • Esegui l'elaborazione in un processo di rendering o di utilità oppure in qualche altro processo con sandbox. Idealmente, usa anche un linguaggio adatto alla memoria come JavaScript (risolve oltre il 50% dei bug di sicurezza).

Per anni abbiamo eseguito stack di rete (ad es. HTTP, DNS, QUIC) nel processo del browser, causando alcune vulnerabilità critiche. Su alcune piattaforme, il networking ora ha un proprio processo e una sandbox in arrivo.

Altre risorse

  • Regola di due di Chromium: non più di due dati non sicuri, codice non sicuro e processo non sicuro.
  • Convalida dei dati IPC: una guida su come garantire che gli IPC del processo di rendering non siano pieni di fibre e rappresentazioni ingannevoli.