Upgrade to Pro — share decks privately, control downloads, hide ads and more …

セキュリティテストでより安心できるリリースにしよう

 セキュリティテストでより安心できるリリースにしよう

2023/03/23〜25 開催 PHPerKaigi 2023 Day 1 LT

yumechi(Motoki Hirao)

March 24, 2023
Tweet

More Decks by yumechi(Motoki Hirao)

Other Decks in Technology

Transcript

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  11. 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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide