Storia vera dai miei primi giorni in Microsoft.
Non hai conosciuto paura fino al giorno in cui ti svegli e vedi il titolo su ZDNet.com quella mattina è "Il peggior buco della sicurezza di Internet Explorer mai scoperto in" Blah " " dove "Blah" è il codice che hai scritto sei mesi prima .
Immediatamente dopo aver iniziato a lavorare ho controllato i registri delle modifiche e ho scoperto che qualcuno di un altro team - qualcuno di cui ci fidavamo per apportare modifiche al prodotto - aveva verificato il mio codice, modificato un sacco di impostazioni della chiave del registro di sicurezza senza motivo, ricontrollato e non ho mai avuto una revisione del codice o ne ho parlato con nessuno. Fino ad oggi non ho idea di cosa diavolo pensasse di fare; lasciò la compagnia poco dopo. (Di sua iniziativa.)
(AGGIORNAMENTO: alcune risposte ai problemi sollevati nei commenti:
In primo luogo, nota che ho scelto di assumere la posizione di beneficenza secondo cui i cambiamenti della chiave di sicurezza erano involontari e basati sulla disattenzione o sulla non familiarità, piuttosto che sulla malizia. Non ho prove in un modo o nell'altro e credo che sia saggio attribuire errori alla fallibilità umana.
In secondo luogo, i nostri sistemi di check-in sono molto, molto più potenti ora di quanto non fossero dodici anni fa. Ad esempio, ora non è possibile effettuare il check-in del codice senza che il sistema di check-in invii tramite e-mail l'elenco delle modifiche alle parti interessate. In particolare, le modifiche apportate alla fine del ciclo della nave hanno un sacco di "processo" attorno a loro che garantisce che vengano apportate le giuste modifiche per garantire la stabilità e la sicurezza del prodotto.)
Comunque, il bug era che un oggetto che NON era sicuro per essere usato da Internet Explorer era stato rilasciato accidentalmente come contrassegnato come "sicuro per gli script". L'oggetto era in grado di scrivere file binari - in realtà librerie di tipi di automazione OLE - in posizioni arbitrarie del disco. Ciò significava che un utente malintenzionato poteva creare una libreria di tipi che conteneva determinate stringhe di codice ostile, salvarlo in un percorso che era un percorso eseguibile noto, dargli l'estensione di qualcosa che avrebbe causato l'esecuzione di uno script e sperare che in qualche modo l'utente eseguirà accidentalmente il codice. Non conosco attacchi di successo nel "mondo reale" che hanno utilizzato questa vulnerabilità, ma è stato possibile creare un exploit funzionante con esso.
Abbiamo spedito una patch dannatamente veloce per quella, lascia che te lo dica.
Ho causato e successivamente risolto molti più buchi di sicurezza in JScript, ma nessuno di loro è mai arrivato vicino alla pubblicità che si faceva.