LAC WATCH

セキュリティとITの最新情報

RSS

株式会社ラック

メールマガジン

サイバーセキュリティや
ラックに関する情報をお届けします。

ラックピープル | 

「Yahoo! JAPAN」実践型セキュリティ総合演習に技術協力しました(2018年版)

こんにちは。ラックの谷口隼祐です。

ラックは、ヤフー株式会社が10月23日と24日の二日間、同社グループ社員を対象に開催した実践型セキュリティ総合演習「Yahoo! JAPAN Hardening 2018」に協力しました。この演習は今年で3回目で、ラックは初回から関わっています。去年、一昨年の様子は過去のLAC WATCHをご覧ください。

Hardening(ハードニング)とは

サイバー攻撃への対応力を養うことを目的とした演習で、今回は参加者が8~9人一組のチームとなって、運営スタッフが用意した仮想ショッピングサイトやコーポレートサイトの運営を担い、相次ぐサイバー攻撃からサイトや顧客を「衛る(まもる)」べく奮闘しました。

「Yahoo! JAPAN Hardening 2018」オリジナルのTシャツにプリントされた「衛」の文字

「Yahoo! JAPAN Hardening 2018」オリジナルのTシャツにプリントされた「衛」の文字

参加者は回を重ねるごとに増えて、今回は過去最大の約100人となりました。注目すべきは今回、グループ企業からの参加者が実に全体の約半数を占めたことです。ヤフー本社のみで実施した初回時に、演習を主催されたヤフー側ご担当者がコーポレートブログで、「グループ会社や今回参加していない部署の社員や、インフラ側のエンジニアたちを呼んで開催してみたい」「継続して第2回、3回と続けていきたい」とおっしゃっていましたが、それが有言実行で実現されていくことに、サイバー攻撃に真摯に立ち向かうという同社の強い意志を感じました。

演習参加者
演習参加者
運営メンバー
運営メンバー

「Yahoo! JAPAN Hardening 2018」の強化ポイント

シナリオの更新

今回の特徴は、対策に関する技術点の評価に差が出るようにシナリオを強化した点にあります。具体的には、パスワード管理の不備やソフトの既知の脆弱性を狙う攻撃など、基本的な対策を実施していれば防げる古典的な攻撃に加えて、最近攻撃が増えている仮想通貨採掘ツール「コインマイナー」の不正な設置やMacを狙ったマルウェア、乗っ取った端末を踏み台にした攻撃など、気づきにくい攻撃も入れて対応に差が出るようにし、それによってより細かい評価ができるようにしました。

情報共有と連携

経験者なら共感していただけると思いますが、実際のインシデント対応や類似の演習では状況が目まぐるしく変わり、調査や報告・連絡のための時間が取れないといった様々な理由により、チーム内で情報の共有不足が発生し、対策が後手に回ることがあります。演習では、サイバー攻撃対処の経験を今後の事業運営に生かしてもらうことを期待していますが、対策が後手に回ったことを経験するだけでは十分ではありません。演習中の出来事や行動を記録として残し、演習後に振り返ることで、実際のサービス運営での具体的な行動につながると考えています。

そのため今回は、その時にどのような行動を取ったのか、何が起こっていたのかを記録・表示する「タイムラインツール」を新たに提供しました(開発経緯は後述)。ツールは、運営メンバーと競技参加者の双方が利用し、行動を記録するようにしました。

演習参加者向けのタイムラインツール画面1
演習参加者向けのタイムラインツール画面1
演習参加者向けのタイムラインツール画面2
演習参加者向けのタイムラインツール画面2

運営メンバー向けのタイムラインツール画面1
運営メンバー向けのタイムラインツール画面1
運営メンバー向けのタイムラインツール画面2
運営メンバー向けのタイムラインツール画面2

ヤフー参加者の対応に見る顧客視点の徹底ぶり

今回の演習で印象的だったことの一つが、セキュリティ対策の演習でありながら、参加チームの中にはセキュリティ向上のための対策にとどまらず、サービス改善や売り上げをアップさせるための手立てを同時並行で実施しているところが複数あったことです。例えば、仮想ショッピングサイト内で買い物をする際の動線の改善や、サイト利用者へのお知らせのこまめな更新、「問い合わせ」を「お問い合わせ」に改めるなど、サイト上の表記の見直しなどです。ヤフーグループの皆さんがいついかなる時でも顧客視点を忘れず、サービスの向上を念頭に行動している様子がうかがえました。

