Webサイトの安全確認を3ステップで SiteLock

事例から考えられるStruts2の脆弱性を狙ったサイバー攻撃のシナリオ


はじめに

個人事業主としてフリーランスのエンジニアをしている吉田です。
毎日のように発生しているサイバー攻撃、その中でも特にWebサイトへの攻撃は後を絶ちません。特にここ最近で標的にされやすいのが「Apache Struts2」です。Struts2はJavaのフレームワークの1つで、0からWebアプリケーションを開発するよりもはるかに効率的に開発を行うことができるメリットがありますが、脆弱性がたびたび発見されサイバー攻撃の被害を受けやすいデメリットも併せ持ちます。

今回の記事では、Struts2を対象としたサイバー攻撃の事例を4つご紹介します。

2.Struts2脆弱性のメカニズム

Struts2で大きく被害を出していると言われるのが、OGNL(Object Graph Navigation Library)インジェクションです。OGNLは、JavaとHTTPとを結びつけるための役割と、JSP(Java Server Page)内での記述をより便利にする役割を担っています。

OGNLを使うことで、ほぼJavaのコードそのものを記述できます。つまり攻撃者が任意のJavaのコードを実行できるということでもあります。とても便利な反面、攻撃者にとっては格好のねらい目でもあるわけです。

2.Struts2脆弱性のメカニズム

Struts2で大きく被害を出していると言われるのが、OGNL(Object Graph Navigation Library)インジェクションです。OGNLは、JavaとHTTPとを結びつけるための役割と、JSP(Java Server Page)内での記述をより便利にする役割を担っています。

OGNLを使うことで、ほぼJavaのコードそのものを記述できます。つまり攻撃者が任意のJavaのコードを実行できるということでもあります。とても便利な反面、攻撃者にとっては格好のねらい目でもあるわけです。

3.事例紹介

事例① 国土交通省で約20万件の顧客情報が流出

国土交通省は2017年6月6日、Struts2の脆弱性を攻撃され、最大で約20万件の土地関連情報が流出した恐れがあると公表しました。

攻撃されたのはWebサイト「不動産取引価格アンケート回答」で、適正な公示地価を判定するため、不動産取引の実例をアンケートで収集するという目的を持っています。

Struts2の脆弱性を悪用し、サイトに悪意のあるプログラムを仕込むことでアンケート情報を流出させた可能性があります。

アンケート回答サイトを運営する国交省によると、同サイトの運営委託業者Aに調査を依頼して、同サイトがStruts2を使っていると判明したのは3月上旬です。

2017年度の予算で脆弱性対策とタブレット対応などの機能追加を図るため5月に業者Aのグループ会社Bと契約しました。その後システム改修に着手したところ、6月2日に同サイトに悪意のあるプログラムが仕込まれているのが判明し、当日午後4時に同サイトを停止しました。

氏名、法人名、契約日、取引価格、登記上の地番と住居表示などのアンケート回答情報が最大4355件流出した恐れがあります。加えて、登記所などで入手できる情報ではありますが、所有権移転登記情報も最大19万4834件流出した恐れがあります。

事例② 総務省で2.3万人の個人情報が流出

総務省は2017年4月13日、Webサイトの「地図による小地域分析(jSTAT MAP)」がStruts2の脆弱性を悪用した不正アクセスを受け、最大で2万3000人分の個人情報が流出した可能性があると公表しました。

Struts2が動作するAP(アプリケーション)サーバーのログを解析したところ、悪意のあるプログラムが複数回設置されていて、最初の設置は3月9日でした。さらに、4月10日に通常よりも大きいサイズのファイルをダウンロードされたログがあることも判明しました。

DB(データベース)サーバーに不正アクセスされたログはありませんでしたが、APサーバーの管理者権限を乗っ取られてDBサーバーにアクセスされた可能性があります。

総務省の担当者が不正アクセスに気が付いたのは4月11日午前中で、きっかけはウイルス対策ソフトの定期スキャンで悪意のあるプログラムを検出したことでした。被害拡大を防ぐため、正午にサイトを停止しています。

