mixi engineer blog

*** 引っ越しました。最新の情報はこちら → https://medium.com/mixi-developers *** ミクシィ・グループで、実際に開発に携わっているエンジニア達が執筆している公式ブログです。様々なサービスの開発や運用を行っていく際に得た技術情報から採用情報まで、有益な情報を幅広く取り扱っています。

mixi SNSを攻略しよう! Scrap Challenge 2014年度シーズンのご案内

Aphex Twinの13年ぶりの新譜 'Syro'、捨て曲なしで素晴らしいですね。もりもとです。

株式会社ミクシィで毎年開催している、学生向けのWebセキュリティ実体験イベント 'Scrap Challenge' が、2011年に始めてから かれこれ4年目になりました。
もちろん今年度もやってますよ! ということで、これまでの道のりと、改めての内容のご紹介です。

f:id:mixi_engineers:20141028142113j:plain f:id:mixi_engineers:20141028141948j:plain

自社サービスを攻撃させるイベントを思いつく

どこの会社でも、優れた能力をお持ちの方と知り合いたいと思うのは同じです。
また、どうせなら面白いことをやろうと考えるのも大事なことだと思います。ある課題に対する解決策がいろいろあるとき、「可能性」「重要性」「簡単さ」といった軸で切り分けて、それぞれの判断をもとに総合的にどうするか決めるというやり方*1がありますが、いずれも甲乙つけがたいぞ、といったケースでは、「やって面白いかどうか」も加味すべき評価軸だと考えます。課題はひとが成すものですし、ひとに取って面白さは大事なこと。課題自体がひとの交わりであれば、なおさらです。

ミクシィの仲間を採用していくうえで、優れたよい人たちとご縁を作っていくにはどうしたらいいか。エンジニア領域において、技術力や課題解決能力に実技面でも優れたみなさんとどうやって知り合っていくか。
それにはプログラム・コンテストなどいろんな方法がありますが、他にはないユニークなものをやってみたい。そこから2011年の夏頃に思いついたのが、「わざと脆弱性を作り込んだSNS mixiのクローンをみんなで攻撃してもらう」という、Scrap Challengeという技術イベントです。
一種のCTF風味もあると思います。企画立案中は「風雲! たけし城」と呼んでいました。

f:id:mixi_engineers:20141028141953j:plain

思いついたはよいのですが、社名をそのまま背負っている、ユーザのみなさんのプライバシーもお預かりしているサービスの、たとえクローンとはいえ、サイトを参加者に疑似攻撃してもらう技術イベントというものが社内で認められるか。ひょっとしたら微妙かな、怒るひとがいるかもなぁ…… とも思いつつ提案をまわしてみましたが、拍子抜けするほどに「それ、面白いね!」という反応が得られ、じゃあ各種機能のどのへんにどう穴をあけていこうか、という検討に進むことができました。このへんは、課題を面白い方法で解決していこうじゃないかという社風のよいところ、風通しのすっきりしたところだと思います。

どういう穴を開けていこうか、たとえばport 22にsshdを開けておいて、でもそれはhoneypotだよ、あるいはパケットレベルでいじってもらい…… と企画は膨らみましたが、ある程度いろんなスキルの方にWebセキュリティの実技を体験していただきたいという思いもあったので、当初はいわゆるXSS的な課題にしぼっています。実技を通した競い合いでもありますが、それ以上に、普段はできない体験をしていただき、学んでもいただければうれしいと感じているからです。参加者のみなさんに「面白かった」という体験を持ち帰っていただくのが一番大事なことです。

Scrap Challengeに出てくる課題たち

イベントは、弊社で勉強会やイベントをよく開催している「コラボルーム」にお昼まえに集合いただき、まずはWebセキュリティ概論からご説明します。
一般的なお話だけでなく、mixiというSNSが長年体験してきた、いろんなissueも含んで、実例をあげて説明していきます。
そのあとはみなさんの環境設定も兼ねたチュートリアル。
これから攻略する「偽mixi」にログインしていただき、弊社が設けた「やられ役」のmixiユーザたちとマイミクになっていただいたりします。
「やられ役」は、当日アテンドするミクシィ社員が務めます。挑戦者から送られてきたmixiメッセージを、全部言われたとおりに開いてクリックするなど…… この係の呼び名は「鴨ネギ」です。

f:id:mixi_engineers:20141028141955j:plain

その後、簡単な実例を、チューターと共に解いてみて、この手のアタックがはじめての方への手ほどきや、ウォーミングアップも兼ねます。
アイスブレイクを兼ねた昼食もはさんで、そのあとがいよいよ実技です。

f:id:mixi_engineers:20141028142000j:plain f:id:mixi_engineers:20141028142002j:plain

