Interview mit Christoph Engelbert

Security im Internet of Things: „Es gibt keinen besseren Weg, als immer wieder zu testen“
Keine Kommentare

Mittlerweile gibt es in fast jedem Haushalt miteinander vernetzte Geräte und die Quote steigt rasant an. Zeit, sich über die Sicherheit im Internet of Things Gedanken zu machen. Wir haben Christoph Engelbert, Co-Founder von clevabit, dazu befragt, welche Maßnahmen man ergreifen sollte, um ein solides Grundgerüst im Security-Bereich aufstellen zu können. Im Interview sprach er zudem darüber, ob man das Thema Gefahrenprävention besser direkt in der Hardware oder doch eher auf Softwareseite angehen sollte.

JAXenter: Hallo Christoph und danke, dass du dir die Zeit für das Interview genommen hast. Das Internet der Dinge ist von Natur aus anfälliger für Angriffe von außen als andere Systeme: Dabei sind viele Geräte, die alle unterschiedliche Schwachpunkte haben, entweder miteinander oder mit der Cloud verbunden. Gibt es irgendwelche Grundregeln, die man im Hinterkopf haben sollte, wenn man eine IoT-Infrastruktur aufbauen möchte?

Christoph Engelbert: Es geht nicht nur um die vielen verschiedenen Geräte. Das Problem steckt viel tiefer. Wenn es ein Problem oder eine Lücke in einem System gibt, dann hat man viele Tausend Geräte mit Schwachstellen draußen und Software-Updates neigen dazu, einige Zeit bis zur Fertigstellug in Anspruch zu nehmen. Oftmals ist eine der Voraussetzungen, dass ein Update absolut solide und stabil sein muss. Denn man stelle sich ein Update vor, das Geräte beschädigt, die man nicht einfach so erreichen kann und die die Leute dann nicht wieder zum Laufen bekommen können.

Wie auch immer, generell zum Thema Sicherheitsregeln ist zu sagen: Es kommt auf das System drauf an. Es gibt allerdings einen Satz Basisregeln, welche zwar dem gesunden Menschenverstand entsprechen aber oft vergessen oder missachtet werden, weil es während der Entwicklung einfach bequemer ist.

Wenn ein System auf Linux oder FreeBSD aufbaut, sollte man die Applikation nicht als „root“ ausführen.

1. Wenn ein System auf Linux oder FreeBSD aufbaut, sollte man die Applikation nicht als root ausführen. Welche Überraschung! Aber Spaß beiseite, das sollte man wirklich nicht machen. Aus den gleichen Gründen, die für Server und Desktops gelten.

2. Zusätzlich sollte man nur auf das System ziehen, das man wirklich braucht. Software, die nicht zwingend notwendig ist, sollte weggelassen werden. Die sicherste Software ist die, welche nicht auf dem System liegt. Außerdem werden Kunden die kleineren Downloads lieben.

3. Ports sollten geschlossen bleiben. Ports sollten nur für das Nötigste geöffnet sein. IPtables oder andere Firewalls sollten den Zugang zu allen anderen Ports aktiv verhindern. Immerhin könnte ein Bug im Kernel selbst existieren.

4. Da wir gerade vom Kernel reden: Immer darauf achten, dass man eine stabile, aber auch aktuelle Version benutzt. Ich weiß, dass das manchmal hart ist. Viele Firmen bieten nur super alte Kernelversionen an, aber man muss es trotzdem versuchen. Weiterhin sollte man alles vom Kernel entfernen, das unwichtig ist. Aus denselben Gründen wie oben: Was nicht existiert, kann keinen Schaden verursachen.

5. Entfernt root-Log-ins an Debug-UART-Konsolen. Es macht keinen Unterschied, ob mit oder ohne Passwort. Wenn ich ein Gerät in die Finger kriege, kann ich den Flash auslesen, das Passwort knacken und bekomme so meinen Log-in. Wenn dann noch Telnet oder SSH offen ist, ist das sogar ein noch schlimmeres Szenario.

Es gibt noch sehr viel mehr, aber das sollte für eine recht gute Basis schon reichen.

JAXenter: IoT-Sicherheit kann man auf verschiedenen Leveln erreichen: auf Ebene der Hardware oder Software. Es ist offensichtlich, dass man auf beide Teile aufpassen muss. Kannst du Beispiele nennen, wie man an das Thema Sicherheit auf einem Hardware-, bzw. auf einem Software-Level herangehen kann?

