Kürzlich wurde CVE-2024-2961 veröffentlicht, die eine Bufferbloat-Schwachstelle in GNU libc-Versionen < 2.39 bestätigt, sobald Zeichensätze in bestimmte chinesische Codierungen umgewandelt werden sollen. Diese Schwachstelle betrifft unter anderem auch PHP. Sobald iconv verwendet wird, um Zeichensätze zu übersetzen, besteht das Potenzial auf eine RCE.
FYI: WordPress und Joomla nutzen beispielsweise PHP im Backend.
Es ist ratsam, auf die neueste glibc Version (> 2.40) zu aktualisieren. Wenn man jedoch nicht in der Lage ist zu aktualisieren, kann man die Schwachstelle anderweitig deaktivieren.
Überprüfen der glibc-Version
ldd --version
Wenn der Server glibc 2.39 oder älter aufweist, dann sind die ISO-2022-CN-EXT-Codierungsmodule des Systems anfällig.
Überprüfen des aktiven Codierungsmoduls in iconv
iconv -l | grep -E 'CN-?EXT'
Wenn die Ausgabe dem folgenden Text entspricht, dann ist die Schwachstelle aktiv:
ISO-2022-CN-EXT//
ISO2022CNEXT//
Deaktivieren des mangelnden Moduls
Normalerweise ist die Konfigurationsdatei für iconv-Module unter dem Verzeichnispfad /usr/lib/x86_64-linux-gnu/gconv/gconv-modules zu finden, könnte sich aber auch bei diversen Systemen an unterschiedlichen Orten befinden. Der Befehl find / -name gconv-modules sollte Abhilfe schaffen.
Mit einer einfachen Einkommentierung der erwähnten Zeichencodierung in der gconv-modules-Konfigurationsdatei sollte die Schwachstelle behoben sein. Die Konfigurationsdatei ist entweder unter ./gconv-modules oder in gconv-modules.d/gconv-modules-extra.conf auffindbar:
# from to module cost #alias ISO2022CNEXT// ISO-2022-CN-EXT// #module ISO-2022-CN-EXT// INTERNAL ISO-2022-CN-EXT 1 #module INTERNAL ISO-2022-CN-EXT// ISO-2022-CN-EXT 1
Abschließend noch die evtl. vorhandene Cache-Datei löschen und erneut initiieren:
rm gconv-modules.cache iconvconfig
Erneut überprüfen, ob das Modul aktiv ist:
iconv -l | grep -E 'CN-?EXT'
Mitigieren der iconv-Schwachstelle für PHP (CVE-2024-2961)