Sichere Softwareentwicklung für speicherprogrammierbare ...€¦ · SCADA -System werden Werte...
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