Ansichten eines Informatikers

Rassistennewsletter

Hadmut
14.1.2024 22:54

Sorry, den werden die meisten Leser heute nicht verstehen. Der ist nur was für Informatiker, aber dafür umso härter.

Wer einigermaßen Ahnung von Informatik hat, kennt den Begriff „race condition“.

Damit bezeichnet man einen bestimmte Art von Programmfehlern oder auch Sicherheitslöchern, die vom Laufzeitverhalten parallel laufender Prozesse abhängen, die sich anders verhalten, als man sich das vorher gedacht hat.

Ein Beispiel für einen Sicherheitsangriff, zuerst der geplante, beabsichtigt korrekte, aber fehlerhafte und sicherheitslückige Ablauf:

  1. Programm A, das mit root-Rechten läuft, muss Daten nach /tmp schreiben.
  2. Programm A sucht sich einen Dateinamen aus und prüft, ob /tmp/dateiname schon existiert. Existiert noch nicht.
  3. Programm A ist zufrieden und macht die Datei /tmp/dateiname neu auf, um irgendwas reinzuschreiben.

Der Angriff:

Das parallel dazu laufende Programm B, das keine root-Rechte hat, sondern unter einem Benutzeraccount läuft, belastet den Rechner stark und macht den Rechner langsam und versucht, genau den richtigen Zeitpunkt zwischen Schritt 2 und Schritt 3 zu erwischen, um schnell einen symbolischen Link von /tmp/dateiname nach /etc/passwd zu legen. Programm A glaubt ja aus Schritt 2 noch, dass die datei nicht existiert. Wenn es aber nun in Schritt 3 die Datei zum Schreiben öffnet, überschreibt es tatsächlich /etc/passwd, und man kann sich auf dem System nicht mehr einloggen. Schlimmer: Wenn A dabei Daten schreibt, die B steuern kann, beispielsweise eine Pufferdatei mit Eingaben, kann B sogar /etc/passwd gezielt verändern und sich einloggen. Und wenn Programm A am Ende die Datei /tmp/dateiname wieder löscht, der guten Ordnung halber, ist der Link weg und keine Sau kommt mehr drauf, wer es wie geschafft hat, /etc/passwd mit root-Rechten zu überschreiben. race conditions sind ganz böse Dinger, deshalb ist es auch ganz wichtig, die zu verstehen, um sie zu vermeiden oder zu finden. Das ist schon Security und Debugging für deutlich Fortgeschrittene.

Race condition beschreibt so eine ganz fiese Kategorie sehr schwer zu debuggender Fehler, die sich aus dem zeitlichen Zusammenspiel mehrerer Prozesse ergeben. Das kann eine Million Mal gut laufen, und dann geht es schief. Genau das könnte ein Angreifer aber zu provozieren versuchen. Deshalb „race condition“ von race = Wettbewerb, Wettrennen. Wie in car race.

Ein Leser schreibt mir nun:

2-Sterne-Bewertung einer App wegen des Begriffs “race conditions” im Changelog

Hallo Hadmut,

aus der Informatik weißt Du ja garantiert, was eine “race condition” ist.

Nun: Zhenyi Tan, der Entwickler der App Vinegar schrieb im Changelog dieser App

“- Made the process of replacing the video player more reliable by fixing some race conditions”

und erhielt hierfür eine verheerende 2-Sterne-Bewertung im Apple-Appstore:

> https://mastodon.social/@zhenyi/111587935609356892

Falls Du das auf Anhieb nicht verstehst (ich stand da anfangs auch auf der Leitung): “race condition[s]”: “race” bedeutet auch “Rasse”.

Ich bin zwar nicht mehr der Jüngste und merke, wie die Senilität so unten an den Zehennägeln anfängt um sich dann am Bauchnabel mit der Demenz zu treffen, die von oben herab kommt, aber den verstehe ich noch auf Anhieb.

Da hat einer in sein Changelog geschrieben, dass er race conditions behoben hat, und bekommt deshalb eine schlechte Bewertung, weil er noch diesen Rassistenbegriff verwende.

Herrje, ist das Rumgewoke so unfassbar dämlich. Alles so unglaublich dumm. Und diese Deppenschar treibt die Welt um.