セキュアコーディング【secure coding】セキュアプログラミング/secure programming

概要

セキュアコーディングとは、ソフトウェアの開発段階で、セキュリティ上の脆弱性を生じさせないよう安全性を意識した手法でプログラムを記述すること。漫然とプログラミングを行い、後で発見された脆弱性をその都度修正するのではなく、そもそも最初から脆弱性が生じないよう配慮する手法である。
セキュアコーディングのイメージ画像

攻撃者が悪用することができるソフトウェアの保安上の弱点を「脆弱性」という。その多くは開発者がコードを書く際の不注意や知識不足に起因している。例えば、Webアプリケーションで外部から入力されたデータをそのままプログラムに渡してしまうと、SQLインジェクションクロスサイトスクリプティングXSS)といった攻撃を受ける危険性が生じる。

こうした脆弱性はリリース後に発見されることが多く、修正コストは開発段階で対処する場合と比べて大幅に増大する。セキュアコーディングはこうした問題を未然に防ぐため、プログラムを記述する際に脆弱性になりうるコードのパターンを極力排除する取り組みである。

例えば、利用者や外部システムから受け取ったデータは、必ず想定された形式・範囲内であるかをチェックしてから処理に使用するようにすることで、想定外の悪意ある入力でシステムを危険に晒すことを防ぐことができる。また、エラーメッセージに内部の詳細情報を含めないようにすることで、システムの構造やファイルパスなど、攻撃者にとっての手がかりになりうる情報を渡さないようにすることができる。

セキュアコーディングを支援する仕組みとして、業界標準のガイドラインが広く参照されている。非営利団体OWASPが公開する「OWASP Top 10」はWebアプリケーションにおける重大なセキュリティリスクをまとめたものであり、世界中の開発現場で活用されている。日本では情報処理推進機構(IPA)が編纂・公開している「IPAセキュアプログラミング講座」なども参照されている。

開発チームがセキュアコーディングを組織的に実践するためには、教育や開発プロセスへの組み込みが必要となる。コードレビュー静的解析ツールの活用によって脆弱性を早期に発見するという取り組みも広がっている。近年では、開発工程の早い段階からセキュリティを組み込む「シフトレフト」や「セキュリティバイデザイン」の考え方が普及しており、セキュアコーディングを開発プロセスの標準として組み込む組織やプロジェクトが増えている。

この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。