この攻撃により流出した恐れがある個人情報は、氏名、メールアドレス、職業、会社名、学校名、利用目的です。さらに、電話番号、性別、年代、住所、具体的利用目的、情報の入手先、利用者がアップロードした店舗などの情報も流出した可能性があります。

事例③ GMOペイメントゲートウェイが運営しているサイトから個人情報72万件が流出

GMOペイメントゲートウェイ(GMO-PG)は2017年4月5日、Struts2の脆弱性を悪用され、個人情報を不正に取得されたことを発表しました。

Struts2の脆弱性「CVE-2017-5638/S2-045」を突かれたのが流出の直接的原因です。GMO-PGが3月9日、この脆弱性の対象となる同社のシステムの洗い出しを行ったところ、上記2サイトに悪意あるプログラムが仕掛けられ、第三者に不正にデータを取得された可能性が高いことが判明しました。8日未明に不正アクセスされた痕跡が確認されていて、その時点でプログラムが仕掛けられたとみられています。

情報流出があったのは「東京都税クレジットカードお支払サイト」と「団体信用生命保険特約料クレジットカード支払いサイト」です。前者からは、クレジットカードのカード番号、有効期限と利用者のメールアドレスの流出が判明しました。後者からは、クレジットカードカード番号、有効期限、セキュリティコード、申込日、利用者の住所、氏名、電話番号、生年月日、メールアドレスの情報が不正に取得されています。

流出した可能性のある情報は、東京都税クレジットカード支払いサイトで延べ67万6290件、団体信用生命保険特約料クレジットカード支払いサイトで延べ4万3540件の計、約72万件にのぼります。

事例④ ぴあが運営するサイトからクレジットカード情報3.2万件が流出の可能性

ぴあが運営を受託しているB.LEAGUEのチケット販売サイトとファンクラブ受付サイトが、外部から不正アクセスを受け、カード情報3万2187件などが漏えいした可能性があります。

Struts2の脆弱性「CVE-2017-5638/S2-045」を突かれたのが流出の直接的原因です。

不正アクセスを受けたのは2017年3月7日から15日の間で、Webサーバーとデータベースサーバーに、第三者による不正アクセスを受けた痕跡がありました。

ぴあは3月25日、被害サイトにおける全てのクレジットカード決済機能を停止し、調査会社のPayment Card Forensics(PCF)に詳細な調査を依頼しました。その結果、4月10日のPCFからの中間報告で、不正アクセスを受けていたことが判明しました。

漏えいした可能性があるのは、住所・氏名・電話番号・生年月日・ログイン ID・パスワード・メールアドレスの登録情報、14万7093件と、クレジットカードの会員名・カード会員番号・有効期限・セキュリティコード、3万2187件です。

4.まとめ

今回は、Apache Struts2の脆弱性を狙ったサイバー攻撃、その事例を攻撃シナリオ付きでご紹介しました。

Struts2はWebアプリケーション構築を効率よくできる一方、脆弱性が多いことを理解しておく必要があります。今回ご紹介した攻撃事例は、共通して脆弱性「S2-045」を突いた攻撃です。この脆弱性を修正したバージョンが公開されています。以下のリンクからアップデートを実施することで対策が可能です。

Download a Release of Apache Struts

また、Struts2の開発プロジェクトを運営するApache Software Foundation(Apacheソフトウェア財団)は、パーサを初期設定のJakarta Multipart parserから変更することも対策として呼びかけています。

IPAやJPCERT/CCが公開する公式情報だけでは脆弱性への対応が追いつかない場合もありますので、情報網を増やす事が必要です。少しでも早く情報を入手するには、情報セキュリティ関連のコミュニティーやブログ、SNSを定期的にチェックするようにしましょう。


執筆者プロフィール

吉田純
フリーランスエンジニア、ライター、教育ベンチャー企業共同経営者。
フリーとして、ツール制作やライティングなどを行う一方、認識技術を応用活用した次世代教育にも取り組んでいます。

SiteLockのプラン・料金を調べる