Format String Vulnerability

Sebastian Feustel

Printf()

Dokumentation

Code

#include <stdio.h>

int main(){
  printf("Sag, mir wen ich grüßen soll: ");
  char in[256];
  fgets(in, 256, stdin);
  
  printf(in);
    
  return 0;
}

Aufbau von Stack

Leaking Memory

Potenzielle Gefahren

  • Crashen vom Programm (DDOS)
  • Unautorisiertes Auslesen vom Stack Daten
  • Ausführen von beliebigen Code

Wortklärung

  • Vulnerability
  • Exploit
  • Payload

Mittigations

  • ASLR (Address space layout randomization)
  • Stack Cookies
  • DEP (Data Execution Prevention)

Heute immer noch ein Problem?

Webanwendungen

  • Meisten Webserver/Datenbanken/Betriebssysteme basieren auf C oder C++
  • Formatstrings in Javascript-Code
  • PHP sprintf-Format-String-Schwachstelle

In anderen Progsprachen

Schwachstellen in Format Strings können in jeder größeren Programmiersprache auftreten.

Zusammenfassung

  • Userinput ist böse (das können auch files sein)
  • Daten könnne zu Code werden
  • Lese Dokumentation von Bibilotheken, die du verwendest.

Quellen

Bücher

Youtube

Blogs

Fragen?