NginxでCVE-2021-44228(Apache Log4j 2)を狙った攻撃を簡易的にブロック

Apache Log4j 2に深刻な脆弱性 CVE-2021-44228 が見つかりました.アクセスログから管理するサーバへもこの脆弱性を狙った攻撃を観測しました.

Log4jの深刻な脆弱性CVE-2021-44228についてまとめてみた – piyolog

今回はNginxで簡易的に攻撃をブロックしてみます.本質的にはペイロードを任意のヘッダへ追加された場合の対処にはならないため注意が必要です.

環境:

  • Nginx v1.20.1
  • Ubuntu 20.04.3 LTS (Focal Fossa)

設定例

以下は,設定を追加したNginxのConfigの抜粋です.mapを使い攻撃リクエストのペイロードが含まれるURLとUserAgentをパターンマッチでブロックしています.ブロックにはHTTPのステータスコード 444を使いました.

http {
    map $http_user_agent $block_ua_request {
        default 0;
        "~*\${jndi:" 1;
    }
    map $request_uri $block_request {
        default 0;
        "~*\$%7Bjndi:" 1;
    }

    server {
        if ($block_ua_request = 1) {
            return 444;
        }
        if ($block_request = 1) {
            return 444;
        }
    }
}

実際にcurlでリクエストを発行するとリクエストが拒否されていることがわかります.

$ curl "https://blog.koyama.me/$%7Bjndi:xx"
curl: (92) HTTP/2 stream 0 was not closed cleanly: PROTOCOL_ERROR (err 1)

余談

Qiitaへ記事を投稿しようと試みたところ,WAFにブロックされました.

参考資料

過去のISUCONで知ったNginxのmapを活用できてよかったです.

NginxでCVE-2021-44228(Apache Log4j 2)を狙った攻撃を簡易的にブロック” への1件のフィードバック

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中