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

実装がすべてではない、開発者の周りから考える Web プロダクトセキュリティ

Big Buddha
November 25, 2023

実装がすべてではない、開発者の周りから考える Web プロダクトセキュリティ

2023年11月25日に開かれた「セキュリティ・ミニキャンプ 2023 in 広島」で使った講義用資料です。

SQL インジェクションや XSS など、名前が付いた有名な脆弱性や実装する際にセキュリティ的に気をつけないといけない箇所はいくつもあります。ですが、すでに名前が付けられ広く知られている脆弱性のみを考えることがサイバーセキュリティなのでしょうか?
本講義では実装以外の箇所で発生しうる脆弱な部分に焦点を当て、技術者としてサイバーセキュリティを考えるということはどういう視点を持つことなのか?を受講者と一緒に考えました。

余談ですが、最初は SLSA を深掘りする予定でしたが、ミニキャンプにしてはハードルが高すぎるというフィードバックを頂いたので「サプライチェーン」のイメージを受講者に持ってもらえる話へ切り替えました。もし全国大会の講師になることがあれば SLSA 3 な OSS を作らせるハンズオンでもしたいですね。

参考資料:

- ソフトウェアサプライチェーンのこれから / Securing Software Supply Chain - Speaker Deck https://speakerdeck.com/lmt_swallow/securing-software-supply-chain
- 開発環境のセキュリティおよびCI/CDパイプラインのセキュア化 - Speaker Deck https://speakerdeck.com/rung/training-devenv-security-ja
- サプライチェーンセキュリティにおける脅威と対策の再評価 | メルカリエンジニアリング https://engineering.mercari.com/blog/entry/20221215-supplychain-security-reevaluation/
- SLSA • Supply-chain Levels for Software Artifacts https://slsa.dev/
- ossf/s2c2f: The S2C2F SIG is a group working within the OpenSSF's Supply Chain Integrity Working Group formed to further develop and continuously improve the S2C2F guide which outlines and defines how to securely consume Open Source Software (OSS) dependencies into the developer’s workflow. https://github.com/ossf/s2c2f
- Usage Statistics and Market Share of Web Servers, November 2023 https://w3techs.com/technologies/overview/web_server
- yandex/gixy: Nginx configuration static analyzer https://github.com/yandex/gixy
- 多層防御とは?| 階層型セキュリティ | Cloudflare https://www.cloudflare.com/ja-jp/learning/security/glossary/what-is-defense-in-depth/
- プラクティス・ナビ IPA 情報処理推進機構 https://www.ipa.go.jp/security/economics/practice/practices/Practice213/
- Google - Site Reliability Engineering https://sre.google/sre-book/postmortem-culture/
- danluu/post-mortems: A collection of postmortems. Sorry for the delay in merging PRs! https://github.com/danluu/post-mortems
- Facebook Outage Deep Dive | ThousandEyes https://www.thousandeyes.com/blog/facebook-outage-deep-dive
- 情報セキュリティ10大脅威 2023 | 情報セキュリティ | IPA 独立行政法人 情報処理推進機構 https://www.ipa.go.jp/security/10threats/10threats2023.html
- 自動車サプライチェーンの構造と問題点 https://tomiyo-job.com/media/?p=339
- トヨタの工場を止めたサイバー攻撃 サプライチェーン攻撃のリスクが露呈 | 日経クロステック(xTECH) https://xtech.nikkei.com/atcl/nxt/mag/nc/18/092400133/030900072/
- 悪意のあるPythonパッケージ27種を確認、日本も被害の可能性 | TECH+(テックプラス) https://news.mynavi.jp/techplus/article/20231120-2823025/
- Security という英単語から考えるサイバーセキュリティ - Speaker Deck https://speakerdeck.com/oldbigbuddha/security-toiuying-dan-yu-karakao-erusaibasekiyuritei

=== 講義の紹介文 ===

サイバーセキュリティという言葉を考えたとき、あなたはどのようなことを思い浮かべますか?少し知見がある方は SQL インジェクションやクロスサイトスクリプティングなどの具体的な脆弱性が思いつくかもしれません。これらの脆弱性はアプリケーションを実装する段階で発生してしまうものばかりですが、現実世界ではこのような実装の欠陥のみが攻撃対象になるわけではありません。
過去に起こった実際のインシデントを体験しつつ、「セキュリティを考える」という行動を一緒に0から考えてみましょう!

Big Buddha

November 25, 2023
Tweet

More Decks by Big Buddha

Other Decks in Technology

