Log4j-Schwachstelle – Ist Log4j 1.2.17 angreifbar (konnte keinen JNDI-Code im Quellcode finden)?
Lesezeit: 6 Minuten
Ravindra HV
In Bezug auf die Log4jJNDI Schwachstelle bezüglich Remotecodeausführung, die identifiziert wurde CVE-2021-44228 – (siehe auch Referenzen) – Ich habe mich gefragt, ob Log4j-v1.2 ist ebenfalls betroffen, aber am nächsten kommt mir die Überprüfung des Quellcodes JMS-Appender.
Die Frage ist, obwohl die Beiträge im Internet darauf hindeuten, dass Log4j 1.2 ebenfalls angreifbar ist, kann ich den entsprechenden Quellcode dafür nicht finden.
Übersehe ich etwas, das andere identifiziert haben?
Log4j 1.2 scheint eine Schwachstelle in der Socket-Server Klasse, aber ich verstehe, dass es überhaupt aktiviert werden muss, damit es anwendbar ist, und daher keine passive Bedrohung ist, im Gegensatz zu der JNDI-Lookup-Schwachstelle, die die identifizierte zu sein scheint.
Ist mein Verständnis – dass Log4j v1.2 – nicht anfällig für den Ausführungsfehler von jndi-remote-code ist, richtig?
Das Blogbeitrag von Cloudflare zeigt auch den gleichen Punkt wie von AKX an …. dass es von Log4j 2 eingeführt wurde!
Update Nr. 1 – Ein Fork des (inzwischen ausgemusterten) apache-log4j-1.2.x mit Patch-Fixes für einige Schwachstellen, die in der älteren Bibliothek identifiziert wurden, ist jetzt verfügbar (vom ursprünglichen log4j-Autor). Die Seite ist https://reload4j.qos.ch/. Am 21.01.2022 wurde die Version 1.2.18.2 veröffentlicht. Zu den bisher behobenen Schwachstellen gehören die in Bezug auf JMSAppender, SocketServer Und Kettensäge Schwachstellen. Beachten Sie, dass ich diese Informationen lediglich weitergebe. Habe die Korrekturen von meiner Seite nicht überprüft. Bitte beachten Sie den Link für weitere Details.
Beantwortet das deine Frage? Wie kann man die log4shell-Schwachstelle in Version 1.2 von log4j mindern?
– Piotr P. Karwasz
13. Dezember 2021 um 13:31 Uhr
Das ist schwierig, weil sich die Anleitung immer noch ständig weiterentwickelt. Ich empfehle, sich die spezielle Seite CISA anzusehen, die dafür eingerichtet wurde: cisa.gov/uscert/apache-log4j-vulnerability-guidance
Um weitere Verwirrung zu stiften, gibt RHEL jetzt an, dass einige ihrer Produkte eine Implementierung mit 1.2 haben, die angreifbar ist. In den kommenden Wochen wird es viele Untersuchungen zu dieser Schwachstelle geben (von guten und schlechten Akteuren), die Variationen des verwendeten Mechanismus identifizieren könnten. Wenn zu diesem Zeitpunkt überhaupt möglich, wäre es am sichersten, auf 2.15 zu aktualisieren. RHEL CVE-2021-4104
– Rikkori
13. Dezember 2021 um 12:23 Uhr
Lassen Sie uns dies eine Lektion sein – aktualisieren Sie nicht auf die neueste Version!
– Sridhar Sarnobat
13. Dezember 2021 um 23:06 Uhr
Vielleicht kann ich selbst antworten … JMSAppender muss als neuer Appender in der log4j-Konfigurationsdatei (oder über Code) hinzugefügt werden, richtig? Wenn dies nicht der Fall ist, gibt es kein Problem bezüglich dieser Schwachstelle. — jetzt gibt es ein CVE: nvd.nist.gov/vuln/detail/CVE-2021-4104
– Markus
14. Dezember 2021 um 15:40 Uhr
Es sei darauf hingewiesen, dass Log4j 1.x zwar nicht auf die gleiche Weise anfällig ist, zu diesem Zeitpunkt jedoch mehrere CVEs offen sind (nvd.nist.gov/vuln/detail/CVE-2021-4104, nvd.nist.gov/vuln/detail/CVE-2019-17571) und ist seit August 2015 abgekündigt (blogs.apache.org/foundation/entry/…). Es könnte eine Überlegung wert sein: “Wenn es bereits mehrere Exploits gibt, was könnte sonst noch gefunden werden?” für eine Bibliothek, die keine Updates mehr erhält.
– Brent schreibt Code
16. Dezember 2021 um 23:25 Uhr
Giraffen
Obwohl nicht von genau demselben Log4Shell-Problem betroffen, ist die Apache Log4j-Team empfiehlt zu entfernen JMSAppender Und SocketServerdas eine Schwachstelle in hat CVE-2019-17571aus Ihren JAR-Dateien.
Du kannst den … benutzen zip Befehl zum Entfernen der betroffenen Klassen. Ersetzen Sie den Dateinamen/die Version durch Ihren:
zip -d log4j-1.2.16.jar org/apache/log4j/net/JMSAppender.class
zip -d log4j-1.2.16.jar org/apache/log4j/net/SocketServer.class
Sie können die Dateien in Ihrer ZIP-Datei mit durchsuchen weniger Und grepz.B less log4j-1.2.16.jar | grep JMSAppender
Abgesehen davon empfiehlt Apache, dass Sie nach Möglichkeit auf die Version 2.x aktualisieren. Entsprechend ihre Sicherheitsseite:
Bitte beachten Sie, dass Log4j 1.x das Lebensende erreicht hat und nicht mehr unterstützt wird. Schwachstellen, die nach August 2015 gegen Log4j 1.x gemeldet wurden, wurden nicht überprüft und werden nicht behoben. Benutzer sollten auf Log4j 2 aktualisieren, um Sicherheitsfixes zu erhalten.
Nur zur Erinnerung: Log4j-JAR-Dateien befinden sich weiterhin in bereitgestellten Kriegsdateien und in Entwickler-Maven-Repositorys. Daher werden diese Klassen bei jeder Neuerstellung der Anwendung und erneuten Bereitstellung mit diesen wieder eingeführt.
– Benommen
16. Dezember 2021 um 9:10 Uhr
Benommen
Zusätzlich zu giraffesyos Antwort und falls es jemandem hilft – ich habe dieses Bash-Skript geschrieben – das Klassen entfernt, die als Schwachstellen identifiziert wurden (link hier zum Log4j-Entwicklungsthread) und setzt Eigenschaftendateien sind schreibgeschützt – wie vorgeschlagen hier in einem Red Hat Bugzilla-Thread.
Hinweis 1 – Es wird nicht auf die Verwendung dieser Klassen in Eigenschaften geprüft, es ist lediglich eine Möglichkeit, sie zu finden und zu entfernen – Verwendung auf eigene Gefahr!
Hinweis 2 – es kommt darauf an zip Und unzip wird installiert
#!/bin/bash
DIR=$1
APPLY=$2
# Classes to be searched for/removed
CLASSES="org/apache/log4j/net/SimpleSocketServer.class
org/apache/log4j/net/SocketServer.class
org/apache/log4j/net/JMSAppender.class"
PROGNAME=`basename $0`
PROGPATH=`echo $0 | sed -e 's,[\\/][^\\/][^\\/]*$,,'`
usage () {
echo >&2 Usage: ${PROGNAME} DIR [APPLY]
echo >&2 Where DIR is the starting directory for find
echo >&2 and APPLY = "Y" - to perform purification
exit 1
}
# Force upper case on Apply
APPLY=$(echo "${APPLY}" | tr '[:lower:]' '[:upper:]')
# Default Apply to N
if [ "$APPLY" == "" ] ; then
APPLY="N"
fi
# Check parameters
if [ "$DIR" == "" ] ; then
usage
fi
echo $APPLY | grep -q -i -e '^Y$' -e '^N$' || usage
# Search for log4j jar files - for class file removal
FILES=$(find $DIR -name *log4j*jar)
for f in $FILES
do
echo "Checking Jar [$f]"
for jf in $CLASSES
do
unzip -v $f | grep -e "$jf"
if [ "$APPLY" = "Y" ]
then
echo "Deleting $jf from $f"
zip -d $f $jf
fi
done
done
# Search for Log4j properties files - for read-only setting
PFILES=$(find $DIR -name *log4j*properties)
for f in $PFILES
do
echo "Checking permissions [$f]"
if [ "$APPLY" = "Y" ]
then
echo "Changing permissons on $f"
chmod 444 $f
fi
ls -l $f
done
14496700cookie-checkLog4j-Schwachstelle – Ist Log4j 1.2.17 angreifbar (konnte keinen JNDI-Code im Quellcode finden)?yes
Beantwortet das deine Frage? Wie kann man die log4shell-Schwachstelle in Version 1.2 von log4j mindern?
– Piotr P. Karwasz
13. Dezember 2021 um 13:31 Uhr
Das ist schwierig, weil sich die Anleitung immer noch ständig weiterentwickelt. Ich empfehle, sich die spezielle Seite CISA anzusehen, die dafür eingerichtet wurde: cisa.gov/uscert/apache-log4j-vulnerability-guidance
– Brent schreibt Code
16. Dezember 2021 um 23:21 Uhr