Sichere Softwareentwicklung für speicherprogrammierbare ...€¦ · SCADA -System werden Werte...

26
Werkzeugunterstützung für sichere Software 1 Sichere Softwareentwicklung für speicherprogrammierbare Steuerungen Von Nico Bertram

Transcript of Sichere Softwareentwicklung für speicherprogrammierbare ...€¦ · SCADA -System werden Werte...

Werkzeugunterstützung für sichere Software

1

Sichere Softwareentwicklung für speicherprogrammierbare Steuerungen

Von Nico Bertram

Werkzeugunterstützung für sichere Software Gliederung

• Einleitung

• Grundlagen

• Softwareentwicklung für SPSen

• Angriffsmöglichkeiten

• Fazit

2

Werkzeugunterstützung für sichere Software Einleitung

• SPS zentrales Element zur Regulierung automatischer Prozesse

• Zugriff übers Internet

• Angreifbar von Außen

• Folgen: Zerstörung von Maschinen & Gefahr für Menschen

Erkennen und Beheben von Sicherheitslücken

3

Werkzeugunterstützung für sichere Software SPS - Daten

• Im Jahr 1968 von General Motors entworfen

• Anforderungen: zuverlässig, umprogrammierbar, preisgünstig

• Steuerung des Maschinenverhaltens in industriellen Anlagen

• Erfassen des aktuellen Zustands durch Sensoren

• Berechnen des Ausgabezustands und Weitergeben an die Aktoren

4

Quelle: https://upload.wikimedia.org/wikipedia/commons/2/23/Siemens_Logo.jpg

Werkzeugunterstützung für sichere Software Sensoren & Aktoren

• Sensoren:

• Erfassen des aktuellen Zustands einer Anlage

• Umwandeln von physikalische in elektrische Signale

• Aktoren:

• Regelung einer Anlage

• Umwandeln von elektrische in physikalische Signalen

5

Quelle: http://www.conrad.de/ce/de/product/502254/Temperatursensor-NTC-94082-TT-Electronics-AB-9408200910-40-155-C-Gehaeuseart-Einschraubgehaeuse-M12-x-15

Quelle: https://www.fte.de/produkte/getriebe-und-antriebsstrang/hydrostatischer-aktuator-cpx-einheit/elektrohydraulischer-aktor-fuer-nkw.html

Werkzeugunterstützung für sichere Software SPS - Beispiel

6

Quelle: https://upload.wikimedia.org/wikipedia/commons/thumb/0/0c/SCADA schematic overviews.svg/2000px-s.svg.png

Werkzeugunterstützung für sichere Software SPS - Beispiel

7

Quelle: https://upload.wikimedia.org/wikipedia/commons/thumb/0/0c/SCADA schematic overviews.svg/2000px-s.svg.png

Werkzeugunterstützung für sichere Software SPS - Beispiel

8

Quelle: https://upload.wikimedia.org/wikipedia/commons/thumb/0/0c/SCADA schematic overviews.svg/2000px-s.svg.png

Werkzeugunterstützung für sichere Software SPS - Beispiel

9

Quelle: https://upload.wikimedia.org/wikipedia/commons/thumb/0/0c/SCADA schematic overviews.svg/2000px-s.svg.png

Werkzeugunterstützung für sichere Software SPS - Aufbau

10

Quelle: Günter Wellenreuther und Dieter Zastrow. Automatisieren mit SPS Theorie und Praxis. Vieweg, Wiesbaden, 2005.

Werkzeugunterstützung für sichere Software SCADA - Daten

• Supervisory Control and Data Acquisition (SCADA)

• Software-Schicht, überwacht Hardware-Komponenten

• Sammeln und Auswerten von Daten

• Benutzerschnittstelle, Präsentation und Eingreifen in Ablauf

• Fernbedienungsterminals als Bindeglied zu Hardware-Komponenten

11

Werkzeugunterstützung für sichere Software SCADA - Grafik

12

Quelle: https://upload.wikimedia.org/wikipedia/commons/thumb/0/0c/SCADA schematic overviews.svg/2000px-s.svg.png

