Prestazioni e sicurezza si scontrano ancora una volta nell’attacco “Collide+Power”.
CasaCasa > Notizia > Prestazioni e sicurezza si scontrano ancora una volta nell’attacco “Collide+Power”.

Prestazioni e sicurezza si scontrano ancora una volta nell’attacco “Collide+Power”.

Oct 05, 2023

Un'altra settimana, un altro BWAIN!

Come saprai se hai ascoltato il podcast della scorsa settimana (suggerimento, suggerimento!), BWAIN è l'abbreviazione di Bug With An Impressive Name:

S3 Ep145: Bug dai nomi impressionanti!

È un soprannome che applichiamo quando i rilevatori di un nuovo attacco alla sicurezza informatica sono così entusiasti della loro scoperta da dargli un soprannome adatto alle pubbliche relazioni, registrargli un nome di dominio vanity, costruirgli un sito Web personalizzato e progettargli un logo speciale.

Questa volta, il nome Collide+Power include un fastidioso carattere di punteggiatura, che è un vantaggio nella denominazione dei bug, ma un aspetto negativo quando si registra un dominio Internet. (Ironicamente, i nomi di dominio possono utilizzare -, ma non +).

Quindi è stato necessario abbreviare leggermente il nome del dominio in https://collidepower.com, ma il sito web vi darà comunque una panoramica del problema, anche togliendo il segno dell'addizione.

I ricercatori dietro questo nuovo articolo sono Andreas Kogler, Jonas Juffinger, Lukas Giner, Martin Schwarzl, Daniel Gruss e Stefan Mangard dell’Università di Graz in Austria, e Lukas Gerlach e Michael Schwarz del CISPA Helmholtz Center for Information Security in Germania.

Non cercheremo di spiegare approfonditamente le varie forme di questo attacco, perché i dettagli tecnici su come effettuare le misurazioni e il modello matematico utilizzato per trarre deduzioni da tali misurazioni sono complessi.

Ma il nocciolo del problema, se volete perdonare il gioco di parole parziale, è che la memoria cache sepolta all'interno dei moderni chip dei processori, è destinata a fornire un incremento invisibile e automatico delle prestazioni...

…non è sempre così invisibile come si potrebbe pensare e talvolta può far trapelare parte o tutto il suo contenuto, anche a processi che non dovrebbero essere in grado di vederlo.

Come suggerisce il nome, la memoria cache (si pronuncia cash, come in dollari e centesimi, non cachet, come in rispetto e prestigio, se ve lo siete mai chiesto), conserva copie speciali dei valori dei dati dalla RAM convenzionale in posizioni nascoste all'interno della CPU chip stesso.

Se la CPU tiene traccia degli indirizzi RAM (posizioni di memoria) che hai utilizzato di recente e riesce a indovinare abbastanza bene quali probabilmente utilizzerai di nuovo presto, può mantenerli temporaneamente nella sua memoria cache e quindi accelerare notevolmente il tuo secondo accesso a quei valori e il terzo accesso, il quarto e così via.

Ad esempio, se stai cercando una serie di valori di dati in una tabella per convertire i pixel di un'immagine da un formato di colore a un altro, potresti scoprire che la maggior parte delle volte la tabella di ricerca ti dice di visitare l'indirizzo RAM 0x06ABCC00 (che potrebbe essere dove è memorizzato il codice speciale per "pixel nero") o l'indirizzo 0x3E00A040 (che potrebbe essere la posizione del codice "pixel trasparente").

Mantenendo automaticamente i valori di questi due indirizzi di memoria comunemente necessari nella sua cache, la CPU può cortocircuitare (in senso figurato, non letteralmente!) tentativi futuri di accedere a quegli indirizzi, in modo che non sia necessario inviare segnali elettrici all'esterno del processore, attraverso la scheda madre e nei chip RAM effettivi per leggere la copia principale dei dati archiviati lì.

Pertanto, l'accesso ai dati memorizzati nella cache è in genere molto più rapido rispetto ai dati nella RAM della scheda madre.

In generale, tuttavia, non puoi scegliere quali registri di cache utilizzare per memorizzare quali indirizzi RAM e non puoi scegliere quando la CPU decide di interrompere la memorizzazione nella cache del valore del "codice pixel trasparente" e iniziare a memorizzare nella cache il valore di un altro programma. “chiave crittografica super segreta”.

In effetti, la cache può contenere un ampio mix di valori, da un ampio mix di indirizzi RAM, appartenenti a un ampio mix di diversi account utente e livelli di privilegio, tutti allo stesso tempo.

Per questo motivo, oltre a ragioni di efficienza e prestazioni, anche i programmi a livello di amministratore non possono sbirciare direttamente l'elenco degli indirizzi attualmente memorizzati nella cache, o ottenere i loro valori, per proteggere i dati memorizzati nella cache dallo snooping esterno.

Come programmatore, usi ancora l'istruzione del codice macchina "leggi il codice pixel trasparente dall'indirizzo 0x3E00A040" e il sistema operativo decide comunque se dovresti avere accesso a quei dati in base all'indirizzo numerico 0x3E00A040, anche se il i dati alla fine provengono direttamente dalla cache anziché dal vero indirizzo RAM 0x3E00A040.