0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【セキュアコーディング】おさらい

Last updated at Posted at 2025-08-10

はじめに

「セキュアコーディング」
あたかも完全に理解したような顔で日々過ごしている人間です。
強がってタイトルにはおさらいと書いてしまいました。
正確な定義とか、どこを見たら良いか調べてまとめて残しておきます。

参照文献

デジタル庁「政府情報システムにおけるセキュリティ・バイ・デザインガイドライン」

JPCERT セキュアコーディングページ

CERTコーディングスタンダード(JPCERT)

経済産業省 情報セキュリティ管理基準(PDF)

NISC 政府機関等のサイバーセキュリティ統一基準群

IPA セキュアプログラミング講座

セキュリティ・バイ・デザイン

セキュアコーディングを語るには、
セキュリティバイデザイン(Security by Design)を理解していないといけない。
セキュリティバイデザインとは、システムやソフトウェアの企画・設計段階からセキュリティ対策を組み込み、全ライフサイクルを通じてセキュリティを確保する「設計思想」や「考え方」のこと。
完成後に後付けでセキュリティを加えるのではなく、最初から安全な仕組みを設計し、リスクアセスメントを基に防御策を計画的に組み入れるアプローチであり、組織の方針やプロセスも含む。

デジタル庁「政府情報システムにおけるセキュリティ・バイ・デザインガイドライン」

ガイドラインの「5)セキュリティ実装」章に以下のように記載されている。

ア 要求事項
• 設計に基づいて、セキュリティ機能の実装が完了していること
• セキュリティ設計方針に基づいて、脆弱性を作りこまないよう、
 アプリケーションのセキュアコーディングが実施されていること
• セキュリティ設計方針に基づいて、システム基盤となるプラットフォーム
のセキュリティ設定の実施(堅牢化、要塞化)が完了していること

つまり、「セキュアコーディング」とは、
セキュリティ・バイ・デザイン思想に則った具体的な技術的アプローチの一つであり、ソフトウェア開発の実装フェーズでの「安全なコーディング手法」のこと。
具体的には入力検証、エラーハンドリングなどの技術的対策を取り入れて、コードの脆弱性を減らすことを目的としている。

セキュアコーディング

定義

「セキュアコーディング」とは、
悪意のある攻撃者の攻撃やソフトウェアの脆弱性を防ぐために、設計・実装段階で安全なプログラミング手法・原則を適用し、不正アクセスや情報漏洩などのリスクを低減する技術的な方法論のこと。

「CERT C」は、その方法論の具体的な標準のひとつである。
CERT Cの目的は、それぞれのプログラミング言語で開発されたソフトウェアシステムのセキュリティを確保するために必要な(ただし十分ではない)一連のルールを定めることである。

CERT C

カテゴリ名 略号 概要・主な内容
プリプロセッサ PRE マクロの安全な使い方、文字列結合の禁止など
宣言と初期化 DCL 変数・関数の宣言と初期化
EXP 副作用管理、定数の変更禁止
整数 INT 整数の範囲チェック、符号の扱い
浮動小数点 FLP 浮動小数点処理、誤差への対応
配列 ARR 境界の管理、ポインタの安全利用
文字と文字列 STR 文字列操作の安全化、非終端文字列の回避
メモリ管理 MEM 動的メモリ割当・解放、解放後アクセス禁止
入出力 FIO ファイル操作の安全性
エラー処理 ERR 一貫したエラー処理方針
競合状態 CON スレッド同期、データ競合防止
アプリケーションプログラミングインターフェイス API API利用時のセキュリティ注意点
一般的事項 MSC その他一般的な安全ルール
POSIX POS POSIX API利用時の安全注意
Microsoft Windows WIN Windows環境固有の安全コーディング
0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?