Tag-Archiv für 'Sicherheit'

Statische Codeanalyse mit Uno

Statische Codeanalyse ist eine Art von Softwaretest, bei der Quellcode bestimmten formalen und algorithmischen Prüfungen unterzogen wird um Fehler in Software zu finden. Die Überprüfung erfolgt hier im Gegensatz zur dynamischen Analyse nicht zur Laufzeit und wird deswegen als statische Analyse bezeichnet.

Uno ist ein Tool, mit dem man nach drei der häufigsten Fehlerarten in C-Quellcode suchen kann:

  • Nutzung uninitialisierter Variablen
  • Dereferenzierung von NULL-Pointern
  • Bereichsüberschreitung bei der Array-Adressierung

Entsprechende Beispiele und ein Download des Werkzeuges sind auf der Seite von Uno zu finden. Eine kurze Probe hier hat gezeigt, daß sich sowohl einfache Beispiele konstruieren lassen bei dem Dereferenzierungsfehler gefunden werden, als auch Beispiele, bei dem das Werkzeug die Fehler übersieht.

Hier wird der Fehler gefunden:

1
2
3
4
5
6
7
8
9
int *ptr;
 
int main() {
    if (ptr)
        *ptr = 123;
    else
        *ptr = 345;
    return 0; 
}
uno:#1: possible global use or deref before def:
[R ptr global_nullptr_deref.c 9]
in fct main global_nullptr_deref.c 4

und hier nicht:

1
2
3
4
5
6
7
8
9
10
11
int main() {
 
    int *ptr;
    ptr = NULL;
 
    if (ptr)
        *ptr = 123;
    else
        *ptr = 345;
    return 0;
}

Generell ist die quelloffene Verfügbarkeit von leistungsfähigen Werkzeugen zur Codeanalyse nicht gegeben, die Werkzeuge übersehen Fehler oder liefern zuviele Falschpositive. Professionelle Tools wie Coverity stehen wiederum nicht zur freien Verfügung. Wer sich mehr mit diesem Thema beschäftigen will, findet allerdings auf der Seite von Dawson Engler, dem Gründer von Coverity, einen guten Einstiegspunkt mit ein paar interessanten Veröffentlichungen, auch zur probalistischen Analyse von Quellcode.

Sicherheit von öffentlichen Zwischenablagen

Mittlerweile gibt es ja eine recht beträchtliche Zahl von Web-basierenden, und damit auch zumeist Web-öffentlichen Zwischenablagen. Beispiele dafür sind Pastebin, TNX, PasteHere oder Nopaste.

Manchmal frage ich mich allerdings, ob sich alle Nutzer bewusst sind, dass fast alle Einträge und Nutzungfälle Web-öffentlich sind. Die meisten dieser Dienst besitzen Übersichtsseiten oder fortlaufende Nummern als Schlüssel (dadurch werden die URLs kurz, aber quasi unsicher), deshalb kann man einfach Einblick in die jeweils gespeicherten Texte und Daten gewinnen, auch wenn man den konkreten Schlüssel nicht kennt. Und das kann ziemlich interessant sein. Eigentlich sollte man mal einen Server einrichten, der die jeweiligen Pastebins als Datenquelle periodisch abfragt und nach gewissen Klassifikationsmerkmalen (z.B. IRC-Log, mit ganz spezifischem Format eckige Klammern mit Nick drin und dann Textzeile) sortiert und aufbereitet. gcc-logs, Quellcode usw. kann man getrost wegwerfen, aber wahrscheinlich findet sich die eine oder andere Datenperle. Strafverfolgung mit so etwas macht bestimmt auch Spaß, Adress- und Emaildaten sind bestimmt auch interessant. Eine halbe Stunde sich mal anschauen was die Nutzer so damit machen, ist schon ziemlich erhellend.

Festplatten shreddern

Achtung: Die im folgenden beschriebenen Methoden vernichten Daten und Dateien vollständig und sicher.

Um mit Linux eine als defekt vermutete Festplatte unabhängig vom genutzten Dateisystem auf Fehler zu überprüfen, kann man folgenden Befehl nutzen, bei dem allerdings alle Daten gelöscht werden:

badblocks -t random -ws -v /dev/hdX

badblocks ist Bestandteil der e2fsprogs, damit es funktioniert sollte man natürlich möglichst root sein oder Zugriffsrechte auf das entsprechende Gerät haben. Der Parameter -t legt ein Bitmuster fest, mit dem die Platte beschrieben wird und das anschließend überprüft wird. -w legt fest, daß Daten sowohl geschrieben, als auch gelesen werden und -s zeigt den aktuellen Fortschritt an. Der Parameter -v erhöht die Menge der ausgegebenen Informationen. /dev/hdX steht für ein zu überprüfendes Gerät, also die zu überprüfende Festplatte oder Partition. Im Fehlerfall gibt badblocks eine Liste der defekten Sektoren aus. Zusätzlich findet man meist im Systemlog oder mit dmesg Meldungen wie Folgende:

hdb: dma_intr: status=0x51 { DriveReady SeekComplete Error }
hdb: dma_intr: error=0x40 { UncorrectableError }, 
LBAsect=4561226, high=0, low=4561226, sector=4561208
ide: failed opcode was: unknown
end_request: I/O error, dev hdb, sector 4561208

