deb.funil.de
Signiertes APT-Repository mit selbst gebauten Paketen für Ubuntu-Versionen, die keine Updates mehr bekommen.
Inhalt
Derzeit sind das PHP-Pakete mit dem Fix gegen PHP2Shell (CVE-2026-109618, CVE-2026-109619), gebaut aus den Quellpaketen von Ondřej Surý. Der Telemetrie-Patch aus diesen Quellen ist nicht angewandt.
| Distribution | Codename | Quellpaket | Version | Pakete |
|---|---|---|---|---|
| wird geladen … | ||||
Die Tabelle wird aus den Indizes unter /build/dists/ gelesen.
Einbinden
1. Nur auf Ubuntu 16.04 xenial: https-Unterstützung für apt
Ab Ubuntu 18.04 kann apt https von Haus aus.
apt-get update
apt-get install apt-transport-https ca-certificates curl2. Schlüssel holen und prüfen
curl -fsSL https://deb.funil.de/build/funil-build.gpg \
-o /usr/share/keyrings/funil-build.gpg
gpg --no-default-keyring --fingerprint \
--keyring /usr/share/keyrings/funil-build.gpgDer Fingerabdruck muss lauten:
3539 4E39 BC06 2089 1EA7 A350 3ED6 7E7C CE5B 5FBE
RSA 4096, „Funil Build Repository“. Derselbe Schlüssel als Text: funil-build.asc.
3. Quelle eintragen
. /etc/os-release
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/funil-build.gpg]" \
"https://deb.funil.de/build $VERSION_CODENAME main" \
> /etc/apt/sources.list.d/funil-build.list
apt-get updateDas Repository führt nur die Codenames aus der Tabelle oben. Auf anderen Versionen meldet apt-get update einen Fehler für diese Quelle. Es gibt nur Pakete für amd64. arch=amd64 verhindert auf Systemen mit zusätzlicher i386-Architektur den Hinweis „doesn't support architecture 'i386'“.
4. Vorrang vor Ubuntu Pro (ESM)
printf '%s\n' 'Package: *' 'Pin: release o=funil-build' 'Pin-Priority: 520' \
> /etc/apt/preferences.d/funil-buildUbuntu Pro hebt seine ESM-Quellen auf Priorität 510, alle anderen Quellen haben 500. apt wählt zuerst nach Priorität und erst dann nach Version. Ohne diesen Eintrag bleibt deshalb die ESM-Version installiert, obwohl die Version von hier höher ist. Auf Systemen ohne Ubuntu Pro ändert der Eintrag nichts. Er betrifft nur Pakete aus diesem Repository und löst nie ein Downgrade aus.
5. Vorhandene Pakete aktualisieren
V=7.0 # die PHP-Version auf diesem System
apt-cache policy php$V-common
apt-get install --only-upgrade $(dpkg-query -W -f='${Package}\n' \
"php$V*" "libapache2-mod-php$V" "libphp$V-embed" 2>/dev/null)apt-cache policy zeigt die neue Version mit https://deb.funil.de/build als Quelle. Der zweite Befehl aktualisiert nur die Pakete dieser PHP-Version, die schon installiert sind.
6. Fix prüfen
strings gehört zum Paket binutils, das auf Servern oft fehlt:
apt-get install binutils
P='_array_init_singleton|zend_new_array_singleton'
for f in /usr/bin/php[0-9]* /usr/bin/php-cgi* /usr/sbin/php-fpm* \
/usr/lib/apache2/modules/libphp*.so; do
[ -f "$f" ] || continue
if strings "$f" | grep -q -x -E "$P"; then
echo "OK $f"
else
echo "FEHLT $f"
fi
doneGesucht wird eine Funktion, die erst mit dem Fix gegen PHP2Shell dazukommt: _array_init_singleton im Backport für PHP 5.6 und 7.0, zend_new_array_singleton ab PHP 8.4.27. Bei mod_php wirkt der Fix erst nach einem Neustart von Apache, bei FPM nach einem Neustart von php*-fpm. Die Prüfung gilt für die Pakete aus diesem Repository. Andere Builds, etwa von Ubuntu ESM, können den Fix anders umsetzen. Dort heißt „FEHLT“ nicht zwingend „verwundbar“.
Gedacht für bestehende Installationen. Die Pakete ersetzen PHP-Pakete, die schon installiert sind. Für eine Neuinstallation von PHP 5.6 oder 8.4 fehlen Abhängigkeiten, die nicht von hier kommen: php-common in der Version von Ondřej Surý und für PHP 5.6 zusätzlich libssl1.1.
Wieder entfernen
rm /etc/apt/sources.list.d/funil-build.list \
/etc/apt/preferences.d/funil-build \
/usr/share/keyrings/funil-build.gpg
apt-get updateBereits installierte Pakete bleiben dabei unverändert.