Eine wahre Geschichte aus meiner Anfangszeit bei Microsoft.
Sie kennen die Angst erst, wenn Sie aufwachen und die Schlagzeile auf ZDNet.com an diesem Morgen lautet: " Schlimmste Sicherheitslücke im Internet Explorer aller Zeiten wurde in "Blah" entdeckt ", wobei 'Blah' ein Code ist, den Sie sechs Monate zuvor selbst geschrieben haben.
Als ich zur Arbeit kam, überprüfte ich sofort die Änderungsprotokolle und entdeckte, dass jemand aus einem anderen Team - jemand, dem wir vertrauten, um Änderungen am Produkt vorzunehmen - meinen Code ausgecheckt, eine Reihe von Einstellungen der Sicherheitsregistrierungsschlüssel ohne triftigen Grund geändert, ihn wieder eingecheckt und nie eine Codeüberprüfung durchgeführt oder jemanden darüber informiert hatte. Bis heute habe ich keine Ahnung, was er sich dabei gedacht hat; kurz darauf verließ er das Unternehmen. (Aus eigenem Antrieb.)
(UPDATE: Ein paar Antworten auf die in den Kommentaren aufgeworfenen Fragen:
Zunächst möchte ich darauf hinweisen, dass ich die wohlwollende Position vertrete, dass die Änderungen an den Sicherheitsschlüsseln unbeabsichtigt waren und auf Unachtsamkeit oder Unkenntnis und nicht auf Böswilligkeit beruhten. Ich habe keine Beweise für das eine oder das andere und glaube, dass es klug ist, Fehler der menschlichen Fehlbarkeit zuzuschreiben.
Zweitens sind unsere Abfertigungssysteme heute viel, viel leistungsfähiger als noch vor zwölf Jahren. So ist es heute beispielsweise nicht mehr möglich, Code einzuchecken, ohne dass das Checkin-System die Änderungsliste per E-Mail an interessierte Parteien sendet. Insbesondere bei Änderungen, die erst spät im Entwicklungszyklus vorgenommen werden, gibt es eine Menge "Prozesse", die sicherstellen, dass die richtigen Änderungen vorgenommen werden, um die Stabilität und Sicherheit des Produkts zu gewährleisten).
Der Fehler bestand darin, dass ein Objekt, dessen Verwendung im Internet Explorer NICHT sicher war, versehentlich als "sicher für die Skripterstellung" freigegeben worden war. Das Objekt war in der Lage, Binärdateien - in der Tat Bibliotheken vom Typ OLE Automation - an beliebige Speicherorte zu schreiben. Dies bedeutete, dass ein Angreifer eine Typbibliothek erstellen konnte, die bestimmte Zeichenfolgen von schädlichem Code enthielt, sie in einem Pfad speichern konnte, der ein bekannter ausführbarer Speicherort war, ihr die Erweiterung von etwas geben konnte, das die Ausführung eines Skripts bewirken würde, und hoffen konnte, dass der Benutzer den Code irgendwie versehentlich ausführen würde. Mir ist kein erfolgreicher "realer" Angriff bekannt, der diese Schwachstelle ausnutzte, aber es war möglich, einen funktionierenden Exploit zu erstellen.
Wir haben dafür verdammt schnell einen Patch veröffentlicht, das kann ich Ihnen sagen.
Ich habe viele weitere Sicherheitslücken in JScript verursacht und anschließend behoben, aber keine von ihnen hat auch nur annähernd so viel Aufmerksamkeit erregt wie diese eine.