Software-Design

Grundlagen der Sicherheit bei Embedded-Software

29.05.12 | Autor / Redakteur: David Kalinsky * / Franz Graser

Die Sicherheit eingebetteter Systeme ist unerbittlichen Attacken ausgesetzt. Darunter sind auch SCADA-Systeme (Supervisory Contron and Data Acquisition), die Industrieanlagen, Verkehrsnetze oder Kraftwerke überwachen und steuern.
Bildergalerie: 2 Bilder
Die Sicherheit eingebetteter Systeme ist unerbittlichen Attacken ausgesetzt. Darunter sind auch SCADA-Systeme (Supervisory Contron and Data Acquisition), die Industrieanlagen, Verkehrsnetze oder Kraftwerke überwachen und steuern. (Bild: Siemens-Pressebild/PSDgraphics)

Schutzmaßnahmen auf der Betriebssystem- und Hardwareebene gegen Hackerangriffe sind alles andere als perfekt. Daher müssen Entwickler selbst gegen Schwachstellen der Embedded-Software vorgehen.

Ich hatte mich auf eine Reise nach Lodz in Polen vorbereitet, der Stadt, in der meine Eltern als Kinder gelebt hatten. Ich war niemals zuvor dort gewesen. I

ch googelte den Namen der Stadt und stieß sehr schnell auf eine Geschichte, die überraschend und erschreckend war: Ein Schüler hatte eine TV-Fernbedienung so manipuliert, dass er damit die Straßenbahn der Stadt steuern konnte – und die Tram damit in eine riesige Modellbahnanlage verwandelte. Der Jugendliche veränderte mit seinem Infrarot-Spielzeug Weichenstellungen und brachte so einige Züge zum Entgleisen. In einem Fall wurden zwölf Menschen verletzt.

In jüngster Zeit haben Begriffe wie Stuxnet und Duqu Eingang in unseren Wortschatz gefunden. Die Sicherheit eingebetteter Systeme ist unerbittlichen Attacken ausgesetzt, darunter auch sogenannte SCADA-Systeme (Supervisory Contron and Data Acquisition), die Industrieanlagen, Verkehrsnetze oder Kraftwerke überwachen und steuern.

Viele Entwickler eingebetteter Software meinen, dass die Sicherheit der Systeme auf der Ebene des Systems Engineering gehandhabt werden sollte – oder von der Hardware, die die Software enthält. In der Tat kann vieles auf dieser Ebene erledigt werden, so zum Beispiel:

  • Sichere Netzwerkprotokolle
  • Firewalls
  • Datenverschlüsselung
  • Authentifizierung von Datenquellen
  • Hardware-assistiertes Monitoring des Kontrollflusses
  • Und Ähnliches.

Aber diese herkömmlichen Techniken reichen nicht aus. Das wurde beängstigend deutlich bei der letztjährigen Embedded Systems Conference in Boston in einem Vortrag zum Thema „Starke Verschlüsselung und korrektes Design sind nicht genug: Schützen Sie Ihr System vor Angriffen aus Seitenkanälen“ beschrieben. Der Referent skizzierte, wie Messungen des Stromverbrauchs, elektromagnetische Lecks, akustische Emissionen und Zeitmessungen Angreifern Informationen geben können, die dazu benutzt werden können, ein Gerät mit eingebetteter Software anzugreifen.

Klar ist, dass Verteidigungsmaßnahmen auf der System- der Hardwareebene nicht ausreichen. Viele Attacken nützen bekanntlich Schwachstellen in der Anwendungssoftware aus. Solche Lücken in unseren eingebetteten Systemen entstehen während des Designs und der Entwicklung der Software. Da Schutzmaßnahmen auf der System- und Hardwareebene alles andere als perfekt sind, müssen wir eine dritte Verteidigungslinie aufbauen, indem wir gegen Schwachstellen in unserer Anwendungssoftware vorgehen.