Ist die Platte in Ordnung bleibt die Fehlerliste leer.

Eine andere Variante eine Festplatte von ihren Daten zu befreien, ist das Überschreiben mit zufälligen Daten mit dem in den fileutils enthaltenem Programm shred:

shred -v -n 20 /dev/hdX

Der Parameter -n legt hier die Anzahl der Durchläufe fest in denen die Daten mit zufälligen Werte überschrieben werden, die wirklich benötigte Anzahl hängt allerdings von der eigenen Zeit und dem Aufwand, den man betreiben will, ab. Für die einfache Abwehr von unspeziallisierten Angreifern, zum Beispiel beim Ebay-Verkauf einer Festplatte, sollten 5-10 Durchläufe genügen. Das Programm shred kann man zwar auch auf einzelne Dateien anwenden, laut Anleitung hat dies bei Journaling-Dateisystemen wie XFS, ext3, Reiser usw. allerdings nicht unbedingt die erwünschte Wirkung, da Daten und Dateien nicht unbedingt In-Place überschrieben werden.

Zur Vollständigkeit will ich noch eine dritte Methode um Dateien oder Geräte zu überschreiben angeben, die einfache Nutzung von dd:

dd if=/dev/random of=/dev/hdX bs=1M

Zum sicheren physikalischen Löschen von Festplatten und zum Vernichten von sensiblen Daten kann man am ehesten shred einsetzen, ultimatives Vernichten ist sowieso nur beim Erhitzen der Festplatte über ihre Curie-Temperatur, der Temperatur bei dem der Datenspeicher seine magnetischen Eigenschaften verliert, möglich.

Cache Attack auf AES

Ich habe heute einen interessanten Artikel zum Thema Side-Channel-Attacken auf AES gefunden. Der Angriff erlaubt einem unpriviligiertem Prozess, das Speicherzugriffsverhalten/muster eines anderen, kryptographischen Prozesses über die Analyse des Zustandes des Prozessorcaches für den Hauptspeicher zu beobachten und damit den AES-Schlüssel zu bestimmen. Beschrieben werden effiziente Attacken gegen OpenSSL und gegen AES bei Nutzung von dm-crypt. Scary!

Neues bei trifinite.org

SpOn berichtet über eine Software von trifinite.org, die es ermöglicht die Bluetooth-Freisprecheinrichtungen in Autos, besonders in neuen Audis abzuhören. Die Software heißt “The CarWhisperer”. Audi verwendete als feste PIN vor dem ersten Pairing immer “1234″ oder “0000″ und macht damit die Freisprecheinrichtungen angreifbar.

Goodbye Phrack

Heute ist die letzte Ausgabe von Phrack mit der Nummer 63 als Ezine erschienen. Phrack besteht seit dem November 1985 und behandelt Themen wie Informationssicherheit, Hacken und Kryptographie. Naja, auch die vergangen Ausgaben zu lesen kann Spass machen. Goodbye Phrack.

Update (Sommer 2009):
Mittlerweile sind drei neuer Ausgaben erschienen, die Veröffentlichung wurde fortgesetzt.

Blauzahnsicherheit gefährdet

Zwei israelische Forscher, Yaniv Shaked and Avishai Wool, beschreiben in einem Bericht über Bluetooth-Sicherheit einen passiven Angriff, mit dem man die PIN zweier gekoppelter Bluetooth-Geräte und damit den Schlüssel einer Verbindung bestimmen kann, wenn man einen kompletten Pairing-Vorgang aufgezeichnet hat. Mit dem Verbindungsschlüssel kann ein Angreifer dann die Kommunikation der Geräte verfolgen oder auf die Geräte und ihre Daten zugreifen. Zusätzlich werden Methoden beschrieben mit denen man gezielt einen neu notwendigen Pairing-Vorgang zwischen zwei Geräten provozieren kann.

Mystery Twister

Durch eine Pressemitteilung bin ich heute auf einen erstmal interessant klingenden Kryptographie-Wettbewerb mit dem Namen Mystery Twister gestoßen. Der Wettbewerb umfasst nach eigenen Angaben der Veranstalter Aufgaben vom Niveau einfacher Knobelaufgaben, über Aufgaben die sich mit etwas Programmieraufwand lösen lassen bis hin zu kryptographisch-schweren Aufgaben. Mitveranstalter des Wettbewerbes ist der Lehrstuhl für Kryptologie und IT-Sicherheit an der Ruhr-Universität-Bochum (CITS). Für die schwereren Aufgaben sind auch Geldpreise ausgelobt, leider muss man sich registrieren.

Biometrie in Reisepässen

Beim Bundesamt für Sicherheit in der Informationstechnik gibt es eine Meldung mit Technischen Informationen zum EU-Pass. Leider scheinen die verlinkten Dokumente nicht immer zuverlässig abrufbar zu sein. Wer kommt eigentlich auf die Idee die Software zum Lesen der Pässe “Golden Reader Tool” zu nennen?

Update (Sommer 2009):
Mehr Hintergrundinformationen finden sich hier.