Ein Sternchen reicht: Wie C mit einem Sentinel-Wert Alpine-Server aufreißt

*sshole, or when are we going to get rid of C?

Ein Sternchen reicht: Wie C mit einem Sentinel-Wert Alpine-Server aufreißt

Eine neue Schwachstelle in musl libc zeigt, warum C-Normen gefährlich sind: Weil viele Programme den NULL-Rückgabewert von crypt() nicht prüfen, liefert musl bei zu langem Passwort einfach "*" zurück – denselben Wert, der seit jeher ein gesperrtes Konto markiert. Auf Systemen ohne PAM, etwa dem offiziellen Alpine-Image für AWS, bekommt ein nicht authentifizierter Angreifer so eine Shell, möglicherweise als root. Der Autor argumentiert, dass nicht die Typen allein, sondern die Ingenieurskultur den Unterschied zwischen C und Rust macht.

Die Ingenieursnormen der C-Entwickler erlauben "*" als akzeptablen Sentinel-Wert für einen Fehler; die Ingenieursnormen der Rust-Entwickler tun das schlicht nicht.
  1. PeterWhittaker

    Das ist weniger ein Problem von C als vielmehr eine schlechte Designentscheidung des musl-Teams. Als Reaktion auf schlechte Praktiken (Programmierer, die nicht prüfen, was crypt zurückgibt) haben sie eine wohl noch schlechtere gebaut (einen Sentinel-Wert zurückgeben).

    Klar, Rusts std::result kann es schwerer machen, dumm zu sein, aber dumm findet immer einen Weg.

  2. zeroCalories

    Ich hasse die Kompilierzeiten von Rust einfach, Mann

  3. varispeed

    Was hat das mit C zu tun? Das ist einfach schlechtes Design.

    Das ist, als würde man schlechtes Fahren dem Trainingsanzug anlasten.

Mehr von diesem Tag

2026-11-06