Apache Struts 2 の深刻な RCE 脆弱性が FIX:以前のパッチにおける問題を修正

Critical Apache Struts RCE vulnerability wasn’t fully fixed, patch now

2022/04/13 BleepingComputer — 圧倒的な支持を得ている Apache Struts プロジェクトの、すでに解決されたと考えられていた深刻な脆弱性において、完全には改善されていなかったことが判明し、新たな修正が提供されることになった。そのため、Cybersecurity and Infrastructure Security Agency (CISA) も、パッチを適用した最新の Struts 2 へのアップグレード急ぐよう、ユーザーと管理者に対して促している。Struts は、Java の Web デベロッパーが、model–view–controller (MVC) アプリケーションを構築するために用いる、オープンソースのアプリケーション開発フレームワークである。

リモート・コード実行 (RCE) の脆弱性は完全に解決されていない

今週に DHS と CISA は、深刻な OGNL インジェクションの脆弱性を修正した、Struts2 Ver 2.5.30 以上へのアップグレードを急ぐよう、各組織に呼びかけている。この脆弱性 CVE-2021-31805 は、Struts 2 の Ver 2.0.0〜2.5.29 に存在する。

この脆弱性は、同じ OGNL インジェクションのバグである、脆弱性 CVE-2020-17530 (CVSS 値 9.8) における不完全な修正に起因している。Object-Graph Navigation Language (OGNL) とは、オープンソースの Java 用 Expression Language (EL) において、Java 言語で使用される式の範囲を簡素化するものである。

また OGNL は、開発者による配列の取り扱いも簡素化する。しかし、信頼されていないデータや、ダイレクトなユーザー入力に基づく OGNL 式の解析は、セキュリティの観点で問題が生じる場合がある。

2020年の時点において、GitHub の研究者である Alvaro Munoz と Aeye Security Lab の Masato Anzai は、Struts2 の Ver 2.0.0〜2.5.25 において、特定の状況下で[二重評価] の欠陥があることを報告していた。脆弱性 CVE-2020-17530 のアドバイザリでは、「開発者が %{…} 構文を用いて強制 OGNL 評価を適用した場合、タグの属性の一部が二重評価される可能性がある。したがって、信頼されていないユーザー入力に対して、強制 OGNL 評価を使用すると、リモートコード実行やセキュリティ劣化につながる可能性がある」と解説されている。

Apache は Struts 2.5.26 において、この 2020年のバグを解決していたが、研究者の Chris McCown は、適用された修正が不完全であることを後に発見した。そのため McCown は、Struts の Ver 2.5.26 以降においても、二重評価の問題が再現する可能性があることを Apache に報告し、新たな CVE-2021-31805 が割り当てられるようになった。

したがってユーザーに対しては、Struts 2.5.30 以上にアップグレードし、信頼できないユーザー入力に基づくタグの属性においては、強制 OGNL 評価を使用しないようにすることが推奨されている。さらに、Apache は、ベストプラクティスのためのセキュリティガイドに従うことを推奨している。

2017年の Equifax ハッキングは OGNL インジェクションに起因する

Log4Shell や Spring4Shell といった、知名度の高い脆弱性を持つ Java コンポーネントが、サイバー・セキュリティの世界を席巻した1年だった。そして今、その2年前における、Struts の深刻な欠陥が復活したことで、セキュリティの専門家や組織にとっては、自社の Web サーバー環境を綿密に精査する必要性が生じているのかもしれない。

Struts フレームワークは、これまでにも深刻な脆弱性を抱えてきた経緯があり、特に OGNL の安全性を考慮しない利用に起因する、リモートコード実行の欠陥が指摘されている。もう1つの、Struts 2 の OGNL インジェクションの脆弱性 CVE-2017-5638 は、以前にランサムウェア・グループなどにより、野放し状態で悪用されたことがあった。

消費者信用調査大手の Equifax は、同社で 2017年に発生したハッキングが、その当時のゼロデイ脆弱性 CVE-2017-5638 の、悪用に起因することを後になって認めている。この、Equifax におけるインシデントでは、1億4300万人分のユーザー・データ流出し、その氏名/社会保障番号 (SSN)/生年月日/住所/運転免許証番号などが、ハッカーに盗み出された。

また、約209,000人分の、米国ユーザーのクレジットカード番号も、この脅威アクターにより不正にアクセスされた。正確な被害者数は明らかにされていないが、この情報漏洩が英国/カナダの人々にも、何らかの影響を与えたことを、Equifax は認めている。

Object-Graph Navigation Language (OGNL) のバグに起因するとのことなので、ブログ内を OGNL で検索したところ、Atlassian Confluence でも問題が生じているようです。また、2021年8月の「Linux System をハックする深刻な脆弱性のリスト Top-15」にも、Apache Struts OGNL が2件リストアップされていましたが、CVE-2017-12611/CVE-2018-11776 という古いものでした。

%d bloggers like this: