Die Open-Source-Community und Heartbleed

19.04.14

Vor ein paar Wochen wurde mit Heartbleed wahrscheinlicher einer der schlimmsten Bugs seit langem bekannt. So schlimm der Bug an sich auch ist, so konnte ich mir ein böses Lächeln einfach nicht verkneifen, weil dieser Bug der Open-Source-Community endlich mal eine Dosis Realität ins Gesicht geschüttet hat.

So lange ich nämlich zurückgedenken kann, hat mich Open Source immer wieder an eine Art Ideologie erinnert, deren Jünger nicht müde wurden die Heilskunde von der Überlegenheit des eigenen Glaubens zu erzählen. Open Source ist besser weil Offen, Open Source ist Besser weil jeder mitmachen kann, Open Source ist besser weil kostenlos, Open Source ist besser weil nicht Closed Source. Ob die Überzeugungen durch die Realität gedeckt wurde war in und ist oft egal gewesen. Und es stimmt ja absolut, dass Open Source kostenlos ist, frei verfügbar und jeder mitmachen kann wenn er will. Ob das alleine eine Sache besser macht sei mal dahingestellt. Das hat jedoch viele der Community nicht davon abgehalten, mit einer leicht arroganten Art durch die Welt zu laufen, die mich schon immer unglaublich genervt hat. Das ist vergleichbar mit den Menschen, die meinen etwas besseres zu sein, nur weil sie im Supermarkt um die Ecke Bio-Produkte kaufen.

In einem Punkt habe ich aufgrund eines Gefühls jedoch nie die Meinung der Open-Source-Community geglaubt und dass ist die Behauptung, dass Open-Source-Programme grundsätzlich sicherer oder besser sind, weil sie eben offen einsehbar sind und damit jeder prüfen kann, ob auch alles in Ordnung ist. Für viele Jahre wusste ich jedoch nicht, wie ich das Gefühl in Worte fassen kann.

Jetzt kann ich es.

Es gibt nämlich einen fundamentalen Irrtum, den viele – nicht alle – in der Open-Source-Gemeinde zu haben scheinen: Nur weil Code offen einsehbar ist, heißt das noch lange nicht, dass ihn jeder liest oder lesen will. Im Gegenteil, nur wenige wollen das. Und wenn es die Wenigen tun, dann heißt das noch lange nicht, dass sie auch verstehen, was sie vor sich haben.

Ich bin zwar in der Programmierung nicht gänzlich unbewandert, aber weit von einem Profi entfernt. Meine Programme sind also bestenfalls amateurhaft. Trotzdem ist es mir immer wieder passiert, dass ich wenige Wochen später meinen eigenen Code nicht mehr verstanden habe und mich erst einmal wieder langsam eindenken musste. Wieso meint also jemand, dass dies bei einem komplexen Programm anders sein soll?

Ein anderes fundamentales Problem tritt ebenfalls an dieser Stelle zutage. Der Gedanke von Open Source ist ja, dass praktisch jeder auf der Welt ihn prüfen und gegebenenfalls korrigieren kann. Nun, mein Professor für BWL hat einmal sehr schön davon berichtet, dass viele Augen bei einem Projekt nicht zu einem besseren Ergebnis führen muss. Wieso? Ganz einfach:

Je mehr Menschen Verantwortung bei einem Projekt besitzen, desto weniger verantwortlich fühlt sich der Einzelne.

Ich bin der persönlichen Überzeugung, dass dieser gigantische Fuck-Up namens Heartbleed unter anderem auf genau diesen Umstand zurückgeführt werden kann. Man nehme einen Doktoranden, der einen Code geschrieben hat für OpenSSL. Er hat ihn sicher gut geprüft, aber nicht so ausgiebig wie erforderlich. Unbewusst (oder vielleicht bewusst) hat er sich aber nicht weiter darum gekümmert, denn der Code wird ja von anderen noch geprüft – ist ja schließlich Open Source, oder? Die Leute beim OpenSSL-Projekt, die ihn prüfen, unterlagen bewusst oder unbewusst der gleichen Fehleinschätzung: „Der Entwickler wird sich was dabei gedacht haben und es wird sicher laufen – und wenn nicht, dann wird es einer aus der Community schon merken.“ Die restliche Community unterlag ebenfalls diesem Trugschluss, nur auf globaler Ebene: „Es werden sicher schon hunderte den Code geprüft haben, also muss ich es nicht mehr machen. Das passt schon.“ So dachte jeder, dass alles perfekt sei, weil es sicher schon alle geprüft haben.

Wie gesagt, ich sehe die obige Option als die realistischte an, alles andere könnte ich nur noch als Form der Inkompetenz umschreiben, die ich der Open-Source-Community nicht zugetraut hätte.

Ich hoffe jedenfalls, dass die Open-Source-Gemeinde nun langsam auf den Boden der Tatsachen kommt (nein, nicht zurückkehrt, denn dort war sie noch nie) und sich ein wenig in Bescheidenheit übt. Dass sie erkennen, dass Open Source eben nicht einfach so perfekt ist, weil es Open Source ist und daher meinen allen anderen die Welt erklären zu müssen. Und wenn diese Erkenntnis nicht reift, tja, dann werde zumindest ich immer mit großen Genuss und mit großer Freude das Wörtchen „Heartbleed“ nennen. Den einen Bug, der der Open-Source-Gemeinde mal so richtig und mit Wucht die Hosen runtergezogen hat. Ich werde diesen einen Bug nennen, für den selbst die fanatischsten Verfechter keine Entschuldigung haben, weil es schlicht keine geben kann.

Denn das, was hier den Leuten im Gesicht explodiert ist, war nicht ein kleiner Bug in einem nebensächlichen Programm, das unwichtig in der Ecke liegt. Der Hartbleed Bug existierte zwei lange Jahre lang ungesehen und wahrscheinlich von der NSA mit Freuden ausgenutzt in OpenSSL, einem der zentralen Kernelemente wenn es um die Sicherheit der Menschen im Netz ging.

In puncto Sicherheit ist Heartbleed das Windows XP (bis etwa Service Pack 2) der Open-Source-Gemeinde.

Ich bin gespannt, ob sie was aus dieser Lektion macht.



Kommentar schreiben

Ich bin kein Spambot, sondern ein Mensch (Pflichtangabe)