Sicherheitslücken durch Programmierfehler

Slides:



Advertisements
Ähnliche Präsentationen
Introducing the .NET Framework
Advertisements

Entwicklung der Programmiersprachen
Eine Präsentation von Peter Rasser
CGI (Common Gateway Interface)
Programmbereich, zu dem eine Deklaration gehört Arten von Gültigkeitsbereichen -Namespace : Deklarationen von Klassen, Interfaces, Structs, Enums, Delegates.
WINLearn Technische Umsetzung. Basistechnologie Oberfläche in HTML JSP (JavaServerPages) zur Datenauswertung Datenhaltung: Datenbank oder Filesystem JDBC.
Pointer. Grundsätzliches: Im Arbeitsspeicher werden Daten gespeichert. Um auf die Daten eindeutig zugreifen zu können, werden diesen Daten Adressen zugeordnet.
Rechen- und Kommunikationszentrum (RZ) Sicherheitsorientierte Webentwicklung am Beispiel der Matse-Dienste Jan-Frederic Janssen.
Webdeployment auf Cluster Seminarvortrag von Lukas Bonzelett.
Funktionsweise eines Funambolservers Natascha Graf Aachen, 01. Februar 2010.
Kommunikation verbindet. Und wer verbindet die Kommunikation? COSYNUSconnect: Universeller Zugriff auf Unternehmensdatenbanken Ivan Dondras, IT-Consultant.
Programmierung unter VB.Net mit der IDE VisualStudio. Schritt für Schritt erklärt und beschrieben. Zielgruppe: Komplette Neueinsteiger mit fundiertem Computerwissen.
Patrick Richterich Lattwein GmbH Web Services Softwareentwicklung mit SOAP.
JAVA - Einführung. © Übersicht Hintergrund und Geschichte Wie sieht ein JAVA Programm aus ? Was ist ein JAVA Programm ? Wie schreibt/übersetzt.
MONITOR - Materialverfolgung...vom Lieferanten über den Wareneingang bis zum Kunden... weiter.
Präsentation Verwaltungssoftware für die Durchführung der Gesellenprüfung.
Programmierung unter VB.Net mit der IDE VisualStudio. Schritt für Schritt erklärt und beschrieben. Zielgruppe: Komplette Neueinsteiger mit fundiertem Computerwissen.
Zehn Schritte zu Linux Der Weg in eine andere Welt...
Erstellung performanter Webapplikationen mit Tntnet Schneller und sicherer durch compilierten Code im Web Tommi Mäkitalo.
Tobias Sammet 8DY1 Programmieren Tobias Sammet 8DY2 Programmierung ● = das Schreiben eines Computerprogramms ● Dient zur Lösung eines.
D-SQL Vom Datenbank-Container zur SQL Server-Datenbank
Graphik, Doku und Monitor für TWS
Der einfache Weg zur fehlerfreien JCL
Anforderungen an die neue Datenstruktur
Praktische Informatik 1
Blended Learning-Team
Eine Präsentation von Sandro Schluep und Leon Wink.
Präsentationen im alten Design
Wsl schon abgeschaltet Idee dahinter ist interessant und revolutionär
WS 2001/2002 Mehrbenutzerzugriff auf GIS-Daten
MS Excel-Datei Reparatur und Wiederherstellung
Angriffe gegen kryptografische Hash-Funktionen (SHA1, MD5)
Dialer, Viren und andere unerwünschte Gäste
POINT POWER Um ohne lange Umschweife zu erklären, was eine POWERPOINT-Präsentation ist, werde ich die folgende Einführung in das Thema Präsentationen bereits.
KI in Computerspielen Tactical and Strategic AI
Lernfeld 10 Cyberangriffe.
AURIS-MM Spezifikation
Willkommen bei INVIA World!
Die geschichtliche Entwicklung des Internets
Rheinland Cup + ClickBall Rheinland Cup
Das Strategie- System. Das Strategie- System Hintergrund für die Programmentwicklung Unternehmen unterscheiden den steuerlichen Bereich BWA Bilanzen.
So gelingt der digitale Wandel in einem Landwirtschaftsbetrieb
Bei dieser Präsentation wird sicher eine Diskussion mit dem Publikum entstehen, die zu Aktionsschritten führt. Verwenden Sie PowerPoint, um diese Aktionsschritte.
Citavi im Prozess der wissenschaftlichen Arbeit
Anpassen von Microsoft SharePoint Onlinewebsite
Übung: Star Wars - Erbaue eine Galaxie mit Hilfe von Code
Elektronische Post BBBaden.
Was tun nach der Matura?.
Wir sprechen Ihre Sprache.
Arten von Kontrollstrukturen
Willkommen bei PowerPoint
Klassenbibliotheken: Einbinden und Benutzen von Klassen
Diplomarbeit Thema Foto erwünscht Bearbeiter: Vorname Nachname
Programmiersprachen Tim, Luca, Ricky & Manuel.
Behalten Sie die Übersicht bei der Wartung Ihres Maschinenparks !
Datenstrukturen und Softwareentwicklung
9. Vererbung und Polymorphie
Präsentation von Darleen und Michèle
Google-Kalender Präsentation:
Einsatzmatrix 2.0.
Bugtracker Tool.
Statische und Nichtstatische Methoden Properties / Eigenschaften
Von Wietlisbach, Lenzin und Winter
IBM Software Cincom Systems Erwartete 20-prozentige Verkürzung der Markteinführungszeit mit dem IBM WebSphere Liberty-Profil Die Anforderung: Das für.
Datentyp- umwandlung.
SOFTWARE- UND WEB-LÖSUNGEN
Deutsche Internationale Abiturprüfung DIA
Einige Betrachtungen über das häusliche Konfliktpotential
Schmock Mutter nicht ausreichend versorgt  fast verhungert Mutter bei Geburt verstorben Schmock mit Flasche aufgezogen.
 Präsentation transkript:

