Questa è solo una parte di una risposta, perché la foresta copriva già molto terreno.
It's the outputting untrusted text that I am most worried about.
È possibile evitare facilmente la gestione del testo non attendibile nel terminale. Innanzitutto, nel tuo client di posta, archivia il blocco gpg crittografato in un file, ad esempio /tmp/encrypted_message.txt
Quindi, nel terminale, esegui
$ gpg ... -o /tmp/decrypted_message.txt ...
Quindi ora hai il messaggio decrittografato in /tmp/decrypted_message.txt
senza avere mai dati non fidati che toccano il terminale / shell. Apri il file decrittografato in qualsiasi applicazione che ritieni affidabile per visualizzarlo, o spediscilo via e-mail (poiché lo usi già per visualizzare il testo non attendibile ogni volta che ricevi un messaggio non richiesto, quindi non aumenti la superficie di attacco). / p>
Dovresti preoccuparti di altre cose
L'esecuzione di comandi di shell nascosti nell'input dell'utente è in realtà un probabile vettore di attacco, poiché molti e molti sistemi sono vulnerabili a questo, quindi dal punto di vista dell'attaccante paga per sviluppare i necessari carichi malvagi e dal tuo punto di vista è intelligente rimuovere la shell dalla pipeline quando si gestisce l'input dell'utente ogni volta che è possibile. Ma memorizzando l'input non crittografato in un file e avendo gnupg in output il testo decrittografato in un altro file, hai già eliminato tutti i contatti tra i dati non fidati e la shell.
Invece, dovresti ora preoccuparti dei difetti nel resto delle applicazioni della tua pipeline. gpg
potrebbe contenere un difetto che consente a un utente malintenzionato di eseguire codice macchina arbitrario (di solito codice che fornisce a un utente malintenzionato una shell) sul tuo computer.
Ma gpg
è presente in molto meno pipeline di, ad esempio, un browser o un client di posta, quindi sembra improbabile che un hacker scelga GnuPG per cercare difetti che gli permettano di eseguire shellcode, invece dei browser e della posta molto più usati clienti, (a meno che non si rivolga agli utenti di GnuPG o a te specificatamente, ovviamente qualcuno potrebbe bersagliare gli utenti di GnuPG, ma ci sono così tanti pacchetti software ad alta esposizione che sembrano bersagli migliori che penso che dovresti principalmente preoccuparti di qualcuno che effettivamente bersaglia te o il tuo sito web, individualmente).
Airgapping per leggere i messaggi che gli utenti del tuo sito web ti trasmettono è troppo cauto nei miei confronti a meno che tu non stia conducendo la prossima Silk Road e temono che le forze dell'ordine statunitensi ti perseguano, nel qual caso potrei capire perché ti preoccupi. Ma se vuoi isolare gpg
, puoi usare software come firejail
. Ciò significa che un attaccante che ha trovato un difetto in GnuPG che gli permette di eseguire un codice arbitrario dovrà anche trovare un difetto nel kernel di Linux prima che possa scappare dalla prigione nel tuo sistema attuale e fare più danni.
(Modifica: cambia la risposta per riflettere la discussione nei commenti / chat)