Christoph Engelbert: Beide Level sind wichtig. Für Software gilt, was ich bisher schon gesagt habe, plus einiges mehr. Das typischste an der eigenen Applikation ist, dass man nicht den Nutzerinformationen vertrauen darf. Man nimmt nicht einfach die Informationen und lässt sie als Befehl auf einer Shell laufen. Man testet und verifiziert sie und verwirft sie, falls sie nicht dem entspricht, was man erwartet hat. Benutzt Character Escaping oder, noch besser: verwendet Prepared Statements. Das sind Dinge, von denen wir schon hunderte Male gehört haben.

Firmen versuchen oft, den Diebstahl geistigen Eigentums zu verhindern, vergessen dabei aber die Möglichkeit des Reverse Engineering der Firmware.

Auf dem Hardwarelevel wird es dann interessanter. Normalerweise kann man hier als Software- oder Hardwareentwickler selbst nicht wirklich etwas machen. Allerdings bieten eine Reihe von Chipentwicklern „fertige“ Lösungen an. Nichtsdestotrotz: Das benötigte Niveau an Hardwareschutz hängt von dem System ab, das man entwickelt. Firmen versuchen oft, den Diebstahl geistigen Eigentums zu verhindern, vergessen dabei aber die Möglichkeit des Reverse Engineering der Firmware und dass Angriffe gegen die eigene Umgebung gefahren werden oder die eigenen Geräte für eine DDoS-Attacke gegen Dritte eingesetzt werden können. Auf dem Hardwarelevel bieten TPMs, ob verhasst oder nicht, eine großartige Möglichkeit, Verschlüsselungs- und Authorisierungscode zu speichern. Indem man Client-Zertifikate benutzt, kann man diese TPMs zur Authentifizierung gegen eigene Services verwenden und man kann sie verwenden, um Software zu entschlüsseln, Updatepakete zu verifizieren und vieles, vieles mehr.

Der wichtigste Faktor aber könnte eine Art Secure Boot oder Measured Boot sein. In dem Fall kennt die CPU einen öffentlichen Schlüssel einer Elliptic Curve (EP) oder eines RSA-Paares. Dieses verwendet man, um den eigentlichen Bootloader oder die Firmware zu signieren. Bevor man irgendetwas ausführt, verifiziert die CPU die Signatur des Bootloaders und stellt sicher, dass er vom Hersteller selbst signiert wurde. Dann verifiziert der Bootloader den Kernel und das Dateisystem und so weiter. Die Idee dahinter ist, eine Vertrauenskette zu erreichen, welche den ganzen Weg von der CPU bis zum Ausführen von Treibern und Applikationen verifiziert. Das eliminiert die meisten Angriffsflächen durch gefälschte Firmwareupdates. Zusammen mit der leider häufig fehlenden Serververifizierung (ja man kann Serverzertifikate verifizieren /sarcasmoff) und dem Signaturencheck der Firmwareupdates kann man recht effektiv verhindern, dass nicht-offizielle Firmware installiert oder ausgeführt wird.

Je nach Bedarf gibt es andere Maßnahmen, aber ich glaube, das würde jetzt zu weit reichen.

JAXenter: Um sicher zu gehen, dass das System sicher ist, muss man es testen. Gibt es irgendeine Testmethode, die sehr gut im Zusammenhang mit IoT funktioniert?

Christoph Engelbert: Ganz offensichtlich: Die eigenen Tests zuerst laufen lassen. Weiterhin Werkzeuge benutzen, um in „das eigene System“ einzudringen. Die allgemein bekannten Pentesting-Werkzeuge sind ein guter Anfang. Leider sind mir keine Tools bekannt, die speziell für IoT ausgelegt sind. Vielleicht vergesse ich irgendetwas oder wir haben eine Marktlücke gefunden. 😊

Je nachdem, welche Services man verwendet, sind OpenVAS oder Metasploit gute erste Anhaltspunkte. Ganz besonders, wenn man Webservices, wie zum Beispiel ein Admin-Dashboard auf dem Gerät ausführt. Es gibt eine Vielzahl an Open-Source-Lösungen, kostenlos oder zum Bezahlen. Da muss man schauen, was am besten zum Bedarf passt.