Werkzeugunterstützung für sichere Software Norm IEC 61131-3

• Festlegen mehrerer Programmiersprachen

• Ziel: Herstellerunabhängigkeit & effizientere Ausbildung von Fachkräften

• Zwei Programmiersprachentypen: grafisch und textbasiert

• Gemeinsame Konventionen

• Schlüsselwörter

• Datentypen

• Kommunikationsmodelle

• Deklaration von Variablen

13

Werkzeugunterstützung für sichere Software Kontaktplan-Beispiele

14

Nach: https://upload.wikimedia.org/wikipedia/commons/1/15/Kontaktplan Software.svg

Werkzeugunterstützung für sichere Software Threat Modeling

• Einsatz in früher Softwareentwicklungsphase

• Erkennen und Beheben von Sicherheitsrisiken

• Attack-Tree-Verfahren

15

Quelle: https://www.schneier.com/paper-attacktrees-ddj-ft.html

Werkzeugunterstützung für sichere Software Fuzzing

• Anwendung in späterer Softwareentwicklungsphase

• Erkennen von Sicherheitsrisiken durch Fehler bei Implementierung

• Software wird als Black Box betrachtet

• Provozieren von Sicherheitsrisiken durch spezielle Daten

• Überwachung durch Monitoring-Tools und Analyse

• Benutzen von mehreren Fuzzern

16

Werkzeugunterstützung für sichere Software MODBUS-Daten

• Viele Kommunikationsprotokolle für geschlossene Netzwerke entwickelt

• Heutzutage erhebliche Sicherheitsrisiken

• MODBUS-Protokoll: Kommunikation mit SPSen

• Client-Server Architektur

• Nachrichten teilen SPS durch Funktionscode auszuführende Aktion mit

• Abbruch der Kommunikation nach einem Nachrichtenaustausch

17

Werkzeugunterstützung für sichere Software MODBUS-Sicherheitsrisiken

• Keine Verschlüsselung

• Keine Integrität

• Keine Authentifizierung

SPSen lassen sich manipulieren

• Gegenmaßnahmen: Verschlüsselung, Firewalls, Systeme zur Eindringlingserkennung

18

Werkzeugunterstützung für sichere Software Heap-Overflow

• Möglichkeit direkten Zugriff auf ein SCADA-System zu erhalten

• Überschreiben von Zeigern im Heap

• Überschreiben der Fehlerbehandlungsroutine für Zugriffsverletzungen

• Freigeben von Speicherplatz führt zu Zugriffsverletzung

• Fehlerbehandlung wird aufgerufen

• Shell um Zugriff auf SCADA-System zu erhalten kann aufgerufen werden

19

Werkzeugunterstützung für sichere Software Stuxnet-Daten

• Computerwurm

• Im Juni 2010 entdeckt

• Attackieren und Infizieren von SPSen

• Vermutung: Ziel Nuklearprogramm von Iran zu sabotieren

• Entwicklung möglicherweise durch Kooperation der USA und Israel

• Bis zur Entdeckung 1.000 Zentrifugen in Natanz (Iran) zerstört

20

Werkzeugunterstützung für sichere Software Stuxnet-Verbreitungsmöglichkeiten

• Über USB-Massenspeicher:

• Stuxnet wird auf Festplatte kopiert

• Ausnutzen von Sicherheitslücken

• Bei Zugriff: Starten von Stuxnet

• Über WinCC:

• Suchen nach Computern, die WinCC installiert haben

• Verbinden durch einprogrammiertes Passwort

• Hochladen und Ausführen von Stuxnet durch Datenbankbefehle

21

Quelle: http://www.cs.arizona.edu/~collberg/Teaching/466- 566/2012/Resources/presentations/2012/topic9-nal/report.pdf

Werkzeugunterstützung für sichere Software Stuxnet-Funktionen

• Updates durch Kommunikation mit anderen von Stuxnet infizierten Rechnern

• Kommunikation mit zwei Servern

• Verschicken von Informationen über infizierten Rechner

