本番環境でやらかしちゃったかもしれない話
本番環境でやらかしちゃった人 Advent Calendar 2021 22日目。
log4jの脆弱性CVE-2021-44228を狙った攻撃が多発していますね。
ご存知の方も多いと思いますが、私のサーバにもこの日(12/10)から多くの攻撃者が訪れています。
FortiGuard Labs Weekly Threat Briefsでは、毎週どんな攻撃が流行っていたのか、週ごとにまとめて紹介しています。12/17掲載記事
Log4j.Error.Log.Remote.Code.Execution
が初登場で 検出数で1位を獲得しました。ThinkPHPやPHPUnitなど、昨年春からTOP5に鎮座していた競合からトップを奪取しました。すごいことです。
今回は、なんとlog4jさんのノック攻撃に返信してしまい、さらなる攻撃(第二波、第三波...)を受けるという失態を犯してしまいました。
皆さんも、サイバー問題を調査する際には、十分に注意してください。
TL;DR
- 実際に受け取った攻撃コードから攻撃を調査するために、log4jへの攻撃が成功したと仮定し、攻撃コードを実行する。
- 攻撃者が用意したサイトにアクセスすると、攻撃用のJavaシリアライズコードが降ってくる。
- 被害サーバが特定されたことで、さらなる攻撃にさらされることになります。
Log4j Vulnerability Summary はじめに。
-
Apache Log4j 脆弱性ガイダンス|CISA
- おそらく最も権威があり、包括的な情報(各ベンダーの対策や影響状況)が記載されています。
-
JC3コラム - あなたのサーバーやウェブサイトは大丈夫! | トピックス|脅威情報|日本サイバー犯罪対策センター(JC3)
- JC3 という組織が一般向けに解説しています(ケー察も加わっています)。対応が甘い経営者に説明する際に紹介するにはわかりやすいページです。
-
Log4jの深刻な脆弱性CVE-2021-44228のまとめ - piyolog
- みんな大好きpiyokangoは、日本語で程よくまとまったまとめがあります。最初に把握するのに良いですね。
-
脆弱性を緩和するAWS WAF「Log4j Log4JRCE」、DevelopersIOサイトで3日分の検知結果を紹介|DevelopersIO
- クラスメソッドのAWS WAFは、実際にLog4jを標的とした攻撃を検出しました。
Log4j exploitはUser-Agentとpathを利用する。
Log4jの攻撃コードは単純で、log4jがログとして食べれば HTTPリクエストのどこでも 成功します.
そのため、一般公開されているWebサーバを運用している場合、アクセスログに大量に記録され、誰でも簡単に入手・閲覧することが可能です。
試してみたくなるようなコード実行
この攻撃の詳細については、Juniperのブログなどもそうであるように、多くのブログで紹介されています。
サーバーに配信された攻撃コードだけでなく、攻撃者がどのような攻撃を仕掛けてくるかを確認するのもよいでしょう。
調べる最も簡単な方法は、 ldap://example.com:389/...
で始まるURLを追加することである。最も簡単な確認方法は、実際に ldap://example.com:389/...
などで始まる URL を curl
コマンドでリクエストしてみることです。
しかし、ここには大きな罠があります。
攻撃者が待ち受ける場所
攻撃者がサーバーに仕掛けたものには、主に2つのパターンがあるようです。
- LDAPには、シリアライズされたJavaオブジェクトを保存するためのスキーマが定義されています。http://www.zytrax.com/books/ldap/ape/java.html
- 被害にあったサーバーをノックして反応があれば、第2波、第3波の実攻撃を仕掛けるための罠を仕掛けている。
2番目の攻撃を仕掛けるときは、LDAPではなくDNSをターゲットにしようとするはずです。
LDAPの場合、インターネットへの通信がWebサーバーから発信される可能性は極めて低いので、ファイアウォールでブロックされることが多いのですが、DNSの場合、Webサーバーから発信される可能性は低いので、ファイアウォールでブロックされることはありません。しかし、DNSの場合、DNSの問い合わせはファイアウォール内のDNSキャッシュサーバーを経由してインターネット側へ発信されることになる。
攻撃者が用意した権威あるサーバにDNSクエリが届けば、被害サーバは応答したことになり、ターゲットにLog4jの脆弱性があることを知られることになります。
では、攻撃コード(exploit)を実行する場合...
攻撃者のサーバーへの対応としてエクスプロイトコードを試す場合、TorなどでPCを匿名化してガードするのは当然ですが、本番サーバーに届いたコードを解析せずにそのまま実行しないようにしましょう。
どんな情報がついているのかわからないままコードを実行すると、報復ではないにしろ、とんでもない攻撃を招いてしまうかもしれません。