実技の時間は2時間半設けています。攻略すべき課題がみなさんに示され、偽mixiに挑んでいただきます。時間を追って、だんだんヒントが出てきたりしますが、そのかわり課題攻略成功時に得られるポイントは減っていったりします。ゲームバランスってやつですね。

f:id:mixi_engineers:20141028142003j:plain f:id:mixi_engineers:20141028142007j:plain

f:id:mixi_engineers:20141028142008j:plain

具体的な内容の説明は…… ここでは控えさせていただきます。ご興味お持ちのみなさんは、ぜひエントリしてお試しください!

かれこれ運営3年め

Scrap Challengeを最初に開催したのは2011年の冬です。


当時は社内の開発用サーバの一部を専用に割り当てて偽mixiを稼働させましたが、競技開始直後に思いのほか負荷が高くなり、その場で速攻で台数を増やしたりなど…… 想定と違うところで攻略されてしまったりしました。

それから、いったんAWSにプラットフォームを移したり、社内で開発運用している仮想サーバ運用プラットフォーム 'Gizmo' で動かしてみたり (くわしくは「OpenStackとLXCを導入した話 - mixi Engineers' Blog 」をご覧ください)、運用側もさまざまなトライを繰り返しています。

出題面でも、むやみに難しくせず、とはいえ攻略の楽しみも確保したいと、言うなればゲームバランスも大事なところです。
先日まで、全問攻略完了チームはいませんでした。あと20秒あれば全問正解だったのに…… というチームがこれまでのベストだったのですが、ついに2014/8/23の回で、全問クリアのチームが出てしまいました。微妙にくやしい……(笑)

とはいえ、通算8回も開催してきた結果、いままで157名もの学生のみなさんに出場いただきました。その中には、Scrap Challengeを通してご縁ができて、いまは同じくミクシィで活躍されている若手エンジニアも10名近くいます。加えて、インターンとして実務体験のご縁ができたみなさんも。
気がつくと、Scrap Challengeで知り合った学生さんだったみなさんが、いまやミクシィの若手エンジニアとして、Scrap Challengeの司会や解説、あるいは鴨ネギをやってくれたりしています。企画の言い出しっぺとしては嬉しいかぎりです。

Scrap ChallengeはSNS mixiを題材としていますが、ご縁となって入社されたみなさんは、モンスターストライクであったり、あるいはDeployGateであったり、もちろんSNS mixi、あるいは新規事業と、Webアプリケーションやネイティブアプリ、ミドルウェアといったレイヤにかかわらず、優れたエンジニアとして活躍していただいています。

何かしらWebやネットワークに関わる立場であれば、Webセキュリティに関する実務的知識は素養として大事ですし、そういった知識をイジワルな課題に対してあれこれ行使する地頭と突破力は、どんなエンジニアリング領域にも通底する能力だと思います。

f:id:mixi_engineers:20141028142011j:plain f:id:mixi_engineers:20141028142014j:plain

このように、他では中々できない技術体験を一緒に行うと、学生さん側も、社員エンジニア側も、体験共有を通して仲良くなれます。

技術解説の中にはオフレコなトピックもありますし、その後の懇親会でも、フードや飲み物と一緒に、楽しく濃ゆい語らい(S式な話とか、マニアックなコンパイラの話とか……)や、ミクシィのエンジニアのワークスタイルや考え方など、エンジニア志望のみなさんには楽しい時間だと思います。

f:id:mixi_engineers:20141028142016j:plain

ともあれ、Scrap Challengeのねらいは「おもしろかった! と思ってもらうこと」です。
せっかく足を運んでいただくリアルイベントなのですから、他ではできないユニークな体験知見を過ごしていただくこと。これが大事です。
よき採用につなげたい思いももちろんありますが、エントリいただくみなさんが新卒採用年度にマッチするかどうかは、それほどこだわっていません。

f:id:mixi_engineers:20141028142018j:plain

今年度(2014)は、すでに夏休み中の2014.8.23に一回開催し、次の開催は2014.11.16(日)です。2014.11.5までエントリ募集中です。募集数によっては、2015.1.17にも続けて開催の予定はあります。11月がゼミなどで忙しい方は、ぜひ1月を楽しみにしていてください。

当日の様子は、みなさんにどんどんtweetしていただくのも歓迎しています。ネタバレはダメですが…… 我々もその模様を毎回togetterしたりしています。#mixi_scrapで検索していただければ、いままでの様子がわかると思います。

ほほう、と思った方は、ぜひ見てみてください。 

そして、いつか将来のScrap Challengeを、ともにネタ出ししたり開催したり、新たな挑戦者の学生さんと語らったりする側に、一緒に立てれば嬉しいです。

f:id:mixi_engineers:20141028142020j:plain

*1:Potential + Importance + Ease = Scoreで考える、PIESフレームワークってやつですね