Sichere Programmierung. Klaus Kusche

Ähnliche Dokumente
Fehlende Input-Filterung. Klaus Kusche

Sichere Software. Vermeidung von Angriffspunkten bei der Software-Entwicklung. Andreas Vombach

TIPPS UND TRICKS RUND UM KV-CONNECT VOLKER DENTEL KV TELEMATIK GMBH

Grundlagen Internet-Technologien INF3171

Linux-Camp: Linux als Server am Beispiel LAMP

terra CLOUD Hosting Handbuch Stand: 02/2015

Übergreifende Session auf bahn.de Verwendung von Session-Cookies

Anmeldung am FRITZ!Box Webinterface

Systemanforderungen AI Vergabemanager und AI Vergabeassistent

Betriebssysteme - Benutzerverwaltung

Security: Inhouse Hacker Wie der Angreifer denkt

Modul 11: Sicherer Remote-Zugriff über SSH

SSL Installation auf Lotus Domino 8.5

Lücke in der JavaScript-Engine von ios [ ]

FreeIPA. Eine Einführung. Robert M. Albrecht. Presented by. Fedora Ambassador CC-BY-SA. Freitag, 20. Juli 12

) BENUTZERHANDBUCH CLIENT 2.8 )

9 Systemsicherheit. Generelle Überlegungen lokale Sicherheit Netzwerksicherheit.

Concurrent Versions System CVS in der Technischen Informatik

Kryptographie. Nachricht

FTP-Server einrichten mit automatischem Datenupload fu r SolarView

Perl-Praxis. CGI-Skripte. Madis Rumming, Jan Krüger.

Vorlesung Linux Praktikum

Sicherheitslücken in Webanwendungen -

SVN Administration für das KTM-Projekt

Mit PuTTY und WinSCP an der Pi

Key-basierte SSH Login mit PuTTY

Stand: Maximilian Hoecker

EBICS Konten einrichten Electronic Banking Internet Communication Standard

Kurs 1866 Sicherheit im Internet

1 Axis Kamera-Konfiguration IP-Konfiguration Datum und Uhrzeit einstellen Die Option Anonymous viewer login...

1 Axis Kamera-Konfiguration IP-Konfiguration Datum und Uhrzeit einstellen Die Option Anonymous viewer login...

WINDOWS 10. Modul 4 System Know-How

BSA LAMP-Installation unter Debian-Edge

itacom GmbH Bahnhofstrasse Oschatz IT and Communication Cluster-Service_2017.doc Solution Datasheet Seite 1 von 8 Datenblatt

Vorlesung Unix-Praktikum

Datenschutz: Zugriffsrechte in SQL

Relution. Files App. Version

GWT-Webportal Update. ACCENON Software und Hardware GmbH

Google Sitemap. Modul für xt:commerce 4. Plugin-Funktionen... Systemvoraussetzung... Export per Cronjob...

Einstieg ins Tool. SuccessFactors Learning Management System (LMS). SBB AG Bildung SBB

Inhalt. 1. Admin Bereich Anmeldung Assessment Übersicht Zertifikat und Beraterfeedback-Dokument...

A-CERT TIMESTAMP Client 1.0e Handbuch

PHP-5-Zertifizierung. Block 12 Security.

Benutzer- und Rechte-Verwaltung Teil 2

Datenbanken und Netzanbindung

1. Allgemein. Verschlüsselte für Android Smartphone Schritt für Schritt Anleitung

Leitfaden "Vertrauen herstellen"

Wir benötigen: PHP >=5.x mit den Erweiterungen curl, dom, gd, hash, iconv, mycrypt, pcre, pdo, pdo_mysql und simplexml 1/2h Zeit

aibrowser Ausgabe

ZPN Zentrale Projektgruppe Netze am Ministerium für Kultus, Jugend und Sport Baden-Württemberg

customweb Einleitende Informationen Multishop Erstmals Herzlichen Dank für den Kauf dieses Moduls und Ihr entgegengebrachtes Vertrauen.

1. Allgemein. Verschlüsselte für IPhone IOS Geräte Schritt für Schritt Anleitung

Userstory Einrichten eines öffentlichen GitHubs. aber gemeint waren wohl eher

Schwachstellenanalyse 2012

Installation der IDL.EBILANZ :59

12. Datenschutz: Zugriffsrechte in SQL Datenschutz: Zugriffsrechte in SQL

FileMaker Server mit selbstsigniertem SSL-Zertifikat ausstatten

Vorlesung Unix-Praktikum

Konfiguration Zentyal 3.3 Inhaltsverzeichnis

