Flatt Securityのサマーインターンに参加してきた話 in 2023
こんにちは。かろっくです。
今年の夏は、Flatt Securityのサマーインターンに参加してきました。
今回は、その参加レポートを書いていきます。
Flatt Securityについて
Flatt Securityは、プロダクト開発とセキュリティ診断を行うセキュリティ企業です。
メインの事業として、システムに情報漏洩やデータ改竄につながる脆弱性がないか調査するセキュリティ診断を行っています。
そのほか、Webエンジニアのためのセキュアコーディング学習プラットフォーム「KENRO」を開発・提供しています。
今回のサマーインターンの受け入れは、Flatt Securityの初の試みであるらしく、自分はめでたくそれの第一期生となりました。めでたい・・・
サマーインターン応募とその課題
Flatt Securityという企業の存在自体は、昔からセキュリティ界隈でよくきく会社名であったため、自分も興味を持っていました。
(Flatt Security脆弱性クイズに一度正解したこともあります)
そのFlatt Securityがサマーインターンを募集していることをTwitterで知り、応募しました。
応募するに当たって、応募課題として、
- 興味のある技術
- 気になる脆弱性の調査
の二つが存在しました。
自分は前者にActive Directoryとkerberos認証、後者にlog4jの脆弱性について書きました。
これらの応募課題は、別記事にて紹介してあります。
この応募課題を提出したところ、無事にサマーインターンに合格し、参加することになりました。
業務内容
インターン前半 セキュリティの基礎学習
インターン前半では、まずFlatt Securityの業務の解説と、セキュリティ診断の手法を学習するためのコンテンツの紹介が行われました。
今回のインターンでの学習は、Flatt Securityトレーニングという、Flatt Securityが提供しているセキュリティ診断の手法を学ぶためのコンテンツを通して行われました。
Webアプリケーションの基本的な脆弱性の発生原理からその防御機構と対策、どのように攻撃がおこなわれるかを包括的に学ぶことができ、セキュリティ診断を行う前準備として十分な内容でした。
それぞれのコンテンツの最後には、CTFのような問題が用意されており、その問題を解くことで学習した内容の理解が十分であるかを確認することができました。
インターン前半でxssとcsrfについての学習を行い、その後追加で、SQLインジェクションとOSコマンドインジェクションについて学習しました。
ここの学習で一通りCORSの理解ができたことが、後半のセキュリティ診断やその後の学習において大きな助けとなりました。
インターン後半 セキュリティ診断
インターン後半では、実際にセキュリティ診断を行いました。
といっても、環境自体は模擬の環境がdockerで提供されている形となっています。
ルールとして、
- ソースコードは提供
- Dockerのソースコードや設定ファイルは変更しない
- Dockerの統計情報の閲覧の禁止
となっています。これは、本番のセキュリティ診断にできるだけ近い環境を提供するためのルールです。
ソースコードが提供されるという特性は、Flatt Securityのセキュリティ診断の大きな特徴の一つです。
Flatt Securityでは、ホワイトボックス診断とリスクフォーカス診断を合わせた選択的ホワイトボックス診断という診断手法を採用することにより、コストパフォーマンスの増加を抑えながらより効果的な診断ができることが強みとなっています。
今回の脆弱性診断の対象となっているアプリケーションでは、バックエンドがTypescriptのexpressで記述されていたため、自分の得意分野でもありました。
詳しくは書けませんが、当アプリケーションでは、一般的なxssやcsrfのような脆弱性から、認可不備、LFIやSSRF、管理者ユーザのなりすまし・権限昇格などの脆弱性まで存在しました。
診断の一日目に、診断の開始一時間程で任意の管理者ユーザを作成することができるクリティカルな脆弱性を見つけたときは、自分の中で大きな達成感がありました。
診断の二日目には、小さな脆弱性を見つける中で、環境変数を読み取ることができる脆弱性やSSRFに相当する脆弱性を発見し、これもクリティカルな脆弱性であったため満足でした。
インターン最終日 レポート提出とフィードバック
最終日にはレポートを提出し、その後、診断の結果についてのフィードバックを受けることができました。
レポート自体は、Flatt Security独自の脆弱性診断レポートプラットフォーム上で行いました。
このプラットフォームでは、それぞれのエンドポイント毎に発見した脆弱性を割り当て、その脆弱性の説明、影響度、修正案を記述することで、レポートを作成することができます。
また、このプラットフォームでは、脆弱性の影響度と攻撃の成立可能性を組み合わせた脆弱性のリスクを算出することができます。
このリスクは、脆弱性の影響度と攻撃の成立可能性の双方を考慮するため、影響度が高くても攻撃の成立可能性が低い場合は、リスクは低くなります。これにより、脆弱性のリスクをより正確に評価することができるようになります。
自分はこのレポートで、特に詳しく解説をしたい脆弱性として、一日目と二日目に発見したそれぞれのクリティカルな脆弱性を選択しました。
インターン その他の特色
今回のインターンは、業務以外にも色々なイベントや企画が存在しており、どれも楽しいものでした。それらを紹介します。
シャッフルランチ
今回のインターンにはインターン生が複数人参加していたのですが、そのインターン生の方数人&Flatt Securityの社員さんとランダムでランチをする企画がありました。
ランチをしながらキャリアの話であったり、エンジニアの方とは技術や脆弱性の話、人事や営業の方とはFlatt Securityの事業やエンジニア業界の話などをすることができました。
懇親会
四日目の夜には、インターン生とFlatt Securityの社員さんとの懇親会が行われました。
会社の社員の皆さんと今回の脆弱性診断の教材の内容について語り合ったり、Web系技術の話をしたりCTFの話をしたりできました。
インターン全体の感想
今回のインターンは、Web系とセキュリティの両方に興味のある自分にとって、とても有意義なインターンとなりました。
前半のセキュリティの基礎学習では、意外とおざなりになっていた基礎を再復習して、より深く理解することができました。
後半のセキュリティ診断では、自分のなじみのあるTypescriptでのバックエンドでの脆弱性診断であったため、特に今後に活かすことのできる経験になったと思っています。
まとめ
今回は、Flatt Securityのサマーインターンに参加してきた話を書きました。
インターン先では、色々な方にお世話になりました。
改めて、この場を借りてお礼申し上げます。ありがとうございました!
Discussion