Il codice sorgente è "più sicuro" nei seguenti modi:
- Piantare una backdoor discreta nel codice sorgente (al contrario del codice binario) è difficile, in proporzione al numero di persone che riesaminano il codice sorgente.
- Molto pochi virus infettano automaticamente il codice sorgente.
Il primo modo non è una garanzia strong. In primo luogo, dal momento che stai immaginando un autore ostile, allora devi considerare in che modo quell'autore potrebbe dare a te un codice sorgente specifico con una backdoor, distinta dal codice sorgente visto da tutti gli altri. Pertanto, l'insieme di persone che sono in grado di esaminare la fonte che stai per compilare può essere ridotto a una singola persona, cioè tu. In tal caso, se tu , personalmente, non sei disposto a eseguire una revisione completa del codice sorgente, compilare il codice sorgente non ti renderà più sicuro dell'uso di un binario, almeno contro un autore ostile che vuole piantare una backdoor.
In secondo luogo, backdoor e altre vulnerabilità sono bug. È stato ampiamente dimostrato che nessuna quantità di revisione del codice può rilevare tutti i bug, anche quelli molto gravi, anche per bug che sono errori onesti. Se non riusciamo a scoprire in modo affidabile i bug che sono il risultato di mera sfortuna e disattenzione, come possiamo sperare di riconoscere bug creati intenzionalmente da un attaccante apparentemente intelligente che è intento a eludere il rilevamento?
Un riferimento classico da leggere è la conferenza del premio Turing di Ken Thompson . Per una storia più recente, guarda tutto il dramma sulla presunta backdoor nell'implementazione di OpenBSD IPSec , che si è rivelato (ufficialmente) un vero disastro. Mentre in quest'ultimo caso sembra che non ci sono backdoor reali (non ho verificato me stesso), evidenzia il fatto che piantare backdoor in un PRNG sottilmente viziato sembra altamente possibile, anche come codice sorgente che è in bella vista di molte persone.
Alla fine, è una questione di rischio . Dal punto di vista dell'attaccante, mettere la backdoor nel codice sorgente è rischioso: se il suddetto codice sorgente è ampiamente disponibile, il rischio di essere scoperti è più alto; mentre una backdoor nel codice binario è per lo più sicura - di nuovo, per l'attaccante. Affidarsi che il codice sorgente sia più sicuro per te significa fare affidamento sulla razionalità dell'hacker , cioè usare il codice sorgente perché ritieni che l'attaccante non sia abbastanza pazzo da correre il rischio di mettere la backdoor nel codice sorgente visibile.
La protezione contro i virus probabilmente ha un valore pratico più alto, nel caso dei binari almeno per Windows. Usando il codice sorgente, sei immune dalla maggior parte dei virus che potrebbero essere eseguiti sulla macchina dell'autore del software (ma, ovviamente, non contro il virus sulla tua macchina), ma questi sono già presenti.