Sicherheitslücken durch Programmierfehler - Buffer Overflow -

Pufferüberläufe (englisch buffer overflow) gehören zu den häufigsten Sicherheitslücken in aktueller Software, die sich u. a. über das Internet ausnutzen lassen können

Funktionsweise: Im Wesentlichen werden bei einem Pufferüberlauf (aufgrund von Fehlern im Programm) zu große Datenmengen in einen dafür zu kleinen reservierten Speicherbereich – den Puffer – geschrieben, wodurch nach dem Ziel-Speicherbereich liegende Speicherstellen überschrieben werden

Ein Pufferüberlauf kann u.a. zu folgenden Problemen führen: zum Absturz des betreffenden Programms zur Verfälschung von Daten zur Beschädigung von Datenstrukturen der Laufzeit-umgebung des Programms Durch Letzteres kann die Rücksprungadresse eines Unterprogramms mit beliebigen Daten überschrieben werden, wodurch ein Angreifer durch Übermittlung von beliebigem Maschinencode beliebige Befehle mit den Privilegien des für den Pufferüberlauf anfälligen Prozesses ausführen kann

Dieser Code hat in der Regel das Ziel, dem Angreifer einen komfortableren Zugang zum System zu ver-schaffen, damit dieser das System dann für seine Zwecke verwenden kann Pufferüberläufe in verbreiteter Server- und Clientsoftware werden auch von Internetwürmern ausgenutzt

Übertragung/Quelle: Neben Nachlässigkeiten bei der Programmierung werden Pufferüberläufe vor allem durch auf der Von-Neumann-Architektur basierende Computersysteme ermöglicht, nach der Daten und Programm im gleichen Speicher liegen Die Von-Neumann-Architektur (VNA) ist ein Referenz-modell für Computer, wonach ein gemeinsamer Speicher sowohl Computerprogrammbefehle als auch Daten hält Durch diese Hardwarenähe sind sie auch nur unter assemblierten oder kompilierten Programmiersprachen ein Problem

Übertragung/Quelle: Interpretierte Sprachen sind, abgesehen von Fehlern im Interpreter, in der Regel nicht anfällig, da die Speicher-bereiche für Daten immer unter vollständiger Kontrolle des Interpreters sind Die jedoch wesentlichste Ursache für Pufferüberläufe ist die Verwendung von Programmiersprachen, die nicht die Möglichkeit bieten, Grenzen von Speicherbereichen automatisch zu überwachen, um eine Bereichsüber-schreitung von Speicherbereichen zu verhindern

Übertragung/Quelle: Dazu gehört besonders die Sprache C, die das Haupt-gewicht auf Performance (und ursprünglich Einfachheit des Compilers) legt Die häufig verwendete Programmiersprache C++ bietet nur eingeschränkte Möglichkeiten zur automatischen Überprüfung von Feldgrenzen Die Wahl einer Programmiersprache bedeutet meist auch die Verwendung der entsprechenden Standard-bibliotheken Im Fall von C und C++ enthält die Standardbibliothek eine Anzahl von gefährlichen Funktionen, die zum Teil keine sichere Verwendung zulassen und zu denen meist keine Alternativen bestehen

