新卒3年目のエンジニアが企画・運営 2023サマーインターンの裏側

目次
 
こんにちは!セキュリティエンジニアの山川です。普段はセキュリティ診断に取り組んでいますが、最近はプロフェッショナルサービス事業部の新卒採用活動の設計もメインで担当しています。普段やっている診断の内容や入社の経緯に関しては、以前のインタビュー記事を参考にしてください!
今回、Flatt Securityとして初めて、大々的に募集をかけてサマーインターンを実施し、その企画と運営を新卒3年目の自分がメインで担当しました。この記事では、そんなサマーインターンの模様について紹介します!

概要

今回のインターンは以下のようなスケジュールで実施し、合計で17人のインターン生に参加していただきました。
 
  • 第1期:2023年8月21日(月)〜25日(金)
  • 第2期:2023年8月28日(月)〜9月1日(金)
  • 第3期:2023年9月11日(月)〜15日(金)
 
インターン生には、5日間の実習期間中、セキュリティエンジニアとともにWebアプリケーションを対象にした脆弱性診断(セキュリティ診断)の原理を学び、擬似環境を使って診断業務の体験を行なっていただきました。
 
また、事前イベントとして7月に「わいわい就活相談会」というイベントも実施しました。インターン生限定のイベントで、インターンに参加する前に会社の雰囲気を知り、モチベーションを高めてもらう狙いがありました。このイベントでは、インターン生から就活のお悩み・キャリアに関することなどの質問を事前に集め、1つずつ先輩エンジニアが回答していきました。

インターンの内容

インターン中のざっくりとしたスケジュールは以下の通りでした。
 
スケジュールを組む際にはメリハリをつけることを意識しました。具体的に導入したのは以下の3点です。
 
  • 毎日朝会をやる
  • 黙々と進めたい技術パートは間に説明を入れずになるべく固める
  • 日報を書いてもらう
 
また、インターン各期には、インターンのプログラムを進め、インターン生のサポートをするメンターを2人アサインしました。インターン生が少しでも話しかけやすくなるよう、メンターとなるメンバーは、自分も含む若手セキュリティエンジニアで構成しました。

Flatt Security Training

前半の2日間は、弊社で内製している「Flatt Security Training」に取り組んでいただき、Webアプリケーションを診断するために必要な脆弱性に関する知識を身につけてもらいました。
Flatt Security Trainingでは、13個の脆弱性についてトレーニングが用意されており、その中から以下の4つの脆弱性を選択し、学んでもらいました。
 
  • Cross-Site Scripting (XSS)
  • Cross-Site Request Forgery (CSRF)
  • SQL Injection
  • OS Command Injection
 
XSS/CSRFの脆弱性に関しては、実際に弊社が診断をして発見されることの多い脆弱性であるため、選定しました。
また、SQLi/OSCiの脆弱性に関しては、普段の診断で実際に発見されることは数少ないものの、見つかると大きな被害が発生する可能性の高いものであるため、選定しました。
 
取り組んだ4つの脆弱性に関しては、発生原理から対策まで学べたのではないでしょうか。
前半コンテンツの説明を真剣に聞いているインターン生
前半コンテンツの説明を真剣に聞いているインターン生

脆弱性診断体験

後半の3日間では、弊社で内製したオンラインショップを題材としたWebアプリケーションを対象として、診断にチャレンジしていただきました。
 
また、「通常のWebアプリケーション診断で、必要に応じてソースコードを選択的に参照する」という弊社の診断の特色を経験して欲しかったため、対象のソースコードも配布しました。
 
その結果、時々詰まりつつも、様々なペイロードを投げたり、ソースコードを読んで怪しいところを見つけたりして、色々な脆弱性を発見してくれました。
脆弱性診断をメンターに相談しながら進めている様子
脆弱性診断をメンターに相談しながら進めている様子
 
脆弱性診断の期間は2日間用意しており、最終日にはその期間内で発見できた脆弱性について報告書を書いてもらいました。
 
報告書の内容に対しては、弊社のセキュリティエンジニアがレビューを行い、実業務で必要な観点やお客様に伝わる表現の書き方などをアドバイスさせていただきました。

社員との交流

メンター以外のエンジニアや職種を跨いだ社員との交流施策として、週3日(月/水/金)のランチの時間はシャッフルランチを実施しました。インターン生を2人1組に分け、エンジニア+ビジネス職の社員と一緒にランチに行ってもらいました。
 