Die Masterarbeit hat drei große Kapitel: 1) Einführung in IPv6, 2) IPv6 Security Attacken, 3) Testlabor mit Testergebnissen der Firewalls TÜV

Erweiterte Konfiguration Agenda Anywhere

Session Management und Cookies

Basisworkshop inchorus Gadgets

Sichere Nutzung von Web-Angeboten (ISi-Web-Client)

Kryptologie. Bernd Borchert. Univ. Tübingen SS Vorlesung. Teil 10. Signaturen, Diffie-Hellman

IT-Sicherheit Kapitel 7 Schlüsseletablierung

office.exchange DEUTSCHE HOCHSICHERHEITSCLOUD ZUM SCHUTZ GEGEN CYBERCRIME EU-DSGVO KONFORM

Leistungsnachweis-Klausur Kurs Sicherheit im Internet I Ergänzungen Lösungshinweise

TimeMachine. Installation und Konfiguration. Version 1.4. Stand Dokument: install.odt. Berger EDV Service Tulbeckstr.

Red Attack - Die Katastrophe in der Datenbank

«/IE Cache & Cookies» Umfrage startet nicht?

WinSCP & WebShare Konfiguration von WinSCP und erste Schritte mit dem WebDAV-Client

Denn es geh t um ihr Geld: Kryptographie

Eigene Track Domain. Version 1.0

Secure So sicher wie ein Brief mit Siegel. Kundeninformation

Voraussetzung für die Nutzung des KOCH-Portals ist ein aktueller Webbrowser mit installiertem Adobe Flash Player Plugin.

Titelmasterformat durch IT Klicken bearbeiten

Bestellsoftware ASSA ABLOY Matrix II

SMARTentry Notification

Sicherheit von PDF-Dateien

Dieses Dokument beschreibt, wie Sie Verlinkungen innerhalb von Texten erzeugen können.

WINDOWS 10. Modul 4 System Know-How

Ein Dienst für Hochschulen und Forschungsinstitutionen zum einfachen Synchronisieren und Teilen von Dokumenten

Test-22 Documentation. Release latest

IT-Sicherheit. Sicherheit von Webanwendungen 7. Januar 2011

EasyWebNG - Screenshots

Inhalt. Kurzanleitung zum Arbeiten mit TU-GitLab

OMS-FS. Objekt-Memory-Server - Dateisystem-Schnittstelle TOBIAS GROß UNIVERSITÄT DES SAARLANDES 17. NOVEMBER Betreuer : Michael Schneider

Vorwort ist heute für Unternehmen ein häufig eingesetztes Kommunikationsmittel, das zum Austausch von Informationen verwendet wird.

GRUDIS RB3 (Schnittstelle MapViewer)

Sicherheitsprobleme im Umfeld IoT und Industrie 4.0

Dokumentation. Elektronische Rechnungsübertragung mit der First Businesspost mittels. Business Connector 4.6


Filius Simulation von Netzwerken

Citrix Mission 21. Seite 1 von 43

Meine Fakultät. Alumni-Portal HTML-Seiten im Portal Seite 1 von 8

1 Guido Röwekamp arvato Systems GmbH 21. Juni ATICS Tage 2015

Transkript:

Sichere Programmierung Klaus Kusche

Typische Ursachen für Lücken Große Mehrheit aller Lücken: Speicherüberschreiber Fehlende Input-Filterung ==> Jeweils eigener Foliensatz Restliche Lücken: Mehrere verschiedene kleinere Ursachen... http://cwe.mitre.org/top25/#listing ==> In diesem Foliensatz: Ein paar Beispiele...

Triviale Id-Vergabe (1) Fortlaufende / vorhersagbare Nummern...... in Session Id's, Cookies usw. ==> Kann ich eine fremde Session übernehmen, wenn ich die Session Id in meinen Requests um 1 erhöhe?... in URL's für Downloads & Dokumente ==> Welche (fremden) Dateien bekomme ich, wenn ich die File-Nummer in der Download-URL um 1 erhöhe?

Triviale Id-Vergabe (2) Verstreute, nicht fortlaufende, nicht vorhersagbare Id's vergeben (z.b. Zufallszahlen, Hashwerte) ==> benachbarte Werte dürfen nicht gültig sein ==> gezieltes Erzeugen gültiger Id's muss sehr unwahrscheinlich sein (lange Zeichenkette, Prüfsumme!) ==> Lange Totzeit vor dem Recycling einer Id (oder gar nicht recyceln)

