Zum Inhalt springen

Mitigieren der iconv-Schwachstelle für PHP (CVE-2024-2961)

25. April 2024 durch
Christian Lisec

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'
Christian Lisec 25. April 2024
Diesen Beitrag teilen
Stichwörter