yamory Blog

Apache Struts 2 の脆弱性 S2-061(CVE-2020-17530)PoC検証

2020 年 12 月 8 日に Apache Struts 2 の脆弱性 S2-061(CVE-2020-17530)が公開されました。

影響としては、Struts 2.5.25 までのバージョンで OGNL 式の二重評価によってリモートコード実行(RCE)が引き起こされる恐れがあります。

また、既に PoC(攻撃)コードが公開されていますので、Apache Struts 2 を利用されている方は 2.5.26 へアップデートを行うことをお勧めします。

Security Bulletins S2-061
https://cwiki.apache.org/confluence/display/WW/S2-061

yamory では、PoC コードの検証を行い悪用可能であることも確認しました。

Struts 2.5.25 までのバージョンで OGNL 式の二重評価によってリモートコード実行(RCE)が引き起こされる恐れがあります。
脆弱性を悪用した攻撃の仕組み

検証環境

今回は以下のような環境で検証を行いました。

ベースイメージ : maven:3.6.3-jdk-8
Apache Struts : 2.5.25
Apache Commons Collections : 3.2.2
Jetty Maven Plugin : 9.4.31.v20200723

検証結果

PoC コードを利用して cat /etc/passwd の実行を試みたところ、以下のような実行結果を得ることができました。

PoC コードを利用して cat /etc/passwd の実行を試みたところ、任意のコード実行を再現できたことが確認できました。

実行結果から PoC コードを利用して任意のコード実行を再現できたことが確認できました。

検証では cat /etc/passwd を対象ウェブアプリ上で実行させていますが、この部分を任意のものに変更して実行させることができます。

また今回検証を行った PoC コードに関しては、Apache Commons Collections を利用するためクラスパスに Apache Commons Collections を含む必要があります。

対策

Apache Software Foundation より以下の対策が推奨されています。

  • 信頼できないユーザー入力の強制 OGNL 評価を避ける
  • Struts 2.5.26 へアップデートする

Web アプリケーションファイアウォール(WAF)によっては S2-061(CVE-2020-17530)に対応しているものもあり、リスクを軽減することもできます。
ご利用の WAF が対応しているか確認し、早めに上記の対策を行うことをお勧めします。

脆弱性に関する参考情報

脆弱性の報告者である @pwntester(Alvaro Muñoz)氏による脆弱性の詳細な説明が以下のページにて公開されています。

GHSL-2020-205 : Remote Code Execution in Apache Struts 2 - S2-061 - CVE-2020-17530

3 つの Issue という形で、JSP タグ、FreeMarker タグ、Velocity タグの今回の問題点について書かれています。
どこで複数回の OGNL 式の評価がされてしまっていたのか、過去の修正が不完全だったことについても書かれています。

さいごに

Apache Struts の脆弱性を含め、自身が利用しているソフトウェアに脆弱性が報告されていないかどうかは常に把握しておくことが大切です。
利用しているソフトウェアとそのバージョンは一覧化をしておき、日常的に情報を収集することをおすすめします。

さいごになりますが yamory は、効率良く脆弱性の管理と対応を行うことができる脆弱性管理ツールとなっております。
パッケージ管理システムで管理されているライブラリの脆弱性を自動で検出し、対応優先順位付けするため、脆弱性を一元管理することができます。

無料でプロプラントライアルもできますので、ぜひ一度お試しください。

また、yamory ではセキュリティに関するイベントを随時開催中です。
今月は、12 月 24 日(木)16:00 〜 17:30 に「エンタープライズアジャイル開発における品質管理とセキュリティ対策を yamory で考える」を開催します。
ご興味のある方はぜひご参加ください。

オープンソース脆弱性管理ツール yamory

  • 利用中のOSSを抽出し
    脆弱性を自動スキャン
  • 脆弱性への対応優先度を自動で分類
  • 組織規模に合わせたプランを選択可能

フリー

¥0

個人向け

1チームまでの開発チーム作成

yamory を使いはじめる

プロ

有料料金はお問い合わせください

中〜大規模組織向け

無制限の開発チーム作成

開発チームを俯瞰できるセキュリティチーム機能

危険な脆弱性の Slack 連携通知機能

Jira Cloud と連携

シングル・サインオン(SSO)連携*

* SSO 連携は無料トライアルではご利用できません。プロプラン契約後からご利用できます。

30日間の無料トライアルを開始