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.
- 1. Disabilita la modalità di riempimento automatico in modalità noweb
- 2. animazione-riempimento-modalità non funzionante
- 3. Nessuna modalità di modifica nel portlet Liferay
- 4. Come posso disabilitare la modalità di riempimento automatico in emacs?
- 5. Oracle numero formato to_char con modalità di riempimento (FM0000)
- 6. incorporazione del codice OpenCL in eseguibile
- 7. Nessun codice eseguibile trovato alla riga
- 8. Differenza tra oggetto codice e file eseguibile
- 9. Eseguibile eseguibile da makefile
- 10. In modalità Python emacs, come posso impostare una diversa larghezza di riempimento automatico per docstring e codice?
- 11. codice di blocco # c in modalità asincrona
- 12. app da riga di comando xcode - dov'è il codice eseguibile?
- 13. OSX: Codice-sign eseguibile per evitare warning firewall dialogo
- 14. gamma di riempimento con zeri
- 15. ITMS-90668 - Eseguibile Bundle non valido. Il file eseguibile contiene codice binario che incompleta
- 16. Riempimento gradiente grafico spline
- 17. Nessuna inizializzazione globale variabile
- 18. Scala Nessuna istanza non == Nessuna
- 19. Windows Lua a eseguibile
- 20. Algoritmo di riempimento poligono
- 21. Qual è la differenza tra codice di compilazione e codice eseguibile?
- 22. Adattatore dati di riempimento anomalie
- 23. Eclipse: include il codice sorgente durante l'esportazione come jar eseguibile
- 24. Come impostare la larghezza predefinita della modalità di riempimento su 80 con emacs?
- 25. Come si imposta la colonna di riempimento Emacs per una modalità specifica?
- 26. Demonizzare un eseguibile in ansibile
- 27. Codice in linea in modalità org
- 28. Come verificare se un eseguibile o una DLL è compilato in modalità di rilascio o debug (C++)
- 29. Fontificazione di chunk di codice in modalità noweb Emacs?
- 30. Stringa di riempimento a sinistra
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