中には、「彼女に着て欲しい服特集!」といったページまで作成したチームも現れましたが、クローラが反応しなかったため売り上げにはつながらず、残念ながらチームの苦労は報われませんでした。

注:ショッピングサイトの商品価格やポイント設定が売り上げに反応するプログラム。演習中のショッピングサイトの売上は、人間の代わりにクローラが自動で購入する。

顧客視点での対応が裏目に出ることも

競技で利用したショッピングサイトでは、チームごとにポイント還元率の変更や「ポイント〇倍キャンペーン」が実施できる設定となっていました。ただ、このショッピングサイトにはデータベースを不正に操作できるSQLインジェクションの脆弱性がありました。SQLインジェクション攻撃によりポイント還元率を150%にする攻撃シナリオが実行されたとき、悲劇が起きました。2つのチームで顧客に還元するポイントが億を超えてしまったのです。売り上げよりも還元するポイントが上回ってしまいました。

想定外の事象に攻撃側も焦りました。売り上げを表示するスコアサーバも異常なグラフを生成しています。
ここから攻撃側のHardeningの始まりです。

まずはその場でグラフ生成プログラムを修正し、表示される売上金額の目盛りを調整しました。次に原因を特定するため、ショッピングカートのプログラムを調査しました。その結果、ポイント〇倍キャンページを実施しているときは、ポイント計算式が通常と違っていたことが原因だとわかりました。

■通常
商品価格 × ポイント還元率 = ポイント数
■キャンペーン中
商品価格 × ポイント還元率 × ポイント〇倍 = ポイント数

特に被害が大きかったチームはポイント50倍のキャンペーンを実施していました。攻撃により、商品価格の75倍ものポイントが付く計算になります。その結果、クローラが非常にお得と判断し、爆買いが発生しました。サイトの運営者にとっては、売れるほどに支払うポイントが増えることになるため、億単位のポイント還元になったというわけです。

なお、ポイント50倍の設定をした時点で同様の被害が発生しなかった理由は、攻撃が行われる前はポイント還元率の初期値が0%だったためです。商品価格 × ポイント還元率(0%) × ポイント50倍 = 0ポイントでしたが、SQLインジェクション攻撃によりポイント還元率が150%に変更されたため、そのタイミングから商品価格の75倍ポイントが付与されるようになりました。

該当箇所のソースコード
該当箇所のソースコード

実際のサービス運営に役立てるために欠かせない振り返り

競技は終わりましたが、まだ演習は終わっていません。
タイムラインツールで記録した結果や各種ログをもとに、運営メンバーがチームごとにレポートを作成し、参加者に演習の結果を振り返ってもらいます。これによって、実際のサービス運営での新たな気づきにつながることを期待しています。

タイムラインツールの開発の経緯

タイムラインツールの開発のきっかけは、ラックも協賛している本家Hardening Projectでチーム内の情報共有や振り返り時の記録がいずれも不足して困った経験があったからです。今年7月に開催された「Hardening II Collective」では、チームのメンバーを物理的に分断する仕掛けが存在し、競技者として参加した私のチームではインシデント発生の連絡がメンバーに行き届かなかったり、誰が何をしたのか把握できなかったりして、大いに悩まされたのです。このときの解決策として開発した、コミュニケーション+振り返りのための記録を補助するツールが今回の演習で提供したタイムラインツールの元で、「Yahoo! Japan Hardening 2018」向けに要望を反映して機能を追加しています。

本稿執筆現在、タイムラインツールの情報やサーバの各種ログからレポートを作成中で、近々完成予定です。このレポートにより、参加者が攻撃にいつ頃気づき、どのような対策を実施したかが把握できるようになったことは今回の大きな成果と言えます。演習を終えた皆さんが今後、実際のサービス運営でセキュリティ対策を検討・実施する際に、このレポートを役立ててもらえると幸いです。

この記事は役に立ちましたか?

はい いいえ