Slide 1

Slide 1 text

https://www.dip-net.co.jp/ Motoki Hirao セキュリティテストでより 安心できるリリースにしよう

Slide 2

Slide 2 text

https://www.dip-net.co.jp/ 発表者について • 2021年7月に開発者としてディップに ジョイン • スクラムマスターや開発を担当 • ゲームが好き 2 会社ではこんな アイコンでやってます!

Slide 3

Slide 3 text

https://www.dip-net.co.jp/ • 2022年4月にアーキテクチャ リプレイスをしました • リプレイスプロジェクトの 一環でセキュリティテスト を実施 今回の発表の背景 https://fortee.jp/phpcon-2022/proposal/ab138440-5240-43be-99ed-3680bad17085 より

Slide 4

Slide 4 text

https://www.dip-net.co.jp/ リプレイスプロジェクトの課題 • セキュリティ面での検証はできておらず、攻撃に耐えう るソフトウェアであるかは懸念があった • JavaのコードをPHPに移植した • ふるまいに関しては単体・結合・総合テストで入念に確認済 • 一方で実際に外部公開した際、攻撃されて問題が起きる可能性 がある 4

Slide 5

Slide 5 text

https://www.dip-net.co.jp/ 5 そもそもチームに セキュリティに 詳しい人いない…

Slide 6

Slide 6 text

https://www.dip-net.co.jp/ ツール選定の中で上がったこと • セットアップが容易で、実行に特殊な知識を必要とせず、 実施結果も確認しやすい • 定期的に実行しやすい仕組みが整っていると嬉しい • 定期的に実施して検査し続けて健全な状態を維持したい • 例えばCIに組み込み可能、定期実行する仕組みがツール自体に 備わっている 6

Slide 7

Slide 7 text

https://www.dip-net.co.jp/ VAddyを使う 7 引用:https://vaddy.net/ja/

Slide 8

Slide 8 text

https://www.dip-net.co.jp/ VAddy主な機能 • クロール(シナリオ)の記録、脆弱性検査実施 • 検査結果のレポート • メンバー・権限管理 8

Slide 9

Slide 9 text

https://www.dip-net.co.jp/ • ブラウザでクロールを記録 して、「スキャン実行」を クリックするだけ

Slide 10

Slide 10 text

https://www.dip-net.co.jp/ • SQLインジェクション • クロスサイトスクリプティング(XSS) • リモートファイルインクルード(RFI) • コマンドインジェクション • ディレクトリトラバーサル • ブラインドSQLインジェクション • 安全でないデシリアライゼーション • XML外部実体攻撃(XXE) • HTTPヘッダインジェクション • SSRF脆弱性 • 非公開ファイル検査 VAddy主な検査対象 10 ※プランによって異なります 引用:https://vaddy.net/ja/plan.html

Slide 11

Slide 11 text

https://www.dip-net.co.jp/ CLI・APIからの実行も可能 • go-vaddy: VAddy API Command-Line Tool • https://github.com/vaddy/go-vaddy/blob/master/README_ja.md • VAddy Web API Scan Document • https://github.com/vaddy/WebAPI-document/blob/master/VAddy- WebApi-ja.md • 外部から操作しやすいので、CIへの組み込みや定期実行がし やすい 11

Slide 12

Slide 12 text

https://www.dip-net.co.jp/ 12 VAddyなら なんとかできる かも…

Slide 13

Slide 13 text

https://www.dip-net.co.jp/ 実際にセキュリティテストやっていく • 調査含めて2ヶ月くらいかけました(2021/11〜2021/12) • クロールはPC版とスマートフォン版を分けて記録 • PC版とスマートフォン版で内部ロジックが異なるため • VAddyではヘッダー情報が記録されていた • クロール数は50以下くらいで、手作業で収集 13

Slide 14

Slide 14 text

https://www.dip-net.co.jp/ 実行の高速化 • サービスのフォーム入力項目やvalue値が多すぎるためか、タイ ムアウトが頻発しテストが終わらない問題発生 • 基本情報、職務経歴、トラッキングパラメータなどで数百項目以上 • 対策として次の2つを実施 • アセットデータへのリクエストをPacファイルを用いてフィルタ • それでも厳しい部分については検査項目をいくつかのグループに分け て実施し、実施時間を調整 14

Slide 15

Slide 15 text

https://www.dip-net.co.jp/ 実施した結果… 15 • 数ケースだが問題発見 • 元々のコードにも残っている 不具合だった • リリース前に修正

Slide 16

Slide 16 text

https://www.dip-net.co.jp/ \ 🎉無事リリース🎉 /

Slide 17

Slide 17 text

https://www.dip-net.co.jp/ 今後に向けて • 継続的に実施する計画・運用を考える • 機能が追加される=セキュリティリスクが増える • 常に検査し続けてこそ意味がある • スケジュール実行したい • 我々のフォームのつくり上、CIに組み込めない • ジョブ管理ツールとCLIやAPIを組み合わせて定期実行を実現したい 17

Slide 18

Slide 18 text

https://www.dip-net.co.jp/ まとめ • セキュリティテストを実行する際、Webサービスを使う手も ある • 選定基準に照らし、私たちはVAddyを選択した • セキュリティテストを実行し、若干数の問題を発見できた • 継続的に実施する計画や運用はこれから検討する 18

Slide 19

Slide 19 text

https://www.dip-net.co.jp/ • 大きなプロダクトに挑戦し て見たい方は是非一度カジ ュアル面談でお話しさせて ください! • 3/25にはブースもあります ので、お話ししましょう! 積極採用やってます!

Slide 20

Slide 20 text

https://www.dip-net.co.jp/ Appendix • 商用可・フリーイラスト素材|ソコスト https://soco- st.com/ 20