Kann ich eine in C erstellte Binärdatei (mit GCC) für Linux in eine Sandbox umwandeln und es den Benutzern leicht machen?

586
ccoder987

Ich habe eine Binärdatei zusammengestellt, die ich an andere Personen verteilen möchte.

Es ist geschlossene Quelle, aber ich möchte den Benutzern der Binärdatei die Gewissheit geben, dass sie möglicherweise nicht auf das Internet, das Mikrofon, den Drucker usw. zugreifen kann. Außerdem sollte es nicht möglich sein, Dateien / Verzeichnisse auf dem Dateisystem zu lesen / schreiben, sofern sie nicht bereitgestellt werden das Programm mit Zugriff auf diese Datei / dieses Verzeichnis explizit.

Ist dies auf andere, benutzerfreundlichere Weise möglich, als den Benutzern mitzuteilen, etwas wie SELinux oder AppArmor zu verwenden, wo der Benutzer etwas Besonderes tun muss, um die Binärdatei auszuführen (im Gegensatz zu einem einfachen ./program)?

0

2 Antworten auf die Frage

0
Dmitry Grigoryev

Um das Vertrauen in Ihre Binärdatei zu haben, müssen Benutzer vertrauenswürdige Tools verwenden, um sie einzuschränken. Jedes Sandbox-Tool, das Sie mit Ihrer Binärdatei bündeln, sollte als (nicht) vertrauenswürdig wie die Binärdatei selbst betrachtet werden.

Sie können ein von Menschen lesbares Setup-Skript bereitstellen, das eine entsprechende chrootKonfiguration oder AppArmor-Konfiguration erstellt. Auf diese Weise können Ihre Benutzer das Skript überprüfen und sehen, dass Ihre Binärdatei ordnungsgemäß in einem Sandkasten gespeichert ist.

0
orion

Wie @Dmitry gesagt, wenn die Anwendung selbst Closed - Source ist, müssen Sie zeigen die Benutzer der Teil zumindest, dass die Anwendung gewährleistet ist Sandbox, so können sie überprüfen und sogar die Art und Weise der Sandbox ändern (bis auf ihre spezifischen Sicherheitseinstellungen anpassen) . Hinzu kommen ein chroot, sollte die Anwendung auch als seinen eigenen Benutzer ausgeführt (dies kann mit setuid auf dem binären erfolgen, die für die Nutzer transparent ist), mit entsprechend eingeschränktem Zugang. Im Hinblick auf das Sandboxing gegen verschiedene Hardware (Mikrofone, Netzwerk, ...) ist der gesamte Umfang, der nicht durch Benutzerberechtigungen eingeschränkt werden kann, mindestens lxc oder eine virtuelle Maschine erforderlich. Das macht die Sache komplizierter.

"Was das Sandboxing gegen verschiedene Hardware (Mikrofone, Netzwerk, ...) betrifft, so ist es für jeden Teil, der nicht durch Benutzerberechtigungen eingeschränkt werden kann, mindestens lxc oder eine virtuelle Maschine erforderlich. Das macht die Sache komplizierter." Würden SELinux oder AppArmor dafür nicht funktionieren? ccoder987 vor 8 Jahren 0