2023/03/23〜25 開催 PHPerKaigi 2023 Day 1 LT
https://www.dip-net.co.jp/Motoki Hiraoセキュリティテストでより安心できるリリースにしよう
View Slide
https://www.dip-net.co.jp/発表者について• 2021年7月に開発者としてディップにジョイン• スクラムマスターや開発を担当• ゲームが好き2会社ではこんなアイコンでやってます!
https://www.dip-net.co.jp/• 2022年4月にアーキテクチャリプレイスをしました• リプレイスプロジェクトの一環でセキュリティテストを実施今回の発表の背景https://fortee.jp/phpcon-2022/proposal/ab138440-5240-43be-99ed-3680bad17085 より
https://www.dip-net.co.jp/リプレイスプロジェクトの課題• セキュリティ面での検証はできておらず、攻撃に耐えうるソフトウェアであるかは懸念があった• JavaのコードをPHPに移植した• ふるまいに関しては単体・結合・総合テストで入念に確認済• 一方で実際に外部公開した際、攻撃されて問題が起きる可能性がある4
https://www.dip-net.co.jp/5そもそもチームにセキュリティに詳しい人いない…
https://www.dip-net.co.jp/ツール選定の中で上がったこと• セットアップが容易で、実行に特殊な知識を必要とせず、実施結果も確認しやすい• 定期的に実行しやすい仕組みが整っていると嬉しい• 定期的に実施して検査し続けて健全な状態を維持したい• 例えばCIに組み込み可能、定期実行する仕組みがツール自体に備わっている6
https://www.dip-net.co.jp/VAddyを使う7引用:https://vaddy.net/ja/
https://www.dip-net.co.jp/VAddy主な機能• クロール(シナリオ)の記録、脆弱性検査実施• 検査結果のレポート• メンバー・権限管理8
https://www.dip-net.co.jp/• ブラウザでクロールを記録して、「スキャン実行」をクリックするだけ
https://www.dip-net.co.jp/• SQLインジェクション• クロスサイトスクリプティング(XSS)• リモートファイルインクルード(RFI)• コマンドインジェクション• ディレクトリトラバーサル• ブラインドSQLインジェクション• 安全でないデシリアライゼーション• XML外部実体攻撃(XXE)• HTTPヘッダインジェクション• SSRF脆弱性• 非公開ファイル検査VAddy主な検査対象10※プランによって異なります引用:https://vaddy.net/ja/plan.html
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
https://www.dip-net.co.jp/12VAddyならなんとかできるかも…
https://www.dip-net.co.jp/実際にセキュリティテストやっていく• 調査含めて2ヶ月くらいかけました(2021/11〜2021/12)• クロールはPC版とスマートフォン版を分けて記録• PC版とスマートフォン版で内部ロジックが異なるため• VAddyではヘッダー情報が記録されていた• クロール数は50以下くらいで、手作業で収集13
https://www.dip-net.co.jp/実行の高速化• サービスのフォーム入力項目やvalue値が多すぎるためか、タイムアウトが頻発しテストが終わらない問題発生• 基本情報、職務経歴、トラッキングパラメータなどで数百項目以上• 対策として次の2つを実施• アセットデータへのリクエストをPacファイルを用いてフィルタ• それでも厳しい部分については検査項目をいくつかのグループに分けて実施し、実施時間を調整14
https://www.dip-net.co.jp/実施した結果…15• 数ケースだが問題発見• 元々のコードにも残っている不具合だった• リリース前に修正
https://www.dip-net.co.jp/\ 🎉無事リリース🎉 /
https://www.dip-net.co.jp/今後に向けて• 継続的に実施する計画・運用を考える• 機能が追加される=セキュリティリスクが増える• 常に検査し続けてこそ意味がある• スケジュール実行したい• 我々のフォームのつくり上、CIに組み込めない• ジョブ管理ツールとCLIやAPIを組み合わせて定期実行を実現したい17
https://www.dip-net.co.jp/まとめ• セキュリティテストを実行する際、Webサービスを使う手もある• 選定基準に照らし、私たちはVAddyを選択した• セキュリティテストを実行し、若干数の問題を発見できた• 継続的に実施する計画や運用はこれから検討する18
https://www.dip-net.co.jp/• 大きなプロダクトに挑戦して見たい方は是非一度カジュアル面談でお話しさせてください!• 3/25にはブースもありますので、お話ししましょう!積極採用やってます!
https://www.dip-net.co.jp/Appendix• 商用可・フリーイラスト素材|ソコスト https://soco-st.com/20