Transcript

  1. 私とセキュリティ・キャンプ • セキュリティ・ミニキャンプ in 愛知 2019 受講生 • セキュリティ・キャンプ 全国大会

    2022 オンライン B受講生 • セキュリティ・ミニキャンプ オンライン 2022オンライン チューター • セキュリティ・ミニキャンプ in 広島 2023 講師 ← イマココ
  2. グループワーク • 自分なりの「サイバーセキュリティ」を言語化しよう (目安: 5分) ◦ 注意: 一般的な定義は使わない ◦ ヒント:

    “Security”の語義を英英辞典(Oxford Learner's Dictionaries など)で調べてみよう • 自分なりの「サイバーセキュリティ」をチームに共有しよう • チームなりの「サイバーセキュリティ」を kintone へ投稿しよう 終了時刻: 10:21
  3. 1. 攻撃者はログイン中の PC からどのような情報を抜き取ることができるでしょうか? 窃取できる情報の種類だけではなく、なぜその情報を攻撃者が PC から窃取できる かも 合 わせて

    答 えてください。 2. 利用者のアカウント情報をデータベースに保存する際に気を付けることを調べて答え てください。本問題には LLM を利用せず、Web 上の情報や本、自らの体験などを元 に 回 答 を 考 えてください。 講師が設定した選考課題(一部省略)
  4. 1. 攻撃者はログイン中の PC からどのような情報を抜き取ることができるでしょうか? 窃取できる情報の種類だけではなく、なぜその情報を攻撃者が PC から窃取できる かも 合 わせて

    答 えてください。 → 普段利用している情報端末にどのような情報が保存されているかを考え直しても らうための 問 題 2. 利用者のアカウント情報をデータベースに保存する際に気を付けることを調べて答え てください。本問題には LLM を利用せず、Web 上の情報や本、自らの体験などを元 に 回 答 を 考 えてください。 → 前問を少し発展させた問題、作問当時は DB にパスワードを保存する際の手法で 一部の界隈が盛り上がっていたので情報収集しやすいかなと思った OJI が設定した選考課題(一部省略)
  5. 1. 攻撃者はログイン中の PC からどのような情報を抜き取ることができるでしょうか? 窃取できる情報の種類だけではなく、なぜその情報を攻撃者が PC から窃取できる かも 合 わせて

    答 えてください。 A. 日 常 的 にしている 会 話 のログ(Slack、Discord、メール)、ログイン 中 の オンラインサービスのセッション情報、Password Manager に登録している情報 2. 利用者のアカウント情報をデータベースに保存する際に気を付けることを調べて答え てください。本問題には LLM を利用せず、Web 上の情報や本、自らの体験などを元 に 回 答 を 考 えてください。 A. パスワードにユーザーごとに決められた値(Salt)を付与した上で、任意の回数ハッ シュ化(Stretching)を行う、DB外に保存している値(Papper)を鍵とした暗号化 を行うことによりオフライン攻撃に対してさらに強くなる 講師的な回答(これが絶対的な正答ではない)
  6. • 会員制のサイトを運営するために nginx を利用 • nginx の設定を行った際にひと文字だけ抜けていた • 設定上問題がないため、nginx は正常に動作する

    • 設定ミスのためエイリアストラバーサルによる攻撃余地を 生んでしまい、アクセスログを窃取された • URL には一部機密情報(トークンやフォームの入力内容など) が含まれていたため、個人情報が漏洩した シナリオ
  7. • Apache と並んで世界的に有名な Web サーバー • Web サイトの三割に nginx が使われている

    nginx について 引用: https://w3techs.com/technologies/overview/web_server
  8. 個人的な回答 • この設定ミスが再発しないためにするべきことはなにか? ◦ gixy などの検査ツールを用いる ◦ このミスが発生したことを文書化する(会社などの場合) • 万が一ミスが発生した場合、情報漏洩は本当に防げないのか?

    ◦ nginx の設定以外で防ぐことは可能! ◦ 機密情報を URL に含めない ▪ どうしても含める必要があれば短命なものにする ◦ alias に設定するディレクトリを独自のものにする ▪ 例: /data/images など
  9. OJI はなぜこの答えにたどり着いたのか? • この設定ミスが再発しないためにするべきことはなにか? ◦ gixy などの検査ツールを用いる ◦ このミスが発生したことを文書化する(会社などの場合) •

    万が一ミスが発生した場合、情報漏洩は本当に防げないのか? ◦ nginx の設定以外で防ぐことは可能! ◦ 機密情報を URL に含めない ▪ どうしても含める必要があれば短命なものにする ◦ alias に設定するディレクトリを独自のものにする ▪ 例: /data/images など
  10. これは何 • この設定ミスが再発しないためにするべきことはなにか? ◦ gixy などの検査ツールを用いる ◦ このミスが発生したことを文書化する(会社などの場合) • 万が一ミスが発生した場合、情報漏洩は本当に防げないのか?

    ◦ nginx の設定以外で防ぐことは可能! ◦ 機密情報を URL に含めない ▪ どうしても含める必要があれば短命なものにする ◦ alias に設定するディレクトリを独自のものにする ▪ 例: /data/images など
  11. 多層防御的な発想 • この設定ミスが再発しないためにするべきことはなにか? ◦ gixy などの検査ツールを用いる ◦ このミスが発生したことを文書化する(会社などの場合) • 万が一ミスが発生した場合、情報漏洩は本当に防げないのか?

    ◦ nginx の設定以外で防ぐことは可能! ◦ 機密情報を URL に含めない ▪ どうしても含める必要があれば短命なものにする ◦ alias に設定するディレクトリを独自のものにする ▪ 例: /data/images など
  12. これは何? • この設定ミスが再発しないためにするべきことはなにか? ◦ gixy などの検査ツールを用いる ◦ このミスが発生したことを文書化する(会社などの場合) • 万が一ミスが発生した場合、情報漏洩は本当に防げないのか?

    ◦ nginx の設定以外で防ぐことは可能! ◦ 機密情報を URL に含めない ▪ どうしても含める必要があれば短命なものにする ◦ alias に設定するディレクトリを独自のものにする ▪ 例: /data/images など
  13. danluu/post-mortems: A collection of postmortems. Sorry for the delay in

    merging PRs! https://github.com/danluu/post-mortems
  14. README に書いてある目次、Config Error もある 設定ミスが Facebook と Instagramの ダウンを引き起こした Facebook

    Outage Deep Dive | ThousandEyes https://www.thousandeyes.com/blog/faceb ook-outage-deep-dive
  15. Q. 鎖の強度はどこで見る? C₁、C₂、C₃ …… 1. 一番小さい値(min(C₁, C₂, C₃, …)) 2.

    平均値(average(C₁, C₂, C₃, …)) 3. 合計値(sum(C₁, C₂, C₃, …)) 4. 一番大きい値(max(C₁, C₂, C₃, …))
  16. Q. 鎖の強度はどこで見る? C₁、C₂、C₃ …… 1. 一番小さい値(min(C₁, C₂, C₃, …)) 2.

    平均値(average(C₁, C₂, C₃, …)) 3. 合計値(sum(C₁, C₂, C₃, …)) 4. 一番大きい値(max(C₁, C₂, C₃, …)) 鎖の中で一番脆い部分が鎖全体の強度!
  17. サプライチェーンとセキュリティ • サプライチェーンの脆弱な部分へのサイバー攻撃 ◦ 組織向け情報セキュリティ10大脅威 2023 第2位 ◦ 2020年時点では4位、どんどん順位が上がってる •

    ソフトウェアサプライチェーン ◦ ソフトウェアにも「サプライチェーン」が存在している ◦ 全国大会へ行くと関連講義が受けれるかも?
  18. サプライチェーンとセキュリティ • サプライチェーンの脆弱な部分へのサイバー攻撃 ◦ 組織向け情報セキュリティ10大脅威 2023 第2位 ◦ 2020年時点では4位、どんどん順位が上がってる •

    ソフトウェアサプライチェーン ◦ ソフトウェアにも「サプライチェーン」が存在している ◦ 全国大会へ行くと関連講義が受けれるかも?
  19. サプライチェーンとセキュリティ • サプライチェーンの脆弱な部分へのサイバー攻撃 ◦ 組織向け情報セキュリティ10大脅威 2023 第2位 ◦ 2020年時点では4位、どんどん順位が上がってる •

    ソフトウェアサプライチェーン ◦ ソフトウェアにも「サプライチェーン」が存在している ◦ 全国大会へ行くと関連講義が受けれるかも?
  20. サプライチェーンとセキュリティ • サプライチェーンの脆弱な部分へのサイバー攻撃 ◦ 組織向け情報セキュリティ10大脅威 2023 第2位 ◦ 2020年時点では4位、どんどん順位が上がってる •

    ソフトウェアサプライチェーン ◦ ソフトウェアにも「サプライチェーン」が存在している ◦ 全国大会へ行くと関連講義が受けれるかも?
  21. 把握しきれない依存先 • エディタ • 開発補助ツール • ビルドツール • ライブラリ ◦

    ライブラリが依存しているライブラリが依存している(ry • クラウド • 開発者に必要なオンラインサービス • more and more……
  22. 近年出てきた「フレームワーク(= 考え方)」 • Supply-chain Levels for Software Artifacts(SLSA) ◦ 個人、企業を問わず活用できるチェックリスト及びツール群

    • Secure Supply Chain Consumption Framework (S2C2F) ◦ OSS を消費(利用)する場面に注目したフレームワーク • CIS Software Supply Chain Security Benchmark ◦ まだ GitHub に関するチェックリストしか存在しない CIS 自体は色々な分野のベストプラクティスを提供している ことで有名
  23. 近年出てきた「フレームワーク(= 考え方)」 • Supply-chain Levels for Software Artifacts(SLSA) ◦ 個人、企業を問わず活用できるチェックリスト及びツール群

    • Secure Supply Chain Consumption Framework (S2C2F) ◦ OSS を消費(利用)する場面に注目したフレームワーク • CIS Software Supply Chain Security Benchmark ◦ まだ GitHub に関するチェックリストしか存在しない CIS 自体は色々な分野のベストプラクティスを提供している ことで有名
  24. SLSA の原則 • Trust platforms, verify artifacts ◦ プラットフォームを信頼し、成果物を検証する •

    Trust code, not individuals ◦ 個人ではなくコードを信頼する • Prefer attestations over inferences ◦ 推測ではなく証明を優先する
  25. 過去の事件と SLSA の脅威モデル • SolarWinds 事件 ◦ “Compromise Build Process”(ビルドプロセスへの侵害)

    ◦ • CodeCov 事件 ◦ “Upload modified package”(ビルド成果物とは異なるパッケージ) • 他の6つのモデルも現実の事件と照らし合わせながら紹介さ れている