• Updates von den Entwicklern

• Erhalten von ausführbarer Software

• Installieren von zwei Treibern:

• Dateien werden vor Nutzer versteckt (Rootkit)

• Stuxnet wird beim Booten ausgeführt

22

Werkzeugunterstützung für sichere Software Stuxnet-Angriff

• STEP 7 muss auf infiziertem Rechner installiert sein

• Requestnachrichten werden manipuliert

• Stuxnet wird auf SPS geladen

• Nur SPSen die Zentrifugen regulieren werden infiziert

• In Zeitabständen werden Rotoren der Zentrifuge stark beschleunigt oder stark verlangsamt

Zentrifugen werden zerstört

• SCADA-System werden Werte angezeigt, die in normalem Funktionsbetrieb aufgezeichnet wurden

23

Werkzeugunterstützung für sichere Software Fazit

• Kontrolle durch Heap-Overflow

Speicherbereiche überwachen

• Angriffe von Außen

Firewalls

• Sicherheitsmängel bei Kommunikationsprotokollen

Untersuchen und Beheben

• Sicherheitsmängel in Softwareentwicklungen

Einsetzen von Verfahren zur Erkennung

Entwickler müssen sich Gefahren bewusst werden

24

Werkzeugunterstützung für sichere Software Quellen (1/2)

• Werner Braun. Speicherprogrammierbare Steuerungen. Vieweg, Wiesbaden, 2005.

• Eric J. Byres. The Use of Attack Trees in Assessing Vulnerabilities in SCADA Systems. http://www.ida.liu.se/labs/rtslab/iisw04/camready/SCADA-Attack-Trees-Final.pdf, Abgerufen am 29. April 2015.

• Nicolas Falliere, Liam O Murchu, and Eric Chien. W32.Stuxnet Dossier, Februar 2011. http://www.symantec.com/content/en/us/enterprise/media/security_response/whitepapers/w32_stuxnet_dossier.pdf, Abgerufen am 15. Mai 2015.

• Brendan Galloway and Gerhard P. Hancke. Introduction to IndustrialControl Networks. http://www.rdblog.org.uk/Preprint-GallowayHancke-IndustrialControlSurvey.pdf, Abgerufen am 15. Mai 2015.

• Lenze. Einführung in die IEC 61131-3 Programmierung, 2003. http://download.lenze.com/TD/DDS Drive%20PLC%20Developer%20Studio%20IEC61131-3%20programming v2-0 DE.pdf, Abgerufen am 06. Juli 2015.

• Paul Mueller and Yadegari Babak. The Stuxnet Worm. http://www.cs.arizona.edu/~collberg/Teaching/466566/2012/Resources/presentations/2012/topic9-nal/report.pdf, Abgerufen am 29. April 2015.

25

Werkzeugunterstützung für sichere Software Quellen (2/2)

• Hartmut Pohl. Kostengünstige Identifizierung bisher nicht erkannter Sicherheitslücken mit Threat Modeling, Static Source Code Analysis und Fuzzing, Januar 2013. http://softscheck.com/publications/softScheck%20Pohl%20Kostenguenstige%20Identizierung%20von%20Sicherheitsluecken%20WP%2013011%20nal.pdf, Abgerufen am 15. Mai 2015.

• Bruce Schneier. Attack Trees, Dezember 1999. https://www.schneier.com/paper-attacktrees-ddj-ft.html, Abgerufen am 15. Mai 2015.

• Eyal Udassin. Control System Attack Vectors And Examples, 2008. http://www.c4-security.com/SCADA%20Security%20%20Attack%20Vectors.pdf, Archivierte Version vom 2. August 2012.

• Martin Vollmer. Sensoren & Aktoren. http://www.fstintranet.de/elp/kfz-pool/kfz-el/7_sensoren u_aktoren.pdf, Abgerufen am 10. Juni 2015.

• Günter Wellenreuther und Dieter Zastrow. Automatisieren mit SPS Theorie und Praxis. Vieweg, Wiesbaden, 2005.

26