Sansan Tech Blog

Sansanのものづくりを支えるメンバーの技術やデザイン、プロダクトマネジメントの情報を発信

新卒エンジニア向けに情報セキュリティ研修を行いました[2026年版]

こんにちは。情報セキュリティ部 Product Securityグループの北澤です。

昨年に引き続き、新卒エンジニア向けに研修を行いました。この記事では、本年度の研修内容についてお伝えします。

研修について

昨年と同じく、丸一日かけて実施しました。

研修スケジュール

基礎編では、Web、インフラやモバイルなどの領域を問わず必要な情報セキュリティーの基礎に関する講義を行いました。午後にはSQL InjectionやXSSなどをはじめとしたWebアプリケーションに関する攻撃手法とその防衛について講義を行いました。

講義内容

基礎編

午前中は基礎編の講義を行いました。

最初にそもそも「情報セキュリティ」とは何か? から始まり、対策をしない場合はどのような被害が考えられるのか? Webサービスを公開していると実際にどの程度攻撃が行われるのか? ということをお話ししました。 そこから、対策するためには何を知るべきか? 脆弱性とは何か? 脆弱性情報を渡されたときにリスクと対応優先度をどう考えればいいのか? という実際の現場で直面するだろう課題と考え方について講義を行いました。

また、Claude CodeやCodexなど、AIエージェントの活用が加速している現状を鑑みて、昨年の内容に加え、AI周りのセキュリティについても触れるようにしました。内容としてはローカルでAIエージェントでコーディングを行う際に注意すべき点、プロダクトにAI機能を組み込む際に気を付けるべき点の二つについて話をしました。

いくつか資料を紹介します。

情報セキュリティとは

機密性についてのスライド

可用性についてのスライド

対応優先度を考える上で大切な項目

深層防御/多層防御 を説明するためのたまねぎ

Web編

午後はインジェクションなどWebサービスに埋め込んでしまいやすい問題について、項目ごとに脅威・攻撃手法・対策についての講義を行いました。具体的には以下です。

  • SQL Injection
  • XSS
  • 認証不備
  • 認可不備
  • SSRF
  • CSRF
  • 設計に関する問題
  • コンポーネント(ライブラリなど)に関する問題
  • ログに関する問題
  • 暗号化の不備

SQL Injectionの概要の説明

SQL Injectionの影響と対策について

XSSの概要の説明

昨年との違いとしては、内容に応じてローカルでハンズオン用アプリケーションを動かしてもらい、実際に講義ごとに攻撃を体験してもらうようにしました。

SQL Injectionのハンズオン操作説明スライド

ハンズオンアプリケーションに攻撃ペイロードを送信しようとしている画面

攻撃ペイロード送信によって、パスワード無しでadminにログインできてしまった状態

裏話ですが、ハンズオンのアプリケーションは実験的にAspireを使い、開発や立ち上げが楽になるようにしてみました。SSRFのような複数アプリケーションを扱うものや、SQL Injectionのようにアプリ+postgresというDBコンテナを扱うものに対してはかなり開発体験が良かったですね。

aspire.dev

新卒のメンバーにアナウンスする際も、「Hostプロジェクトディレクトリでdotnet runしてね」で済むのでめちゃくちゃ楽でした。

CSRFは実際に攻撃されることの体験をして欲しいなと思っていたので脆弱な簡易SNSサービスと罠サイトである出席確認サイトを用意してみました。 簡易SNSサービスにログインしてもらった状態で、罠である「出席確認」のボタンを押してもらい、裏でスクリプトが動き、「ざわさんにごはんおごります!」という意図しない書き込みが簡易SNSに対して行われることを体験してもらいました。(ざわさんとは講師である私のことです)

CSRF体験用の簡易SNS

簡易SNSにログインした状態で出席ボタンを押すと

罠サイトの出席確認システム画面

講師にごはんをおごる内容がSNSに投稿される。新卒のみなさん、ごちそうさまです。

ざわさんにごはんおごります!が投稿されます。

「やられた~」という声もあがり、実際にCSRF脆弱性を作り込んでしまったときの怖さをわかっていただけたかなと思います。

脆弱性について話したあとに、脆弱性を防ぐ・発見するためのセキュアな開発プロセスについて講義を行いました。

セキュアな開発プロセスの大事さについての説明スライド

設計時には設計時の、実装時には実装時に必要な対策をする、といった内容です。 設計時の問題がリリースギリギリになってわかるものほど悪夢的なことはないので、それを防ぐためにそれぞれの工程ごとにどのような検証を行う必要があるかについて話しました。

CTF

Web編の後には楽しみながら実践的に知って記憶をしてもらうためのCTF(Capture the Flag)を行いました。昨年と同じく、攻撃対象のアプリケーションはASP.NET Coreで自前で用意し、スコアサーバにはCTFdを利用しました。

簡単なSQL InjectionからBlind SQL Injection、XSSによる管理者セッション窃取やjwtのalg:noneまでとさまざまな難易度の問題を用意し、挑んでもらいました。

CTFでは実際の攻撃者の動きを学んでもらうことを心がけました。 例えば、XSSではただアラートを表示させるなどではなく、実際に管理者にその画面を送信し、管理者のセッションを奪取してログインするという、より本格的な導線を用意していました。

CTFのXSS1問題

以下ブログ用画像のためにローカルで動かしています。

サンドイッチショップの検索バーでalert()を表示させるスクリプトを記述している

アラートが表示され、XSSが有効なことがわかる

XSSが有効なことが分かります。

管理者にリンクを送信し、攻撃者のサーバにクッキーを送信させようとする画面

問い合わせからクッキーを外部サイトに送信させるURLを作成します。(サンプル用にlocalhostを指定していますが、本番ではもちろんlocalhostは指定できません)

AdminのクッキーはHttpOnly属性が意図的に外されているため、scriptからアクセスできるようになっています。こうすることでAdminのセッションクッキーを取得することができ、管理者用画面にアクセスできるという問題でした。

今回はAIエージェント自体に自動的に攻撃させなければ、Claudeなどと相談しつつ解いて良いというルールにしてみたのですが、情報を与えるとClaudeは確度が高い解き方をすぐ返していたようです。それを見て新卒のメンバーは「AIの発展で攻撃の効率化が上がっていることを実感できてすごく怖くなった」と話していました。 そんなAIの進化もあり、3人くらいが全問題を解き終わっていました。AIすごい。

反応

講義中のハンズオンやWeb編後のCTFの反応がとても良かったです。 今回のアンケートでもポジティブな意見が多く、長い期間かけて準備したかいがあったなーとうれしい気持ちになりました。

終わりに

プロダクトエンジニアの日々の業務は、「セキュリティを意識する必要があること」がたくさんあります。 企画、設計、実装、テスト、リリース、運用、その他すべてにセキュリティを意識する必要があります。SQL Injectionはないか? この運用危なくないか? 攻撃された時検知できてるか? など、たくさんたくさんあります。 そういったものを見つけたり、修正や改善をしたりできる力が絶対に必要になります。 今回の研修が、新卒エンジニアのメンバーが配属先でセキュリティをリードできるような人になる手助けになれたなら、とてもうれしいです。

© Sansan, Inc.