Zum Inhalt springenZur Seitennavigation springen: vorherige Seite [Zugriffstaste p]/nächste Seite [Zugriffstaste n]
documentation.suse.com / SUSE Linux Enterprise Server-Dokumentation / Verwaltungshandbuch / Häufige Tasks / Userspace-Live-Patching
Gilt für SUSE Linux Enterprise Server 15 SP4

12 Userspace-Live-Patching

In diesem Dokument werden die Grundlagen und die Verwendung des Userspace-Live-Patchings erläutert.

12.1 Informationen zum Userspace-Live-Patching

Das Userspace-Live-Patching (ULP) bezeichnet die Anwendung von Patches auf Bibliotheken, die von laufenden Prozessen verwendet werden, ohne diese zu unterbrechen. Live-Patching-Vorgänge werden mit dem Werkzeug ulp durchgeführt, das Teil von libpulp ist.

Das Framework libpulp bildet den Rahmen für das Userspace-Live-Patching. Es besteht aus der Bibliothek libpulp.so und aus Werkzeugen, die die Bibliotheken livepatchfähig machen und die Live-Patches anwenden (die Binärdatei ulp).

12.1.1 Voraussetzungen

Für das ULP müssen zwei Anforderungen erfüllt sein.

  • Eine Bibliothek muss mit dem GCC-Flag -fpatchable-function-entry kompiliert und damit livepatchfähig gemacht werden. Änderungen am Quellcode der Bibliothek fallen nicht an.

  • Prozesse müssen die Bibliothek libpulp.so vorab laden.

12.1.2 Verwenden von libpulp

Zur Verwendung von libpulp mit einer Anwendung gehen Sie wie folgt vor:

  1. Machen Sie eine Bibliothek livepatchfähig.

  2. Wenn Sie die Anwendung starten, laden Sie libpulp vorab mit dem Kommando LD_PRELOAD=/usr/lib64/libpulp.so ./ANWENDUNG.

12.1.2.1 Vorbereiten der Live-Patch-Fähigkeit einer Bibliothek

Damit eine Bibliothek livepatchfähig ist, müssen ihre Funktionsaufrufe allesamt den Prolog NOP enthalten. GCC ab Version 8 (und die in SUSE Linux Enterprise Server enthaltene GCC-Version) bietet speziell für diesen Zweck das Flag -fpatchable-function-entry. Auf der AMD64/Intel 64-Architektur reicht es daher aus, eine in C geschriebene Bibliothek mit dem Flag ‑fpatchable-function-entry=16,14 zu kompilieren, um sie livepatchfähig zu machen.

Die Bibliotheken glibc, libssl.so.1.1 und libcrypto.so.1.1 sind unter SUSE Linux Enterprise 15 SP4 bereits livepatchfähig.

12.1.2.2 Prüfen der Live-Patch-Fähigkeit einer Bibliothek

Prüfen Sie mit dem folgenden Kommando, ob eine Bibliothek livepatchfähig ist:

ulp livepatchable LIBRARY

12.1.2.3 Anwenden von Live-Patches

Live-Patches werden mit dem Kommando ulp trigger angewendet, beispielsweise:

ulp trigger -p PID LIVEPATCH.ulp

In diesem Beispiel bezeichnet PID die PID des laufenden Prozesses, der die zu patchende Bibliothek enthält, und LIVEPATCH.ulp ist die eigentliche Live-Patch-Datei.

Die Meldung live patching succeeded (Live-Patching erfolgreich) weist darauf hin, dass der Live-Patching-Vorgang erfolgreich abgeschlossen wurde.

12.1.2.4 Zurücksetzen von Live-Patches

Live-Patches können mit ulp trigger zurückgesetzt werden. Für das Zurücksetzen von Live-Patches stehen zwei Möglichkeiten zur Auswahl. Sie können einen Live-Patch durch Anwendung des zugehörigen .rev-Patch zurücksetzen:

ulp trigger -p PID LIVEPATCH.rev

Alternativ können Sie alle Patches einer bestimmten Bibliothek zurücksetzen. Beispiel:

ulp trigger -p PID --revert-all=LIBRARY

Im obigen Beispiel steht LIBRARY (BIBLIOTHEK) für die eigentliche Bibliothek, z. B. libcrypto.so.1.1.

Das zweite Verfahren kann von Nutzen sein, wenn der Quellcode des ursprünglichen Live-Patches nicht verfügbar ist oder wenn Sie einen bestimmten älteren Patch entfernen und einen neuen anwenden möchten, ohne dass die Zielanwendung potenziell unsicheren Code ausführt. Beispiel:

ulp trigger -p PID  --revert-all=libcrypto.so.1.1 new_livepatch2.ulp

12.2 Weitere Informationen

Weitere Informationen zu libpulp finden Sie im Git-Repository des Projekts.