Histoire vraie de mes premiers jours à Microsoft.
Vous n'avez pas connu la peur jusqu'à ce que le jour vous réveiller et de voir le titre sur ZDNet.com le matin est "le Pire de Sécurité d'Internet Explorer Trou n'A Jamais Été Découvert Dans 'Blah'" où 'Blah' est le code que vous avez écrit vous-même six mois auparavant.
Immédiatement après se rendre au travail, j'ai vérifié les journaux des modifications et a découvert que quelqu'un d'une autre équipe, une personne que nous avons fait confiance à apporter des modifications au produit -- a vérifié mon code, changé un tas de sécurité paramètres de clé de registre pour aucune bonne raison, vérifié à nouveau, et n'a jamais eu un examen du code ou dit à personne à ce sujet. À ce jour, je n'ai aucune idée ce qui sur terre il pensait qu'il était en train de faire; il a quitté l'entreprise peu de temps après. (De son propre chef.)
(Mise à JOUR: quelques réponses aux questions soulevées dans les commentaires:
Tout d'abord, notez que je choisis de prendre la position de bienfaisance que la clé de sécurité, les modifications étaient intentionnelles et non fondée sur la négligence ou de l'ignorance, plutôt que de malice. Je n'ai aucune preuve, d'une façon ou l'autre, et nous croyons qu'il est sage d'attribuer les erreurs de l'homme est faillible.
Deuxièmement, notre checkin systèmes sont beaucoup, beaucoup plus forte aujourd'hui qu'ils ne l'étaient il y a douze ans. Par exemple, il n'est maintenant plus possible de vérifier dans le code sans le système d'archivage envoyant un courriel à la modification de la liste des parties intéressées. En particulier, les changements effectués en fin de navire cycle ont beaucoup de "processus" qui garantit que le droit des modifications sont apportées pour assurer la stabilité et la sécurité du produit.)
De toute façon, le problème a été qu'un objet qui n'était PAS sûr pour être utilisé à partir d'Internet Explorer a été libérée accidentellement en étant marqué "sûrs pour l'écriture de scripts". L'objet a été capable d'écrire des fichiers binaires -- OLE Automation de bibliothèques de types, en fait -- arbitraire emplacements de disque. Cela signifie qu'un attaquant pourrait créer un type de bibliothèque qui contenait certaines chaînes de hostile code, enregistrez-le dans un chemin qui a été connu de l'exécutable de l'emplacement, de lui donner l'extension de quelque chose qui serait la cause d'un script à exécuter, et espère que d'une certaine façon, l'utilisateur accidentellement exécuter le code. Je ne sais pas du succès de tout le "monde réel" des attaques qui ont utilisé cette vulnérabilité, mais il était possible de fabriquer un travail d'exploiter avec elle.
Nous avons expédié un patch sacrément vite pour que l'on, permettez-moi de vous le dire.
Je l'ai provoqué et a ensuite fixé beaucoup plus de trous de sécurité dans JScript, mais aucun d'eux n'a réussi à approcher de la publicité que l'on fait.