Tag drei der Logbuch-Serie - der Vorsatz hält weiter.
Brotli, die Zweite
Die Brotli-Lücke (CVE-2026-111497), je nach Quelle auch HTTP2Shell, Node2Shell oder Broccoli2Shell genannt, hat mich heute erneut beschäftigt.
Um unsere Server zu prüfen, habe ich ein kleines Skript genutzt, das per Ansible auf allen Servern lief. Die Ausgaben habe ich anschließend eingesammelt und ausgewertet. Das Skript schaut sich an:
- installierte Brotli-Pakete (RPM oder Debian) und ob deren Changelog die CVE erwähnt - dann ist der Fix drin,
- welche laufenden Prozesse
libbrotlidecgeladen haben, - die Node.js-Version,
- Brotli-Pakete für Python (
Brotli,brotlicffi,brotlipy), - installierte .NET-Runtimes,
- und mitgebrachte Kopien von
libbrotlidecaußerhalb von/usr/lib*- die gehen bei normalen Paket-Updates nämlich gerne unter.
Vielleicht hilft es ja jemandem:
#!/bin/sh
echo "=== $(hostname) ==="
echo "--- Pakete mit brotli im Namen (Changelog-Check auf CVE):"
if command -v rpm >/dev/null 2>&1; then
rpm -qa 2>/dev/null | grep -i brotli | while read -r p; do
if rpm -q --changelog "$p" 2>/dev/null | grep -q "CVE-2026-111497"; then
echo "$p [Changelog nennt CVE -> gepatcht]"
else
echo "$p [Changelog OHNE CVE -> pruefen]"
fi
done
elif command -v dpkg-query >/dev/null 2>&1; then
dpkg-query -W -f='${Package} ${Version}\n' '*brotli*' 2>/dev/null | while read -r n v; do
if zgrep -qs "CVE-2026-111497" /usr/share/doc/"$n"/changelog.Debian.gz; then
echo "$n $v [Changelog nennt CVE -> gepatcht]"
else
echo "$n $v [Changelog OHNE CVE -> pruefen]"
fi
done
fi
echo "--- Prozesse, die libbrotlidec geladen haben:"
grep -l libbrotlidec /proc/[0-9]*/maps 2>/dev/null | cut -d/ -f3 | while read -r pid; do
cat /proc/"$pid"/comm 2>/dev/null
done | sort | uniq -c
echo "--- Node.js:"
command -v node >/dev/null 2>&1 && node -v || echo "kein node"
echo "--- Python-Brotli (pip / brotlicffi):"
for py in python3 python; do
command -v $py >/dev/null 2>&1 && $py -c 'import importlib.metadata as m
for n in ("Brotli","brotlicffi","brotlipy"):
try: print(n, m.version(n))
except Exception: pass' 2>/dev/null
done
echo "--- .NET:"
command -v dotnet >/dev/null 2>&1 && dotnet --list-runtimes || echo "kein dotnet"
echo "--- Gebuendelte/fremde libbrotlidec (ausserhalb /usr/lib*):"
find / -xdev \( -path /proc -o -path /usr/lib -o -path /usr/lib64 \) -prune -o -name 'libbrotlidec*' -print 2>/dev/nullGarten: Diesmal ist die Batterie leer
Im Garten ist heute nicht so viel vorangegangen. Die Tochter unseres Bekannten, der sich um den Gartenumbau kümmert, war leider krank, und er musste sie betreuen und konnte somit erst ab ca. 15 Uhr bei uns sein.
Als wäre das nicht genug, war auch noch die Starterbatterie vom Bagger leer. Gestern der Tank, heute die Batterie. Die Ursache war schnell gefunden: Der Schlüssel stand nicht ganz auf Nullstellung, und so hat der Bagger langsam die Batterie leergezogen.
Ikea, pünktlich auf die Minute
Die zweite Ikea-Lieferung stand heute tatsächlich um 7 Uhr vor der Haustür. Gut, als Lieferzeit war 7 bis 11 Uhr angegeben. Aber seit wann kommt so etwas dann auch wirklich pünktlich um 7?!
Mehr Leistung für die Grafikkarte?
Zum Schluss bin ich noch über gpu-unlock gestolpert und habe es direkt bei mir installiert. Ich hoffe, dass es bei meiner RTX 3060 Ti wirklich so viel bringt, wie die README verspricht. Ob das so ist, berichte ich, sobald ich es ausprobiert habe.