Per prima cosa rispondi alla tua seconda domanda ("Non vedo la ragione dietro di essa, se attaccato può raggiungere i valori, può anche ottenere la chiave di crittografia, giusto?") la RAM di RAM predefinita il malware semplicemente sa come identificare i dati di traccia in memoria. Non capisce la mappa della memoria del processo di registrazione. Non conosce le tue strutture o campi. Non cerca di trovare un buffer char * con l'etichetta "Track_Data". Legge solo tutta la memoria nel processo e, se corrisponde a un modello di 15 o 16 cifre, la rimuove e la invia al cattivo. Il malware standard non conosce certamente quale byte costituisce una chiave di crittografia, quindi una volta crittografato, il malware non lo vedrà. (Il tipico malware non è molto sofisticato e certamente non riconoscerebbe i dati XOR o ROT-13, tanto meno un blocco di dati crittografati AES-128.)
Considera che gli attaccanti devono essere furtivi: se hanno inviato 2 GB di dump di RAM da ogni registratore di cassa dopo ogni transazione, probabilmente le persone della rete si accorgerebbero. Invia solo la più piccola quantità di dati di cui hanno bisogno e non tenta di decodificare nulla.
(Si noti che questo è vero solo per la RAM generica che cancella malware come Dexter e BlackPOS; se c'è malware indirizzato a un'applicazione specifica, può essere personalizzato per comprendere le strutture di memoria e provare a rubare le chiavi e / o dati crittografati da specifici indirizzi. Tutto dipende dagli aggressori.)
-
Come richiesto, la prima parte della tua domanda descrive quasi una condizione di gara: a che punto i dati della traccia sono considerati "a riposo"? È solo quando atterra su un disco rigido, o può essere considerato a riposo mentre nella memoria in attesa di essere crittografato?
Ma ora devi andare avanti e ottenere maggiori dettagli. È a riposo quando atterra nei buffer del driver del dispositivo USB? Sta riposando quando viene inviato un messaggio di Windows per notificare al processo che sono stati immessi nuovi dati di traccia? Sta riposando quando il buffer viene inviato all'algoritmo di crittografia? È a riposo quando l'applicazione analizza la traccia per recuperare il nome del titolare della carta, il codice di servizio, PAN, CVV e la data di scadenza? È a riposo quando toglie le ultime 4 cifre della ricevuta? È a riposo se l'applicazione sta elaborando il numero di account in qualsiasi modo prima della crittografia; forse convalidare una cifra di controllo o determinare se si tratta di un visto o di un altro tipo di carta di credito? È a riposo quando viene costruito il messaggio di autorizzazione? Nessuna di queste attività sembra che i dati stiano riposando molto e molte di queste attività sono funzioni comuni nei sistemi POS. In totale, tutta l'elaborazione può richiedere alcuni millisecondi o più.
Consideriamo ora gli attaccanti del mondo reale. Il malware utilizzato in alcune delle più grandi violazioni di nome era RAM che raschiava il malware ed è estremamente aggressivo. Può scorrere la memoria del registro centinaia di volte al secondo e attivare il più breve sguardo su PAN o tenere traccia dei dati. Può acquisire i dati di traccia che arrivano nei buffer USB, nei buffer dei messaggi di Windows prima che l'applicazione venga notificata, mentre vengono smontati nelle routine di analisi o anche quando vengono invocate le routine di crittografia. Anche se si rispetta perfettamente la lettera delle leggi PCI-DSS e la si cripta non appena l'applicazione la vede, si è ancora vulnerabili a una violazione se qualche membro di questa famiglia di malware accede ai propri registratori di cassa.
Invece di concentrarsi sull'interpretazione esatta di PCI-DSS, è meglio evitare completamente la situazione rimuovendo quanti più sistemi possibili dall'ambito PCI. Se puoi, scarica i dati della traccia dal registratore di cassa e in un terminale di pagamento separato che può crittografare i dati prima di inviarli al registratore di cassa.
Se si sposta la crittografia su un dispositivo separato situato all'esterno dell'ambiente del registratore di cassa, il registro non deve mai ricevere PAN in chiaro o tenere traccia dei dati. Qualsiasi malware che si trovi nei tuoi registri non troverà traccia di dati da analizzare. E un terminale di pagamento avrà una superficie di attacco molto più piccola di una vera e propria applicazione per registratore di cassa basata su Windows.