Ho letto sulla modalità cache-as-ram (modalità no-fill) numerose volte e mi chiedo se il numero uno, può essere scritto codice eseguibile e saltato e se così il codice eseguibile è limitato alla metà della cache di livello uno (poiché la cache è in realtà solo sram).Cache-as-Ram (nessuna modalità di riempimento) Codice eseguibile
risposta
Coreboot utilizzato originariamente CAR per salvare pila C nella cache dati L1: http://rere.qmqm.pl/~mirq/cache_as_ram_lb_09142006.pdfhttp://www.coreboot.org/images/6/6c/LBCar.pdf
per eseguire codice, dovremmo passare L2 unificata alla modalità AUTO, allora L1I (si dovrebbe sapere che la maggior parte moderna CPU desktop/applicazione ha L1 separato: uno per i dati - L1d - con lettura/scrittura e altro - L1i di sola lettura per il codice) sarà in grado di leggere il codice da CAR L2. Tale modalità è stata implementata in "UBRX - console universale di ripristino del BIOS per PC x86" (akeo): http://pete.akeo.ie/2011/08/ubrx-l2-cache-as-instruction-ram.html
ci sono due cache L1 ondie: uno per i dati e un altro per le istruzioni, con l'istruzione quello in sola lettura . Pertanto, il metodo di configurazione CAR di coreboot fornisce solo l'accesso alla cache di dati L1, non quella di istruzioni, quindi non possiamo semplicemente caricare il nostro codice in L1-Data e aspettarci che venga eseguito.
C'era anche società commerciale che ha creato prodotto per proteggere il codice da Frozen memory attacks (quando attaccante congelato la DRAM, tira il modulo DRAM e spostarla in altro PC per leggere, la maggior parte dei dati verranno salvati per decine di secondi). Il loro prodotto carica l'intero kernel os/hypervisor nella cache, sia il codice che i dati sono stati memorizzati nella CPU. Il prodotto era vCage da PrivateCore (via Reverse engineering a Docker deployment on private cloud e Preventing reverse engineering with binary code and secret key, grazie a AdamNYC user per info):
("L'host vCage è confezionato come un apolide immagine dal vivo KVM Linux su un disco RAM").
https://security.stackexchange.com/questions/53165/is-it-possible-to-boot-an-encrypted-server-remotely-and-securely, comment da security.SE user northox:
"Nel caso di vCage è fondamentalmente solo bisogno di fidarsi di Intel e Core privata In breve, vCage fornire un hypervisor residente L3 validato con l'attestazione remota.".
Controllare slitta 36 del https://forum.stanford.edu/events/2014/2014slides/plenary/Oded%20Stanford%20Annual%20Forum%202014.pdf#page=36
"La CPU, come il perimetro di calcolo • Sicurezza fisica è il pacchetto CPU stessa • Caricamento immagine stateless nella cache della CPU"
immagine caricata a Cache della CPU (L3); e il SO è linux! (Slide 39)
sfide più grandi • Schiacciare il kernel Linux in < 10MB mentre - Mantenendo tutte le caratteristiche di virtualizzazione - mantenendolo stabile (No OOM consentito) • Tenere cache della CPU sotto il nostro controllo
Questo significa che vCage era in grado di eseguire codice da Cache; ma la compagnia ora non è parte pubblica di Facebook, quindi non ci sono dettagli più recenti o open source di patch di Linux.
https://www.blackhat.com/docs/us-14/materials/us-14-Weis-Protecting-Data-In-Use-From-Firmware-And-Physical-Attacks-WP.pdf "Protezione dei dati in uso da firmware e attacchi fisici" di Weis di PrivateCore (BH 2014) elenca anche altri progetti di protezione cache-as-ram per il codice: "CARMA [68] è un altro approccio che mantiene le chiavi e il codice attendibile interamente all'interno della cache della CPU ... non supporta la memoria principale; Software Cryptoprocessor [36]. Tutto il materiale chiave e il codice del kernel rimane residente nella cache L3 e non viene mai esposto in memoria come testo normale. " (e vicino al testo) – osgx
Ottima risposta! Grazie! – Hatrick