PHP2Shell-Mitigation unter Ubuntu anwenden

Mit PHP2Shell wurden zwei kritische Sicherheitslücken in PHP bekannt, welche unter den Kennungen CVE-2026-109618 und CVE-2026-109619 geführt werden. Sie ermöglichen unter bestimmten Bedingungen die Ausführung beliebigen Codes auf betroffenen Servern.

Canonical hat entsprechende Sicherheitsupdates für Ubuntu veröffentlicht. Um die Sicherheitslücken zu schließen, sollte das System aktualisiert werden:

apt update
apt upgrade

Alternativ kann die Aktualisierung gezielt über den Ubuntu-Pro-Client angestoßen werden:

pro fix USN-8948-1

Ob die beiden Sicherheitslücken bereits geschlossen sind, lässt sich mit folgenden Kommandos einzeln überprüfen:

pro fix --dry-run CVE-2026-109618
pro fix --dry-run CVE-2026-109619

Dabei ist auf die konkrete Ausgabe zu achten. Da der Dry-Run auch eine erfolgreiche Aktualisierung simuliert, bedeutet eine Meldung über eine behobene Sicherheitslücke nicht zwangsläufig, dass das Update bereits installiert wurde. Eine entsprechende Bestätigung liefert die Meldung:

The update is already installed.

Über den Ubuntu-Sicherheitshinweis von Canonical lassen sich beide Sicherheitslücken auch gemeinsam überprüfen:

pro fix --dry-run USN-8948-1

Die Ausgabe des Kommandos gibt entsprechende Auskunft:

USN-8948-1: PHP vulnerabilities
Associated CVEs:
 - https://ubuntu.com/security/CVE-2026-109618
 - https://ubuntu.com/security/CVE-2026-109619

Fixing requested USN-8948-1
1 affected source package is installed: php8.5
(1/1) php8.5:
A fix is available in Ubuntu standard updates.
The update is already installed.

✔ USN-8948-1 is resolved.

Nach dem Update müssen die betroffenen PHP-Dienste gegebenenfalls neu gestartet werden, damit die aktualisierten Versionen verwendet werden.

SSH-Schlüssel auf einer Storage Box von Hetzner installieren

Die Storage Boxen von Hetzner werden unter anderem gerne für Backups von Servern genutzt. Damit ein solchen mit entsprechenden Werkzeugen wie Restic erstellt werden können, ist meist ein SSH-Zugang vonnöten. Um den öffentlichen Schlüssel des Servers auf die Storage Box zu übertragen, kann folgender Befehl genutzt werden:

cat ~/.ssh/id_ed25519.pub  | ssh -p23  install-ssh-key

Nach der Abfrage des Passwortes für die Storage Box wird der Schlüssel übertragen und damit automatisch beim Aufbau einer SSH-Verbindung genutzt.

Upgrade einer Minecraft-Welt erzwingen

Meine mittlerweile über fünfzehnjährige Minecraft-Welt Akaria, belegt speichertechnisch bereits etliche Gigabyte auf der Festplatte. Allerdings ist dies bei solchen gewachsenen Welten nicht unbedingt das Problem. Bedingt durch viele Upgrades der Minecraft-Server-Versionen und damit einhergehenden Änderungen, wie z.B. am Chunk-Format, befindet sich irgendwann ein buntes Sammelsurium an Daten in den Weltordnern. An sich ist dies kein Problem, da Chunks beim Laden im Spiel automatisch konvertiert werden.

Ein Teil der Minecraft-Welt Akaria

Allerdings kann dies bei vielen Chunks mit Performanceeinbußen verbunden sein und die Chunks könnten teilweise noch Daten enthalten, die nur aufgrund vorheriger Versionen in diesen schlummern, aber in dieser Form nicht mehr benötigt werden. In einem solchen Fall bietet es sich an ein Upgrade aller Chunks und Regionen zu erzwingen:

screen java -Xms16G -Xmx16G -jar server.jar --forceUpgrade --recreateRegionFiles --eraseCache

