ASVSが「できあがったアプリ」の基準だとすると、この章で扱うNIST SSDFは「アプリを作る過程」の基準です。米国政府が調達するソフトウェアに求める水準で、4つの実践群に19の実践が並びます。あわせて、CISAが提唱する「製品の安全は作り手の責任」というSecure by Designの原則を読みます。個人開発には大げさに見えますが、経理の内部統制と同じで、枠組みは大きくても規模に応じて適用できます。
この章の学習目標
- NIST SP 800-218(SSDF v1.1)の4つの実践群PO/PS/PW/RVと、代表的な実践の番号を人に説明できるようになる
- SP 800-218A(生成AI向けプロファイル)とSSDF 1.2草案、CISAのSecure by Design 3原則の位置づけを説明できるようになる
- 各実践群から個人規模でできることを1つずつ選び、自分の開発の進め方を「国家水準の基準」に対応づけて点検できるようになる
SSDFとは:作る「過程」の基準
NIST(米国国立標準技術研究所)が2022年2月に公開したSP 800-218「Secure Software Development Framework (SSDF) Version 1.1」は、安全なソフトウェア開発の実践を体系化した文書です。NISTは、BSA、OWASP、SAFECodeといった既存の指針から実践を集めたと説明し、「成果に基づく(outcome-based)」もので「チェックリストではなく、リスクに基づく計画の出発点」だと位置づけています。
背景には、2021年5月の米国大統領令14028「国家のサイバーセキュリティの改善」があります。この大統領令は、政府が購入するソフトウェアの開発過程に安全性を求め、SSDFはその具体的な中身になりました。SP 800-218には、大統領令の各条項がSSDFのどの実践に対応するかの表が付いています。
経理の言葉で言えば、ASVSが「決算書の正しさを検証する監査手続」なら、SSDFは「正しい決算書ができあがる業務プロセスの整備基準」です。プロセスが整っていてはじめて、翌期も正しい結果が出ます。
4つの実践群と、その中身
SSDF v1.1は4つの実践群(practice groups)に分かれ、それぞれに番号付きの実践(practices)があります。次の表は、SP 800-218の原典(nvlpubs.nist.gov)から実践の原題を転記し、筆者が日本語の要約を添えたものです。なお、PW.3は改訂の過程でPW.4に統合され、v1.1では欠番になっています。
| 群 | 番号 | 原題 | 要旨(筆者による要約) |
|---|---|---|---|
| PO 組織の準備 | PO.1 | Define Security Requirements for Software Development | 開発のセキュリティ要件を定める |
| PO.2 | Implement Roles and Responsibilities | 役割と責任を決める | |
| PO.3 | Implement Supporting Toolchains | 支援ツール群を整える | |
| PO.4 | Define and Use Criteria for Software Security Checks | セキュリティ検査の基準を定めて使う | |
| PO.5 | Implement and Maintain Secure Environments for Software Development | 開発環境を安全に保つ | |
| PS ソフトウェアの保護 | PS.1 | Protect All Forms of Code from Unauthorized Access and Tampering | あらゆる形のコードを不正アクセスと改ざんから守る |
| PS.2 | Provide a Mechanism for Verifying Software Release Integrity | リリースが改ざんされていないことを確かめる手段を提供する | |
| PS.3 | Archive and Protect Each Software Release | 各リリースを保管し保護する | |
| PW 安全なソフトウェアの作成 | PW.1 | Design Software to Meet Security Requirements and Mitigate Security Risks | 要件を満たしリスクを減らすように設計する |
| PW.2 | Review the Software Design to Verify Compliance with Security Requirements and Risk Information | 設計をレビューする | |
| PW.4 | Reuse Existing, Well-Secured Software When Feasible Instead of Duplicating Functionality | 自作せず、実績ある安全な部品を再利用する | |
| PW.5 | Create Source Code by Adhering to Secure Coding Practices | 安全なコーディング慣行に従って書く | |
| PW.6 | Configure the Compilation, Interpreter, and Build Processes to Improve Executable Security | ビルドの設定で実行物の安全性を高める | |
| PW.7 | Review and/or Analyze Human-Readable Code to Identify Vulnerabilities and Verify Compliance with Security Requirements | コードをレビュー・解析して脆弱性を見つける | |
| PW.8 | Test Executable Code to Identify Vulnerabilities and Verify Compliance with Security Requirements | 動くものをテストして脆弱性を見つける | |
| PW.9 | Configure Software to Have Secure Settings by Default | 既定で安全な設定にする | |
| RV 脆弱性への対応 | RV.1 | Identify and Confirm Vulnerabilities on an Ongoing Basis | 脆弱性を継続的に見つけて確認する |
| RV.2 | Assess, Prioritize, and Remediate Vulnerabilities | 評価し、優先順位を付けて修正する | |
| RV.3 | Analyze Vulnerabilities to Identify Their Root Causes | 根本原因を分析する |
4つの群は時間の流れに沿っています。作る前の準備(PO)、作っている最中のコードの保護(PS)と作り方(PW)、公開した後の対応(RV)です。第1章の論文が示した失敗モードの多くは、PW.5(安全なコーディング慣行)とPW.7(コードレビュー)の欠落として説明できます。論文の「暗黙のセキュリティ規則の欠落」(658件、55.5%)は、SSDFで言えばPO.1(要件を定める)が無いまま作り始めた結果です。
生成AI向けの拡張と、1.2への改訂
SSDFは、AIの時代に合わせて2段階で広がっています。
- SP 800-218A(2024年7月26日)「Secure Software Development Practices for Generative AI and Dual-Use Foundation Models: An SSDF Community Profile」。生成AIと、軍民両用になりうる基盤モデルの開発に向けて、SSDF v1.1に実践や作業を追加した「コミュニティプロファイル」です。NISTはこれを、AIモデルを作る側、モデルを組み込んだシステムを作る側、そしてそれを調達する側の3者向けだと説明しています。2023年のAIに関する大統領令14110が、SSDFの「付属資料」を作るよう求めたことに応えたものです。
- SSDF 1.2草案(SP 800-218 Rev. 1、初回公開草案)2025年12月17日公開、意見募集は2026年1月30日まで。大統領令14306に基づく改訂です。本稿執筆時点(2026年10月)で、NISTのページは意見募集を終了済みと表示しており、確定版の公開は確認できていません。番号や内容は確定版で変わる可能性があるため、この教材ではv1.1の番号を使います。
CISA「Secure by Design」:安全は作り手の責任
SSDFが「どう作るか」の手順なら、CISA(米国サイバーセキュリティ・インフラセキュリティ庁)のSecure by Designは「誰が責任を負うか」の原則です。CISAは2023年4月にこの取り組みを始め、同年10月16日には米国のNSA・FBIに加え、日本のNISCとJPCERT/CCを含む各国機関と共同で、指針「Shifting the Balance of Cybersecurity Risk: Principles and Approaches for Secure by Design Software」の改訂版を公開しました。
原則は3つです。CISAの発表文の原文をそのまま挙げます。
- Take ownership of customer security outcomes.(顧客のセキュリティの結果に、作り手が責任を持つ)
- Embrace radical transparency and accountability.(徹底した透明性と説明責任を受け入れる)
- Lead from the top.(経営層が先頭に立つ)
CISAは、製品が「出荷時点で、設定をほとんど変えずに安全に使える」状態をSecure by Default(既定で安全)と呼び、多要素認証やアクセス制御を追加費用なしで提供することを例に挙げています。
2024年5月8日には、企業が自発的に署名する「Secure by Design Pledge(誓約)」が始まり、当初68社が署名しました。誓約の目標は7つで、多要素認証の普及、初期パスワードの廃止、脆弱性の種類ごとの根絶(SQLインジェクション、XSS、メモリ安全性)、パッチの適用しやすさ、脆弱性開示方針の公表、CVE(共通脆弱性識別子)の正確さと迅速さ、侵入の証拠となるログの提供です。CISAのページは現在「数百社が署名した」と記しています。法的拘束力はなく、CISAが遵守を検証することもありません。
第1章の論文で見た「利用者任せ」(72件、6.1%)は、まさにSecure by Designが否定する姿です。AIが「本番ではここを変えてください」とコメントを残して去る。それは作り手の責任を利用者に転嫁したことになります。あなたが作り手なら、その責任はあなたにあります。
個人開発にSSDFは大げさか
答えは「枠組みは大げさでも、中身は小さく使える」です。経理のCOSO内部統制フレームワークを思い出してください。統制環境からモニタリングまでの構成要素は、上場企業のために書かれています。しかし、従業員数名の会社でも「現金の管理者と記帳者を分ける」「月次で残高を照合する」という形で、同じ考え方を縮小して適用します。SSDFも同じです。各実践群から1つずつ、個人の規模でできることを抜き出すと、次のようになります。
| 群 | 実践 | 個人開発での具体策 | この教材での対応章 |
|---|---|---|---|
| PO | PO.1 要件を定める | AIへの指示に「本番運用に耐えるものを」と目的を書き、第13章の「持ち主への質問」への回答を業務ルール一覧として残す | 第4章・第13章 |
| PS | PS.1 コードを守る | GitHubで二要素認証を有効にし、秘密情報をリポジトリに入れず、Secret scanningを有効にする | 第9章・第12章 |
| PW | PW.4 自作せず再利用する | 認証を自作せずSupabase Authなどに任せる。暗号も定評ある部品を使う | 第10章・第25章 |
| PW | PW.7 コードをレビューする | 作ったのとは別のセッションで、OWASP Top 10やASVSを観点に渡してAIにレビューさせる | 第13章・第20章 |
| PW | PW.9 既定で安全に | RLSを全テーブルで有効にし、環境変数をSensitiveにし、プレビューURLを保護する | 第10章・第12章 |
| RV | RV.1 継続的に見つける | Dependabotを有効にし、通知を放置しない。クラウド各社のセキュリティ告知を購読する | 第12章・第27章 |
| RV | RV.3 根本原因を分析する | 見つかった穴を、論文の8つの失敗モード(記憶・目的・知識の欠陥)のどれかに分類し、次の頼み方を変える | 第4章 |
専門家に「SSDFに沿って開発していますか」と聞かれたら、この表を見せて「個人の規模で、PO.1、PS.1、PW.4、PW.7、PW.9、RV.1、RV.3に相当することをやっています」と答えられます。全部をやっていると言う必要はありません。やっていることと、やっていないことを、同じ番号で言えることが大切です。
日本の指針
日本にも、同じ方向の公的資料があります。確認できたものだけを挙げます。
- IPA(情報処理推進機構)「セキュリティ・バイ・デザイン導入指南書」(2022年)。セキュリティに不慣れな読者向けに、脅威分析、セキュリティ要件、安全な設計と開発を図入りで解説しています。第21章の脅威モデリングの日本語資料として読めます。
- IPA「安全なウェブサイトの作り方」改訂第7版。届出のあった脆弱性をもとに、SQLインジェクションやクロスサイト・スクリプティングなど11種類の脆弱性と根本的解決策、失敗例を示しています。
- 経済産業省「ソフトウェア管理に向けたSBOMの導入に関する手引 ver 2.0」(2024年8月)。第24章で扱うSBOMの日本語の公式資料です。
- CISAのSecure by Design指針(2023年10月改訂版)には、日本からNISC(内閣サイバーセキュリティセンター)とJPCERT/CCが共同署名しています。日本政府もこの原則を共有していると言えます。
演習:自分の開発の進め方をSSDFに対応づける
- 上の「個人開発での具体策」の表を、点検ノートに写します。列を1つ足し、「やっている/やっていない」を書きます。
- 「やっている」ものには、根拠となる実践編の点検ノートの番号(第9章から第13章の結果)を書き添えます。
- 「やっていない」もののうち、今日中にできるものを1つ選んで実行します。多くの場合、PS.1(GitHubの二要素認証とSecret scanning)かRV.1(Dependabotの有効化)が最短です。
- SP 800-218の原典(PDF)を開き、自分が「やっている」とした実践の節を1つだけ読みます。英語ですが、各実践は「Practice/Tasks/Notional Implementation Examples/References」の定型で書かれており、実装例(Examples)の欄を読むだけで雰囲気がつかめます。
- CISAのSecure by Designの3原則を、自分のアプリに当てはめて1行ずつ書きます。「利用者に設定を任せている箇所はないか」(原則1)、「何を守り、何を守っていないかを利用者に示しているか」(原則2)、「安全性を後回しにする判断を自分がしていないか」(原則3)。
- 結果を点検ノートに日付入りで残します。
まとめ
- NIST SP 800-218(SSDF v1.1、2022年2月)は、作る「過程」の基準。4つの実践群PO(組織の準備)/PS(ソフトウェアの保護)/PW(安全なソフトウェアの作成)/RV(脆弱性への対応)に、PO.1からRV.3までの実践が並ぶ。SP 800-218A(2024年7月)は生成AI向けの拡張、SSDF 1.2草案(2025年12月)は大統領令14306に基づく改訂。
- CISAのSecure by Designは「製品の安全は作り手の責任」という原則。3原則は「顧客の安全の結果に責任を持つ」「徹底した透明性と説明責任」「経営層が先頭に立つ」。2024年5月の誓約には当初68社が署名した。日本のNISCとJPCERT/CCも指針に共同署名している。
- 個人開発でも、COSOを小規模企業に適用するのと同じ要領で、各実践群から1つずつ実行できる。PO.1(目的を伝え、業務ルールを残す)、PS.1(二要素認証とSecret scanning)、PW.4(認証や暗号を自作しない)、PW.7(別セッションでのAIレビュー)、PW.9(RLSとSensitive)、RV.1(Dependabot)、RV.3(失敗モードで原因分類)。
出典
- NIST「Secure Software Development Framework (SSDF)」プロジェクトページ(NIST)
- NIST SP 800-218「Secure Software Development Framework (SSDF) Version 1.1」(NIST, 2022年2月)
- NIST SP 800-218A「Secure Software Development Practices for Generative AI and Dual-Use Foundation Models: An SSDF Community Profile」(NIST, 2024年7月26日)
- NIST SP 800-218 Rev. 1(初回公開草案)「SSDF Version 1.2」(NIST, 2025年12月17日)
- CISA「Secure by Design」(CISA)
- CISA「Secure by Design Pledge」(CISA, 2024)
- CISA「CISA, NSA, FBI, and International Partners Release Updated Secure by Design Guidance」(CISA, 2023年10月16日)
- IPA「セキュリティ・バイ・デザイン導入指南書」(情報処理推進機構, 2022)
- IPA「安全なウェブサイトの作り方」改訂第7版(情報処理推進機構)
- 経済産業省「ソフトウェア管理に向けたSBOMの導入に関する手引 ver 2.0」(経済産業省, 2024年8月)
- Junquan Deng, Zhiyu Fan, Ruijie Meng「Understanding the (In)Security of Vibe-Coded Applications」(arXiv:2606.23130、2026年6月、v4は2026年9月14日)