
Angenommen, ich erstelle zum Zeitpunkt (1) eine benannte Pipe mit Python mit dem Ziel, dass dieser Python-Prozess irgendwann etwas in diese benannte Pipe schreibt. Warum? Weil zum Zeitpunkt (2) ein anderer Prozess vorhanden ist, der aus dieser benannten Pipe lesen soll.
Im Grunde handelt es sich also um IPC über benannte Pipes. Warum ist das praktisch? Weil es wie eine Datei aussieht, sodass der andere Prozess, der nur Dateien lesen kann, über diesen benannten Pipe-Mechanismus als praktischer IPC kommuniziert werden kann, ohne dass der andere Prozess neu geschrieben werden muss.
Aber es gibt ein Problem:Angenommen, zwischen Zeitpunkt (1) und Zeitpunkt (2) hat ein bösartiger Prozess damit begonnen, aus der benannten Pipe zu lesen, bevor der beabsichtigte Prozess gestartet wurde. Auf diese Weise kann mein Python-Skript Daten an einen unbeabsichtigten Prozess senden. Ich bin also nicht besorgt, wenn der Hijacker in meinem spezifischen Risikomodell damit beginnt, in den Prozess zu schreiben (ich bin nur besorgt, wenn der Hijacker aus der Pipe liest, bevor der beabsichtigte Prozess gestartet wird).
Frage:Gibt es einen Mechanismus, der sicherstellt, dass kein anderer Prozess als der vorgesehene aus dem IPC liest?
Antwort1
Benannte Pipes haben Dateiberechtigungen wie jede andere Datei. Stellen Sie beim Erstellen der Pipe sicher, dass die Berechtigungen so festgelegt sind, dass nur das Konto, das Ihren Prozess ausführen soll, daraus lesen kann.