ヘヴィメタル・エンジニアリング

AWS特化型エンジニアのほのぼのヘヴィメタルブログ

ヘヴィメタル・エンジニアリング

クラウド特化型ヘヴィメタルエンジニアのほのぼのブログ

Log4J問題をAWS WAFで防ぐ手順

はじめに

よくAWSにふれるものです。

2021年12月10日、歴史的な日になるかもしれない、その日にJava ベースのロギングライブラリであるLog4J脆弱性が見つかりました。

詳しくは情報処理推進機構のページをご覧ください。

www.ipa.go.jp

簡単に言うと、Log4Jの一部機能を悪用して、任意のコードを実行できてしまいます。

www.jpcert.or.jp

今回はAWS上で動いているJavaアプリケーションでそれを防ぐために、AWS公式が用意したWAFのルールを適用する手順を説明しようと思います。

これでLog4Jの誤作動を引き起こす文字列を含むリクエストを防ぐことができます。

手順

Javaアプリケーションへは、ELBを通ってサーバーに達っする想定で説明します。

なのでWAFはELBに挟みます。

Create web ACLをクリック f:id:xkenshirou:20211215233834p:plain

Nameにルールの名前を適用し、Regionを選択します。

Add AWS resourcesを選択します。 f:id:xkenshirou:20211215234038p:plain

Application Load Balancerを選択、好きなALBを選択してAddします。 f:id:xkenshirou:20211215234408p:plain

Add rulesからAdd managed rule groupsを選択。 f:id:xkenshirou:20211215234548p:plain

AWS managed rule groupsを選択してから、Known bad inputsのAdd to web ACLをONにします。 その後、Editをクリック。 f:id:xkenshirou:20211215234703p:plain

f:id:xkenshirou:20211215234814p:plain

Log4JRCEのみcountをOFFにして、save ruleします。その後、Add rulesします。 f:id:xkenshirou:20211215235224p:plain

目的のルールが追加されているか確認します。 f:id:xkenshirou:20211215235338p:plain

もしも他にもルールがある場合は、目的のruleを選択してMove upをクリックすることで、順位が上に来ます。最上位にしましょう。 f:id:xkenshirou:20211215235459p:plain

確認 f:id:xkenshirou:20211215235632p:plain

これでCreate web ACLをすれば完了です!

確認

普段叩けるpingがOKで、悪意のあるリクエストが弾ければOKです。

通常のping

$ curl https://xxx.yyy.com/ping

悪意のあるリクエス

$ curl -H 'User-Agent: ${jndi:ldap://0.0.0.0:389/1111111}' https://xxx.yyy.com/ping

まとめ

今回の脆弱性に対しては、世界的に温度感が高いので、早急に対応して、思わぬ事故を防ぎましょう。

誰かの助けになれば幸いです。