Was würden Sie denken, wenn Sie die Firmware für einen Mikrocontroller wegen einer kleinen Änderung neu mit einer neuen Version des Ihnen vertrauten Entwicklungssystems kompilieren und Ihnen Ihre Elektronik anschließend bei einer bestimmten Situation quasi um die Ohren fliegt?

So geschehen bei einem Elektroniker, der in dieser letzten Märzwoche an seinem selbstgebauten Segway-Clone herum optimierte (sein Name ist der Redaktion bekannt). Er jedenfalls analysierte das Problem und stellte fest: Bascom verrechnet sich gelegentlich! Der eigenartige Fehler entsteht z. B. bei folgender Fließkomma-Multiplikation:

Dim A As Single
A = 10
Do
   A = A * 0.9
Loop

Nach genau 853 Schleifendurchgängen gibt es den ersten Fehler: A enthält „NAN“. Nach weiteren hunderten Durchläufen enthält A dann plötzlich einen großen Wert. Der Fehler ist gemeldet und der Entwickler von Bascom, Mark Albers, sucht bereits die Ursachen. Er hat das baldige Erscheinen der gefixten Version 1.4.14 sogar schon angekündigt.

Doch ganz so einfach ist das nicht. Seit Edward Snowden wissen wir, dass ein Verdacht ja nicht schon deshalb absurd ist, weil er paranoid klingt. Also stellt sich die Frage, wie so ein Bug in eine ansonsten so stabile Entwicklungsumgebung hineinkommt. Ein Detektiv fragt dann „qui bono?“

Man rufe sich ins Gedächtnis, was mit Mikrocontrollern so alles gemacht wird: nicht nur Kaffee- und Waschmaschinen gesteuert nämlich, sondern auch sicherheitsrelevante Infrastruktur! Und da es nicht funktioniert, direkt Applikationen z. B. für AVR-Controller mit einem Wurm infizieren zu wollen, wie weiland bei Stuxnet und den Siemens-Steuerungen im Iran, da selbst die ans Internet angebundenen 8-bit-Controller viel zu wenig Speicher dafür mitbringen, liegt die Infiltrierung des Codes von Entwicklungsumgebungen ja auf der Hand.
Der Bug in Bascom ist sicherlich schnell Vergangenheit. Aber ob das alles war und nicht schon etliche andere Toolbox-Chains für andere Controller-Familien ebenfalls betroffen sind?

Mit analoger Elektronik wäre das nicht passiert!