it-swarm.com.de

Was ist die Problemumgehung von 'ptrace_scope' für Wine-Programme und gibt es Risiken?

Um bestimmte Windows-Programme in WINE auszuführen, müssen Sie diese Problemumgehung ausführen:

echo 0|Sudo tee /proc/sys/kernel/yama/ptrace_scope

Laut den Support-Websites liegt dies an einem Fehler im Ubuntu-Kernel, der verhindert, dass ptrace und WINE gut zusammenspielen.

Mit dem obigen Befehl setzen Sie den ptrace auf 0, was nach meinen Recherchen (frag mich nicht, auf welchen Websites ich viele davon gesehen habe) mit den Interaktionen zwischen Programmen zu tun hat. Die Einstellung 0 ist toleranter als die Einstellung 1.

Ich muss davon ausgehen, dass es einen guten Grund gab, warum Ubuntu ptrace = 1 haben wollte. Dies führt mich zurück zur Kurzform der Frage.

Besteht das Risiko, ptrace = 0 zu setzen? Geringere Sicherheit? Probleme beim Debuggen? irgendwelche anderen, an die ich nicht gedacht habe ???

P.S. Wenn jemand dies liest und sich fragt, was der Fehler verursacht, werden die Windows-Programme überhaupt nicht geöffnet. Im Systemmonitor werden viele Instanzen des Programms angezeigt, die versuchen, sich zu öffnen, und schließlich werden sie alle beendet, und wenn Sie das Programm ausführen Am Terminal erhalten Sie eine Fehlermeldung, die Sie darüber informiert, dass die maximale Anzahl von Programminstanzen erreicht wurde.

37
TrailRider

Kurze Antwort: Noch keine praktische Gefahr, aber zum besseren Verständnis weiterlesen ...


Was ist dieses ptrace Ding überhaupt?

Dies liegt an einem Fehler im Ubuntu-Kernel, der verhindert, dass ptrace und WINE gut zusammenspielen.

  • Nein, ptrace-Schutz ist eine absichtliche Kernel-Sicherheitsmaßnahme , die erstmals in Ubuntu 10.10 eingeführt wurde. Es ist kein Fehler und wird daher nicht "behoben".

  • In einfachen Worten, der Standardwert ptrace_scope von 1 hindert einen Prozess daran, einen anderen Prozess zu untersuchen und zu ändern , es sei denn , der zweite Prozess (Kind) wurde vom gestartet erster Prozess (Eltern).

  • Dies kann bei einigen Programmen unter Wine aufgrund der Art und Weise, wie wineserver "Windows-Dienste" für diese Programme bereitstellt, zu Problemen führen.

Welche Risiken bestehen bei der Einstellung von ptrace_scope auf 0?

  • Dadurch wird das alte Verhalten wiederhergestellt, bei dem ein Prozess einen anderen Prozess "verfolgen" kann, selbst wenn keine Eltern-Kind-Beziehung besteht.

  • Theoretisch kann ein Teil der Malware dies nutzen, um Ihnen/Ihrem Computer Schaden zuzufügen. z.B. Es kann sich an Firefox anhängen und alle Ihre URLs/Passwörter usw. protokollieren. In der Praxis ist dies äußerst unwahrscheinlich, es sei denn, Sie installieren blind Binär-Debs von zufälligen Sites usw.

  • Für das Debuggen sind die Einstellungen für 0 tatsächlich erforderlich, damit gdb, strace usw. an Nicht-Kinder angehängt werden können, es sei denn, Sie führen sie mit erhöhten Rechten aus (Sudo).

Was sind die Probleme mit der Problemumgehung?

  • Die Problemumgehung ist etwas problematisch, da ptrace_scope ein globaler Wert ist und auf 0 festgelegt ist, sind alle Prozesse auf Ihrem System von der Einschränkung ausgenommen, die keine untergeordneten Prozesse ist.
  • Wenn Sie die Problemumgehung verwenden, fügen Sie sie in ein einfaches Bash-Skript ein, das sie aktiviert, Ihr Windows-Programm ausführt und dann beim Beenden deaktiviert (auf 1 gesetzt).
    • NICHT ptrace_scope weltschreibbar machen (666), wie der Forumsbeitrag empfiehlt - das ist ein riesiges Sicherheitsrisiko, denn jetzt kann jeder Prozess ändere es nach Belieben!

