Tim Pritlove
👤 SpeakerAppearances Over Time
Podcast Appearances
Also Fehler dabei.
Oder du sagst, ich brauche diesen Speicher nicht mehr.
Ich brauche das nicht mehr.
Ich überschreibe das jetzt.
Ich gebe das jetzt frei.
Da kann das Programm jetzt andere Dinge hinschreiben.
Und dann liest du aber nochmal an der Stelle.
Weil du sagst, der Programmfluss, der
dich in seiner Komplexität überfordert hat, sodass du irgendwann etwas liest, obwohl das Programm das quasi schon wieder gesagt hat, diesen Speicher dürfen jetzt andere hinschreiben.
Und durch so etwas passieren dann so Sachen wie Hardbleed, war auch so ein klassischer Speicherverwaltungsfehler, wo du Sachen gelesen hast oder ausgeben konntest, die halt schon wieder freigegeben, also quasi free waren und so weiter und so fort.
Und diese spezifische Art von Fehler ist leicht zu machen und teilweise auch leicht zu finden.
Es sei denn, die Bedingungen und die Verästelungen im Code, um an diese Stelle zu kommen, dass du dort diesen Speicher, dass der sich nicht so verhält, wie du als programmierende Person unter allen Bedingungen, in denen sich das Betriebszuständen, in denen sich das Programm befinden kann, ausgegangen bist und dass du immer denkst, okay, es kann nur so groß sein, ich reserviere jetzt hier so ein bisschen Speicher, diese Art von Fehler, ähm,
Zu finden und zu vermeiden ist eine sehr häufige Tätigkeit des Code Audits, wo also jemand oder ein Programm oder ein Mensch den Code liest und guckt, ob alle Annahmen, die zu einem gewissen Zeitpunkt über den Speicherzustand, seine Reservierungen, seine Größen und so weiter getroffen wurden, auch zu jedem Zeitpunkt noch gelten.
Und diese spezifische Fähigkeit haben sie jetzt hier geprüft mit eben sehr beeindruckenden Ergebnissen.
Und was ich glaube, was an den Ergebnissen beeindruckend ist, ist A, wenn 27 Jahre lang diesen Fehler in der Speicherverwaltung niemand gefunden hat,
heißt das nicht, dass 27 Jahre lang Menschen danach gesucht haben, aber es heißt auf jeden Fall, dass halt er nicht besonders trivial zu finden war.
Weil wenn er trivial zu finden gewesen wäre, hätte ihn zwischendurch irgendwann mal jemand gefunden.
Ähnlich ist es mit diesen ganzen Browser-Geschichten.
Browser sind inzwischen so unglaublich komplexe
Betriebssysteme eigentlich schon.