本番さながらの環境でXSSなどの脆弱性を探す、学生向けイベント:mixi Scrap Challengeリポート
書籍などを通じて知識として知っているつもりの脆弱性。しかし、実際に手を動かしてその仕組みを体験するのは難しい。日本有数のSNS mixiや「モンスターストライク」などのサービスを展開しているミクシィが、同社本番環境のクローンに対する疑似攻撃を通じてWebサービスの脆弱性について学べる学生向けのイベントを開催した。
ミクシィは2015年8月29日、同社のSNS「mixi」のクローンサイトに対する疑似攻撃を通じて、Webサービスの脆弱(ぜいじゃく)性についての理解を深める学生向けのイベント「mixi Scrap Challenge」を開催した。
しばしば言われることだが、Webサービスを守るには、攻撃者の視点や手法も知らなければ効果的な対策は難しい。mixi Scrap Challengeは、Webサービスの脆弱性に関する講義に加え、mixiの本番環境で使われているコードにいくつかの脆弱性を埋め込んだクローン環境を用意し、2〜3人一組のチームでどれだけ脆弱性を見つけられるかを競うイベントだ。ゲーム形式で楽しみながら、Webサービスにおけるセキュリティの重要性を体感できる内容となっている。
2011年に開催された第1回以来今回で11回目を数え、Twitterなどでイベントを知った学生19名が参加した。
リクルーティング以外にも込められた願い
mixi Scrap Challengeにはいくつかの目的がある。一つはやはり、人材のリクルーティングだ。ミクシィの会長室・人事部 企画グループ イノベーションセンターリーダー 森本淳氏は、「ミクシィでは10年以上に渡ってSNSを運営しており、その中で日々開発、改良を行ってきた。加えていろいろな新しい技術や環境、既存技術の脆弱性が生まれる中、さまざまな事柄に対処していくエンジニアのスキルや知見が重要になる」と述べ、優れたエンジニアが常に求められていると説明した。
そうしたエンジニアの卵たちに、同社に対する興味を持ってもらいたいという狙いがある。事実、過去のmixi Scrap Challengeに参加し、現在はミクシィのエンジニアとして働く技術者も少なくないそうだ。mixi Scrap Challengeで学生を支援するチューター役の中にも、三名の経験者が含まれていた。
それとともに大切にしていることもある。「この取り組みで大事にしているのは、参加者にとっていい体験であること。競技形式を取ってはいるが、大事なのは勝ち負けではなく、ここで得た学びを持ち帰ること。明日からWebサイトを作るとき、コードを書くときの参考にしてもらいたい」(森本氏)
同時に、このイベントを通じて、同社が過去の反省を踏まえながら、どのようにセキュリティに取り組んでいるか――例えば適切なセキュリティポリシーの制定や脆弱性を作り込まないためのコードレビュー体制、プライバシーへの配慮など――を知ってもらう機会にもしたいという。
脆弱性を突いて「鴨 ねぎ男」を攻撃
mixi Scrap Challengeは、前半のチュートリアル、参加者やチューターとの親睦を深めるランチ、そしてmixiクローンを攻撃する競技会という構成で行われた。
目玉の競技会では、SNS mixiの「実環境」からフォークしたソースコードに、OWASP Top 10のリストでもおなじみのSQLインジェクション、クロスサイトスクリプティング(XSS)、クロスサイトリクエストフォージェリ(CSRF)といった主要なWebサービスの脆弱性を追加した環境をAmazon Web Services上に構築し、参加者に攻撃してもらう。脆弱性の有無以外は本番そのものの環境だ。
用意された脆弱性は11個あり、難易度に応じて点数が付けられている。難しい問題に関しては、約2時間の競技時間内に少しずつヒントが出される仕組みだ(ただしその分、得られる得点は減ってしまう)。ここまでは、セキュリティ競技会のCapture The Flag(CTF)でもよく見られる設定だろう。
ただ、問題の解き方はmixi Scrap Challengeならではのユニークなものだった。参加者は、与えられた課題に沿って、SNSのユーザーである「鴨 ねぎ男」に脆弱性を突く細工を施したURLを送りつける。これは、悪意あるURLを送りつけられる被害者に扮したミクシィのエンジニアたちで、回答を検証し、採点判断する役割だ。リンクをクリックした結果、例えば「こんにちはこんにちは!」という正常動作では意図されないメッセージが表示され、攻撃が成功すれば得点が加算される。
参加者らは、会場内に流れる妨害コンテンツに惑わされることなく、あらかじめ用意したデバッガーやFiddler、Wiresharkをはじめとするツールを用いて脆弱性を見つけていった。接戦の末、最終的に優勝したチームは11問中10問を解くという優れた成績を残した他、その他のチームの結果も全般に高い水準だった。回を重ねるごとに、レベルはアップしているという。
問題の詳細はネタバレになってしまうので紹介できないが、最後に行われた答え合わせでは、仕込まれた脆弱性と、どうすればそれを防ぐことができたかという対策がセットで説明された。例えばXSSならばユーザーの出力は信用せず、出力に対してエスケープを施すこと、SQLインジェクションならばプレースホルダーを利用することといった「鉄則」を復習。こうした実践を経て、理解を新たにした参加者も多かったようだ。
イベントをきっかけにエンジニアライフにセキュリティの要素を
今回のmixi Scrap Challengeには特別ゲストとして、HASHコンサルティングの代表で、「体系的に学ぶ 安全なWebアプリケーションの作り方」(通称:徳丸本)の筆者である徳丸浩氏も見学に訪れ、参加者と交流していた。
徳丸氏によると、Webアプリケーションの脆弱性への対応は「安全なところは安全に、危険なところはより危険になっており、差が広がっている」のが現状だという。正しい知識に基づいて対策を施し、監査を実施するWebサイトがある一方で、「『今どきこんなものが』と思わされる脆弱性が残っているサイトもある。少人数で開発し、ネットのソースコードを脆弱性も含めてコピペするようなサイトも減っているとは言えない」(同氏)。
こうした現状を変えていくには、Web上の情報や書籍を通して正しい対策を伝えていくと共に、Webに携わるエンジニアが問題を理解し、きちんとしたコードを書いていくことが重要になる。徳丸氏は、「イベントはきっかけであり、問題なのはその後だ。その後も継続してフォローしていかなければ、きちんとしたエンジニアは育たない」と述べる。
その意味で、mixi Scrap Challengeは良い「きっかけ」の一つと言えるだろう。今回司会を務めたチケットキャンプ事業部 研究開発グループの木下瑛裕氏も、過去のmixi Scrap Challenge経験者の一人。軽い気持ちで参加したところ「がっつりセキュリティについて学ぶことができた。どんなサービスにおいてもセキュリティは必要だが、そのことに本当に目を向けるようになったのはこのイベントがきっかけ」と振り返る。
そもそも学生にとっては、実サービスに近い環境に対し、攻撃者の視点であれこれ試すような機会は滅多にない。「ぜひこのイベントを機にきちんとした知識を身に付けてほしい」と木下氏。同時に、Webの世界を安全にしていくための「同志」として、参加者同士のつながりも作ってもらえればと述べている。
Copyright © ITmedia, Inc. All Rights Reserved.