Triviale Id-Vergabe (3) Download-URL's usw. nicht blind vertrauen, direkt beim Zugriff nochmal prüfen: Ist diese URL in dieser Session gültig? = Gehört das Dokument zu dieser URL zum Benutzer in dieser Session? (oder schickt jemand eine Dokument-URL, die einem ganz anderen Benutzer gehört?) Gültigkeit der Session allein oder der URL allein reicht oft nicht!

Triviale Id-Vergabe (4) Vor allem bei URL's, die eine Aktion auslösen (Buchung, Bestellung,...): Einmal-Id's verwenden! ==> Selber Request mit selber Id wird kein zweites Mal akzeptiert! (Schutz gegen Replay-Attacken)

Nur Client-seitige Prüfungen (1) Clientseitige Prüfungen taugen nur zur schnelleren/besseren Benutzerführung, nicht zur Sicherheit! Client könnte reverse-engineert & manipuliert, durch fremdes Programm ersetzt,... sein! Man in the middle könnte Requests on the fly manipulieren! ==> Daten vom Client sind nie vertrauenswürdig! ==> Alle sicherheits-relevanten Prüfungen müssen am Server stattfinden!

Nur Client-seitige Prüfungen (2) Insbesondere Prüfung der Session-Rechte: Der Server darf sich nicht darauf verlassen, dass der Client nur solche Requests schickt, die diese Session schicken darf / im GUI anbietet! Beispiel: Session als normaler Benutzer angemeldet ==> GUI bietet gar keine Klickflächen (URL's) für administrative Befehle an ==> Was passiert, wenn diese Sitzung trotzdem administrative Requests schickt???

Exzessive Rechte Rechte aller angelegten Files, Dir's, DB's, IPC's,... explizit möglichst restriktiv setzen, nicht auf Defaults vertrauen! Server-Code aufspalten: Entweder alle Operationen mit erhöhten Rechten gleich beim Start machen, dann erhöhte Rechte abgeben (eigene Server-Uid) Oder 2 getrennte Prozesse: - 1 x erhöhte Rechte, so wenig Code wie möglich - 1 x normale Rechte, Großteil des Codes

File-Tricks (1) Angreifer missbraucht normale Filezugriffe eines Programmes. Beispiel 1: Der Server will eine temporäre Datei schreiben. Der Angreifer verlinkt diesen Dateinamen mit /etc/passwd (geht, ohne root zu sein!) ==> Der Server (falls root) überschreibt /etc/passwd mit unsinnigen Inhalten ==> Sehr schwerer Denial of Service!

Beispiel 2: File-Tricks (2) Der Server erzeugt dynamisch einen File (z.b. HTML), um diesen später an die Clients zu schicken. Der Angreifer schafft es, diesen File zwischendurch durch einen Link auf /etc/shadow zu ersetzen. ==> /etc/shadow wird auf den Clients angezeigt, falls der Server mit root-rechten läuft... (auch ohne root-rechte des Angreifers!)

Ursachen: File-Tricks (3) Anlegen von Files in für alle benutzbaren Dir's (z.b. /tmp)... mit fixen oder erratbaren Namen (z.b. berechnet aus Server-Pid, Datum & Uhrzeit,...)... mit nicht atomarem prüfen ob noch nicht existiert & zum Schreiben öffnen ==> Race Condition beim File erzeugen!

Krypto-Sünden (1) Selbstgestrickte Krypto-Algorithmen Passwörter im Klartext, mit Zweiweg-Verschlüsselung, ohne Salz, ohne Brute-Force-Bremse,... Hart eincodierte User & Passwords (vor allem Admin-Accounts, Hintertüren ), hart eincodierte Schlüssel & Zertifikate Automatisches Anlegen von Admin-Accounts und von Backend-Usern (z.b. DB-Accounts) ohne Passwort oder mit fixem Password

Krypto-Sünden (2) Pseudo-Zufall, wo echter Zufall sein sollte, Pseudo-Zufall mit fixem Seed,... Inoffizielle Zertifikate, die Benutzer zwingen, im Browser eine Ausnahme zu akzeptieren Automatischer Update ohne krypt. Absicherung - des Update-Hosts & der Verbindung - des File-Inhaltes DNS-Attacken, Man in the Middle,... zum Einschleusen von manipuliertem Code ==> 2 mal Verschlüsselung + Signatur/Zertifikat

Was tun? Hausinterne Programmier-Richtlinien, Programmierer & Tester schulen! Öffentliche sichere Programmier-Standards (z.b. CERT Secure Coding Standards für C, C++, Java,...) Tools für Sicherheits-Qualitätssicherung - Statische Analyse - ASAN, valgrind,... - Fuzzer (Public) Code Reviews, Bounties Externe Audits & Penetration Tests