Natürlich wird die Verteidigungslinie in unserer Software nicht ganz perfekt sein. Das unmittelbare Ziel bei unserer Arbeit an dieser Verteidigungsstellung ist es, die Angriffsfenster, die in unserer Software existieren, zu reduzieren. Der erste Schritt ist es hier, wie ein Angreifer zu denken. Fragen Sie sich, wie ein Angreifer Ihr System und Ihre Software ausnützen könnte, um darin einzudringen.

Sie könnten dies als eine Bedrohungsanalyse ansehen. Benutzen Sie die Ergebnisse der Analyse dazu, um zu beschreiben, was Ihre Software nicht tun sollte. Sie könnten dies als „Missbrauchsfälle“ bezeichnen. Benutzen Sie diese Fälle, um zu planen, wie Ihre Software Attacken besser widerstehen, aushalten oder sich davon wieder erholen kann.

Angriffsfenster reduzieren

Vergessen Sie nicht, dass Angreifer bei eingebetteten Systemen einen großen Vorteil haben: Die meisten Embedded Systems sind bei der Ausführungszeit sehr eingeschränkt, oft müssen sie eine Mischung aus harten und weichen Echtzeitaufgaben erfüllen. Das zwingt uns, Anwendungssoftware zu entwerfen, die schlank und effektiv ist, etwa indem intensive Laufzeit- und Plausibilitätsprüfungen (zum Beispiel Assertions mit Invarianten) auf ein Minimum reduziert werden, um die Zeitbeschränkungen einzuhalten.

Unsere Angreifer haben keine solchen Beschränkungen in der Ausführungszeit: Sie sind zufrieden damit, Wochen oder Monate damit zu verbringen, ihre Attacken vorzubereiten und auszuführen – vielleicht probieren sie sogar ein und dieselbe Angriffsmethode mehrere Millionen Male aus und hoffen darauf, dass sie einmal Erfolg haben wird, oder sie versuchen jeden Tag eine andere Attacke, bis sie eines Tages auf ein offenes Angriffsfenster stößt.

Entwickler eingebetteter Software spielen das Security-Thema manchmal herunter und sagen: „Unser Gerät wird nie mit dem Internet oder einem anderen externen Kommunikationsnetz verbunden sein. Wir sind gegen Angriffe immun.“ Das ist leider nicht wahr. Erlauben Sie mir ein Gegenbeispiel:

Viele Geräte nutzen Analog-zu-Digital-Konverter (ADC) zur Sammlung von Daten. Die ADCs werden regelmäßig abgefragt, und die Applikation speichert die Datenpakete in einem Array. Die Applikation verarbeitet später diesen Daten-Array.

Aber ein Angreifer könnte dies aus einem ganz anderen Blickwinkel sehen, etwa so: „Was würde passieren, wenn ich den ADC mit elektrischen Signalen füttere, die einer exakten hexadezimalen Darstellung des Codes eines Schadprogramms entsprechen?“ Auf diese Weise kann der Angreifer seine Software in Ihren Rechner einschleusen. Ein Netzwerk oder das Internet ist dafür nicht nötig.

Inhalt des Artikels:

Kommentar zu diesem Artikel abgeben
Sehr geehrter Herr Kielmann: ein paar Worte der Erläuterung: Ziel des Artikels war es, die...  lesen
posted am 01.06.2012 um 15:38 von Unregistriert

Sie schreiben...Der Angreifer könnte nun darauf setzen, dass Ihre Software die ADC-Daten in einem...  lesen
posted am 31.05.2012 um 11:41 von jkie


Mitdiskutieren
copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Infos finden Sie unter www.mycontentfactory.de (ID: 33374870 / Software-Entwurf & Echtzeit-Design)

Embedded Software Engineering Report abonnieren

4 mal jährlich: Die kostenlose Pflichtlektüre für Embedded­-Software- und Systems-Entwickler, von Analyse bis Wartung und Betrieb

* Ich bin mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung und AGB einverstanden.
Spamschutz:
Bitte geben Sie das Ergebnis der Rechenaufgabe (Addition) ein.