Je nachdem, welche Services man verwendet, sind OpenVAS oder Metasploit gute erste Anhaltspunkte.

Der zweite Schritt ist, eine externe Firma zu beauftragen, Pentests laufen zu lassen. Nicht nur gegen die Cloud-Infrastruktur, sondern auch gegen die Geräte. Dafür kann man Hackergruppen wie den CCC (Chaos Computer Club) um Hilfe bitten. Hier gibt es eine Menge sehr fähiger Leute. Denen kann man Kompensation anbieten und andere „Kleinigkeiten“. Zum Beispiel, dass sie die Geräte behalten dürfen. Der Punkt ist, man muss ihnen zuhören, sie ernst nehmen, auf ihre Fragen und Entdeckungen reagieren!

Ach ja, und im Allgemeinen sollte man darauf achten, möglichst schnell auf Sicherheitsprobleme oder gefundene Schwachstellen zu reagieren. Es ist eine schlechte Angewohnheit, jede Vermutung, es könne etwas schief laufen direkt vom Tisch fegt. Man muss jede Anfrage ernst nehmen. Lass deine Helfer wissen, dass du es dir ansiehst und antworte in angemessener Zeit. Erwarte nicht von ihnen, dass sie Monate auf eine Antwort zu einem Sicherheitsproblem warten. Und zu guter Letzt, arbeite mit ihnen zusammen. Lass dir ihre Entdeckungen zeigen, lass dir erklären, wie sie etwas gemacht haben, lobe sie und erweise ihnen Respekt. Lass sie auch auf Konferenzen davon berichten. Hilfe zur Selbsthilfe.

Hat man tatsächlich eine Schwachstelle im System, macht die eigene Marketingabteilung nichts glücklicher, als wenn jemand sie findet und danach ein öffentliches Statement abgibt im Stile fvon: „Ich habe es ihnen gesagt, sie haben super reagiert und das Problem erkannt und gefixt“. Alternativ verbreitet sich auch ein schlechter Umgang mit diesen Situationen wie ein Lauffeuer.

JAXenter: Wie kann man sicherstellen, dass Updates auf einem Gerät oder einer Komponente nicht das System komplett wieder öffnet?

Solange man alle nicht-essentiellen Komponenten entfernt, ist man schon einen Schritt weiter als der Großteil der Konkurrenten.

Christoph Engelbert: Es gibt keinen besseren Weg, als immer wieder zu testen. Man muss einfach erneut eine Firma einen Pentest laufen lassen und dann andere versuchen lassen, in das System einzudringen.

Aber wie gesagt, solange man das absolute Minimum auf dem Gerät installiert und alle nicht-essentiellen Komponenten entfernt, ist man schon einen Schritt weiter als der Großteil der Konkurrenten.

Es gibt einfach keinen Grund, warum eine Lampe einen Telnet- oder SSH-Service laufen lassen sollte.

JAXenter: Gibt es irgendwelche Werkzeuge oder Open-Source-Komponenten, die du für ein sicheres IoT-System empfehlen kannst?

Christoph Engelbert: Wie schon gesagt, leider sind mir bisher keine Werkzeuge speziell für IoT-Sicherheit bekannt. Ich wäre allerdings glücklich, wenn jemand so etwas kennt und die Information teilt.

Die üblichen Tools zum Pentesting bieten einen großartigen Start. Wenn du die Möglichkeit hast, dann engagiere jemanden mit den Hobbies Reverse Engineering und in IoT-Geräte einzudringen. Nirgendwo bekommt man mehr Kenntnisse und einen tieferen Einblick.

JAXenter: Vielen Dank für dieses Gespräch!


Christoph Engelbert is a passionate developer with a deep commitment for Open Source and intense interest in reverse engineering devices and protocols, as well as security mechanisms. Mostly rooted in the Java / JVM space, he’s working with plenty of other languages, choosing the right tool for the job. With his co-founded company clevabit he develops an IoT platform to better the conditions of lifestock and meat quality for customers. With Instana’s Developer Relations team, he shows developers the need of automatic monitoring and distributed tracing, when building highly distributed systems.
Unsere Redaktion empfiehlt:

Relevante Beiträge

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu:
X
- Gib Deinen Standort ein -
- or -