Gibt es eine bessere Lösung?

  • Eine bessere Lösung, die sicherer ist und keine wiederholten Änderungen erfordert ptrace_scope ist zu Wineserver ptrace Fähigkeiten gewähren .

    • In einem Terminal:

       Sudo apt-get install libcap2-bin 
       Sudo setcap cap_sys_ptrace = eip /usr/bin/wineserver[.____.‹Sudo setcap cap_sys_ptrace = eip /usr/bin/wine-preloader
      
    • Dies befreit die wine-preloader und wine-preloader -Binaries von der Nicht-Kind-Ptrace-Einschränkung und ermöglicht es ihnen, jeden Prozess zu verfolgen.

    • Dies muss nur einmal durchgeführt werden und ist sicherer, da diese Binärdateien in der Regel von einer vertrauenswürdigen Quelle stammen - den offiziellen Repositorys oder dem offiziellen Wine PPA -, sodass es sich nicht um Malware handelt.

Wenn Sie Crossover verwenden

Installieren Sie libcap2:

Sudo apt-get install libcap2-bin; 

Fügen Sie dann eine Ausnahme für Crossover hinzu:

Sudo setcap cap_sys_ptrace = eip /opt/cxoffice/bin/wineserver;[.____.‹Sudo setcap cap_sys_ptrace = eip /opt/cxoffice/bin/wine-preloader;

Fügen Sie abschließend die Bibliotheken zu ld.so.conf hinzu (oder es wird "Fehler beim Laden der gemeinsam genutzten Bibliotheken angezeigt: libwine.so.1: Datei mit gemeinsam genutzten Objekten kann nicht geöffnet werden: Keine solche Datei oder solches Verzeichnis"):

echo/opt/cxoffice/lib/| Sudo tee /etc/ld.so.conf.d/crossover.conf[.____.‹Sudo/sbin/ldconfig
40
ish

Im buntuforums.org habe ich eine Antwort mit folgendem Link bekommen

https://wiki.ubuntu.com/SecurityTeam/Roadmap/KernelHardening#ptrace_Protection

hier ist die Paste aus dem Link (mit meiner Hervorhebung hinzugefügt)

Da Linux immer beliebter wird, wird es ein wachsendes Ziel für Malware. Eine besonders besorgniserregende Schwäche der Linux-Prozessschnittstellen besteht darin, dass ein einzelner Benutzer den Arbeitsspeicher und den Betriebszustand eines beliebigen Prozesses untersuchen kann. Wenn beispielsweise eine Anwendung (z. B. Firefox) kompromittiert wurde, kann ein Angreifer eine Verbindung zu anderen laufenden Prozessen (z. B. gpg-agent) herstellen, um zusätzliche Anmeldeinformationen zu extrahieren und den Umfang ihres Angriffs weiter zu erweitern.

Dies ist kein theoretisches Problem. SSH-Session-Hijacking und sogar beliebige Code-Injection sind vollständig möglich, wenn ptrace normalerweise erlaubt ist .

Für eine Lösung verwenden einige Anwendungen prctl (), um eine solche ptrace-Bindung (z. B. ssh-agent) spezifisch zu verbieten. Eine allgemeinere Lösung besteht darin, ptrace nur direkt von einem übergeordneten zu einem untergeordneten Prozess zuzulassen (d. H. Direkt, dass gdb und strace noch funktionieren) oder als Root-Benutzer (d. H. Gdb BIN PID und strace -p PID funktionieren immer noch als Root).

Dieses Verhalten wird über den sysctl-Wert/proc/sys/kernel/yama/ptrace_scope gesteuert. Die Standardeinstellung ist "1", um nicht untergeordnete Spuren zu blockieren. Mit dem Wert "0" wird das zuvor eher zulässige Verhalten wiederhergestellt, das möglicherweise für einige Entwicklungssysteme und Server mit nur Administratorkonten besser geeignet ist. Die Verwendung von "Sudo" kann auch vorübergehend Ptrace-Berechtigungen über die CAP_SYS_PTRACE-Funktion gewähren, obwohl diese Methode das Ptrace eines beliebigen Prozesses ermöglicht.

Ich denke, die kurze Antwort wäre, dass es weniger sicher ist, aber die Wahrscheinlichkeit, dass ein PC unter solchen Angriffen steckt, ist ziemlich gering.

4
TrailRider

UPDATE Die obigen Anweisungen:

Sudo setcap cap_sys_ptrace=eip /opt/cxoffice/bin/wineserver;
Sudo setcap cap_sys_ptrace=eip /opt/cxoffice/bin/wine-preloader;

funktioniert ab dem 15.09.2008 unter Ubuntu 18.04.1 und PlayOnLinux v.4.2.12 nicht, wenn die neueste stabile Version Wine v.3.0.1 libcap2 bereits installiert wurde.

Die Fehlermeldung in Gnome Terminal lautet wie folgt:

Failed to set capabilities on file `/usr/bin/wineserver' (Invalid argument)
The value of the capability argument is not permitted for a file. Or the file is not a regular (non-symlink) file

Ich bin mir nicht sicher, was das bedeutet ... aber ich dachte, ich würde es für jeden herausbringen, um es zu interpretieren und vielleicht eine neue, praktikable Lösung zu finden.

Vielen Dank.

1