はじめに
よくAWSにふれるものです。
2021年12月10日、歴史的な日になるかもしれない、その日にJava ベースのロギングライブラリであるLog4Jの脆弱性が見つかりました。
詳しくは情報処理推進機構のページをご覧ください。
簡単に言うと、Log4Jの一部機能を悪用して、任意のコードを実行できてしまいます。
今回はAWS上で動いているJavaアプリケーションでそれを防ぐために、AWS公式が用意したWAFのルールを適用する手順を説明しようと思います。
これでLog4Jの誤作動を引き起こす文字列を含むリクエストを防ぐことができます。
手順
Javaアプリケーションへは、ELBを通ってサーバーに達っする想定で説明します。
なのでWAFはELBに挟みます。
Create web ACLをクリック
Nameにルールの名前を適用し、Regionを選択します。
Add AWS resourcesを選択します。
Application Load Balancerを選択、好きなALBを選択してAddします。
Add rulesからAdd managed rule groupsを選択。
AWS managed rule groupsを選択してから、Known bad inputsのAdd to web ACLをONにします。 その後、Editをクリック。
Log4JRCEのみcountをOFFにして、save ruleします。その後、Add rulesします。
目的のルールが追加されているか確認します。
もしも他にもルールがある場合は、目的のruleを選択してMove upをクリックすることで、順位が上に来ます。最上位にしましょう。
確認
これで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
まとめ
今回の脆弱性に対しては、世界的に温度感が高いので、早急に対応して、思わぬ事故を防ぎましょう。
誰かの助けになれば幸いです。