Durch den Screen-Befehl kann die Session im Hintergrund weiterlaufen, nachdem sie detached wurde (Strg + A, anschließend Strg + D; Wiederaufruf mittels screen -r).

Damit beginnt der Minecraft-Server die Entities, POIs und Chunks zu upgraden. Während dieses Vorgangs, der je nach Welt, etliche Stunden dauern kann, ist der Minecraft-Server nicht erreichbar. In der Log-Datei latest.log kann der Fortschritt verfolgt werden:

[20:21:17] [Server thread/INFO]: 3% completed (10558 / 343881 chunks)...
[20:21:18] [Server thread/INFO]: 3% completed (10613 / 343881 chunks)...
[20:21:19] [Server thread/INFO]: 3% completed (10661 / 343881 chunks)...
[20:21:20] [Server thread/INFO]: 3% completed (10736 / 343881 chunks)...
[20:21:21] [Server thread/INFO]: 3% completed (10818 / 343881 chunks)...
[20:21:22] [Server thread/INFO]: 3% completed (10869 / 343881 chunks)...
[20:21:23] [Server thread/INFO]: 3% completed (10906 / 343881 chunks)...

Während die Option forceUpgrade dafür sorgt, dass der Upgradeprozess überhaupt angestartet wird, sorgt recreateRegionFiles dafür das neue und saubere Region-Dateien erzeugt werden, anstatt die alten Dateien nur zu bearbeiten. Die Option eraseCache löscht cacheähnliche Daten aus den NBT-Daten, darunter unter anderem Heightmaps, BlockLight und SkyLight. Diese Daten werden beim Neuladen der Chunks im Server ebenfalls wieder neu erzeugt.

Ist der Vorgang am Ende abgeschlossen, kann der temporär gestartete Server beendet werden und der Minecraft-Server wieder im Produktivbetrieb gestartet werden. Durch das Upgrade, das Löschen der Caches und der Neuanlage der Regionen, sollten viele Altlasten und potenzielle Probleme aus den Daten entfernt werden. Dies schlägt sich im Endeffekt auch positiv auf die Performance des Spieles im Serverbetrieb nieder.

Minecraft-Karten über BlueMap rendern

Für die Welten in Minecraft existieren eine Reihe von Lösungen, um diese als Karte zu rendern. Bis vor einiger Zeit nutze ich Mapcrafter als Renderer. Allerdings wurde dieser nicht mehr weiter gepflegt, sodass es mit neueren Minecraft-Versionen zu Darstellungsfehlern und ähnlichen Problemen kommt. Eine Alternative kann in einem solchen Fall BlueMap sein.

BlueMap mit einer Map

Während Mapcrafter die Daten der Minecraft-Welt nutzte, um die Karten mit Leaflet anzuzeigen, integriert sich BlueMap in Server wie Paper als Plugin.

Die 3D-Ansicht in der BlueMap

Nach der Installation und entsprechender Konfiguration kann BlueMap anschließend im Browser genutzt werden. Das Rendering findet hierbei im Minecraft-Serverprozess statt, sodass die Karte immer aktuell ist.

SSH-Schlüssel neu generieren

Um Verbindung mittels SSH aufzubauen bzw. solche entgegenzunehmen, wird ein SSH-Schlüssel benötigt. Für den OpenSSH-Server finden sich diese Schlüssel im Verzeichnis /etc/ssh/. Um die Schlüssel für den Server neu zu generieren, müssen die alten Schlüssel gelöscht werden:

rm /etc/ssh/ssh_host_*

Anschließend wird der OpenSSH-Server neu konfiguriert, damit neue Schlüssel erzeugt werden:

dpkg-reconfigure openssh-server

Nachdem dies geschehen ist, muss im letzten Schritt der SSH-Server neu gestartet werden:

systemctl restart ssh

Damit sind die Schlüssel ausgetauscht. Bei einem erneuten Verbindungsversuch, wird ein entsprechender Client deshalb eine entsprechende Warnmeldung ausgeben, welche dann bestätigt werden muss.