この施策はエンジニアだけではなく、入社後一緒に仕事をすることになるビジネス職の方とも話す機会を作ることで、Flatt Securityの雰囲気をより知ってもらうことを目的として行いました。
 
また、4日目の夜にはオフィスで懇親会を開催しました。ここまでのインターンでの活動を労いつつ、最終日も控えているので、21時で解散とし翌日に響かないよう程々にわいわいしました。
まだまだ話し足りないという人は残っていましたが...(笑)
乾杯!!!
乾杯!!!
こんな感じで自然と各々固まって色々な話をしていました
こんな感じで自然と各々固まって色々な話をしていました
ノベルティ配布!
ノベルティ配布!
 

インターン生の感想

今回のインターンに参加してくれたインターン生からは、以下のような嬉しい感想をいただきました。
 
  • Flatt Security Training、脆弱性診断体験など実際に手を動かしながら学べるため、とても良い経験になりました。脆弱性を含むやられサイトなどは個人で用意するのが大変なため、今回のような実際に攻撃を行えるのがよかったです。脆弱性診断体験を通して、気づけない脆弱性がたくさんあったので、今後基礎知識から身につけていきたいというモチベーションアップに繋がりました。
  • 学ぶ環境が充実していました。trainingによるインプットと、脆弱性診断体験によるアウトプットの両方ができてよかったです。また、オンサイトで質問しやすい環境なのもよかったです。
  • webセキュリティの基礎から実際に脆弱性の診断までステップバイステップで的確に教えてもらいとても勉強になった。 また社員さんとのランチや懇親会などのお話できる機会も設けてもらい、たくさんお話することができた。
  • とても良かったです。普段はCTFでWeb問解いていますが、Webの脆弱性診断というのはやったこともなければあまり想像もできず、かなり興味がありました。実際にやってみると難しいものではありましたが、また、トレーニングでしっかり基礎知識を得られたこともよかったです。8時間x5日というのは長いかと思ったのですが、いざやってみると一瞬でした。それくらい楽しかったです。
1期のインターン生
1期のインターン生
2期のインターン生
2期のインターン生
 
3期のインターン生
3期のインターン生

メンター側の振り返り

次回以降のインターンをよりよくするために、メンター側では振り返り会を行いました。その際に寄せられた意見もご紹介します。
 
  • 作業内容やコンテンツの技術スタックを実際の診断にできるだけ近づけるというのは良かったよね
  • 作業の進捗状況や考えていることをSlack上のスレッドに逐一書いてもらうようにしていた。メンター側は作業の進捗が分かるし、インターン生は頭の整理に使えていそうだったのでかなり良い)
  • 全員ではなくていいと思うが、何らかの形で事前に社員側の自己紹介や得意・興味分野が一覧化されていると「この人にこの話を聞いてみたい」と話しかけやすくなったかも
  • 今回はDocker Composeでローカルに環境を立てて診断していたが、環境差分とかでつまづくので、診断コンテンツはホストしても良かった気がする

準備期間中の小話

大変ありがたいことに、技術コンテンツの作成をはじめとした、インターンシップ全体の取りまとめを新卒3年目の自分がメイン担当となって進めることができました。
 
準備期間では、自分の力が及ばないところが多々あったのですが、社内のエンジニアをはじめとしたメンバーを巻き込むことで、無事にインターンシップを開催できました。
このように弊社は、勤務年数とか関係なく若手のうちから裁量の大きいタスクを任せてもらえるとともに、積極的に社内のメンバーがゴールに向かって手助けをしてくれるカルチャーがあります。
 
ということで、こんなカルチャーのもとで働いてみたい!という方はカジュアル面談や選考応募をいつでもお待ちしております!
 

まとめ

今回のインターンシップでは、前半はWebアプリケーションにおける基本的な脆弱性の原理と対策を学び、後半では学んだことを生かして実際に脆弱性診断体験をしていただきました。
特に後半コンテンツは、なかなか一筋縄ではいかない内容だったかと思いますが、みなさん積極的に質問したりして1つでも多く脆弱性を見つけるぞと真剣に取り組む姿を見せてくれました。
 
今回の経験がセキュリティを学んでいくモチベーションに繋がり、今後のキャリアにとって大きなプラスになっていればとても嬉しいです。またどこかでお会いしましょう!

インターン生が書いてくれた参加記