Es ist realistisch gesehen nicht möglich, ein Wählprogramm ohne gesetztes SUID Bit zu schreiben, das sicher und dabei für unerfahrene Benutzer einfach zu benutzen ist. Kppp geht das Sicherheitsproblem mit folgender Strategie an:
Gleich nach dem Programmstart startet Kppp einen neuen Prozess.
Der Masterprozess (der die GUI, Benutzerinteraktion u.ä. verwaltet) legt den SUID-Status danach ab und läuft dann mit den normalen Benutzerprivilegien.
Der Slaveprozess behält seine Privilegien bei und kümmert sich um alles, für das man root-Rechte benötigt. Um diesen Teil sicher zu machen, werden hier keine Funktionen der KDE/QT-Bibliotheken aufgerufen, sondern nur einfache Funktionen der C-Bibliothek. Der Quellcode für diesen Prozess ist kurz (etwa 500 Zeilen) und gut dokumentiert. Dadurch ist es einfach, Sicherheitslöcher zu entdecken.
Master- und Slaveprozess kommunizieren mit standard UNIX IPC.
Vielen Dank an Harri Porten für das Schreiben dieses exzellenten Stück Quellcodes. Ich dachte, es sei unmöglich - er schrieb es in einer Woche.