Gegenmaßnahmen/Prävention: Mit dem Protected Mode, der beim 80286 eingeführt wurde, lässt sich durch die Segmentierung des linearen Speichers der Programm-, Daten- und Stapelspeicher physikalisch voneinander trennen Der Zugriffsschutz erfolgt über die Speicherver-waltungseinheit der CPU Das Betriebssystem muss nur sicherstellen, dass gleichzeitig nicht mehr Speicher zur Verfügung gestellt wird, als der lineare Adressraum groß ist

Gegenmaßnahmen/Prävention: Eine sehr nachhaltige Gegenmaßnahme besteht in der Verwendung typsicherer Programmiersprachen und -werkzeuge, wie zum Beispiel Java oder C#, bei denen die Einhaltung von zugewiesenen Speicherbereichen gegebenenfalls schon beim Übersetzen in Maschinen-sprache mit dem Compiler kontrolliert, aber spätestens zur Laufzeit mit entsprechendem Programmcode überwacht wird

Gegenmaßnahmen/Prävention: Bei der Erstellung von Programmen muss also auf die Überprüfung aller Feldgrenzen geachtet werden Fast ausgeschlossen sind Pufferüberläufe beispielsweise in der Programmiersprache Java, da die Ausführung im Bytecode überwacht wird Aber auch in Java gibt es einerseits Pufferüberläufe, deren Ursache im Laufzeitsystem liegt und von denen mehrere JRE-Versionen (Java Runtime Environment) betroffen sind

Erkennungsmöglichkeiten: Überprüfung des Programmcodes: Spezielle Überprüfungswerkzeuge erlauben die Analyse des Codes und entdecken mögliche Schwachstellen Unterstützung durch Compiler: Moderne Compiler, wie neue Versionen des GNU C-Compilers, erlauben die Aktivierung von Überprüfungscode-Erzeugung bei der Übersetzung Sie fügen zwischen der Rücksprungadresse und den lokalen Variablen Platz für eine Zufallszahl (auch „Canary“ genannt) ein

Erkennungsmöglichkeiten: Beim Programmstart wird diese Zahl ermittelt, wobei sie jedes Mal unterschiedliche Werte annimmt Bei jedem Unterprogrammaufruf wird die Zufallszahl in den dafür vorgesehen Bereich geschrieben Der erforderliche Code wird vom Compiler automatisch generiert Vor dem Verlassen des Programms über die Rücksprungadresse fügt der Compiler einen Code ein, der die Zufallszahl auf den vorgesehenen Wert über-prüft Wurde sie geändert, ist auch der Rücksprungadresse nicht zu trauen

Erkennungsmöglichkeiten: Das Programm wird mit einer entsprechenden Meldung abgebrochen Daneben kann man manche Compiler auch veranlassen, beim Unterprogrammaufruf eine Kopie der Rücksprungadresse unterhalb der lokalen Felder zu erzeugen Diese Kopie wird beim Rücksprung verwendet, die Ausnutzung von Pufferüberläufen ist dann wesentlich erschwert

Werkzeuge zur statischen Codeanalyse: Axivion Bauhaus Suite: Werkzeug für Code-, Design- und Architekturanalyse. Erhältlich für die Programmiersprachen Ada, C, C++, C# und Java BugScout: Werkzeug zum Aufspüren potentieller Sicherheitsprobleme in Java, PHP, ASP und C# Webapplikationen

Werkzeuge zur statischen Codeanalyse: CAST Application Intelligence Platform: Dashboard für die Messung von Codequalität und Produktivität Unterstützt mehr als 30 Programmiersprache, sowie verschiedene Datenbanken BugScout: Werkzeug zum Aufspüren potentieller Sicherheitsprobleme in Java, PHP, ASP und C# Webapplikationen

Werkzeuge zur statischen Codeanalyse: ChecKing: Softwarequalitätsportal zur Darstellung der Qualität aller Phasen der Softwareentwicklung Unterstützt statische Codeanalyse von: Java, JSP, Javascript, HTML, XML, .NET (C#, ASP.NET, VB.NET, etc.), PL/SQL, embedded SQL, SAP ABAP IV, Natural/Adabas, C/C++, Cobol, JCL und PowerBuilder Visual Studio Team System: Analysiert C++ und C# Code

Werkzeuge zur statischen Codeanalyse: Eine Liste der weiteren Tools finden Sie unter: https://de.wikipedia.org/wiki/Liste_von_Werkzeugen_zur_statischen_Codeanalyse