2018/08/04)セキュアプログラミングの啓蒙にも少々食傷気味ですが、今回もセキュアプログラミングの話題です。IPAのセキュアプログラミング講座Web編は削除予定であるとFacebookではお伝えしましたが、ブログではまだだったので合わせて紹介します。27000がセキュアプログラミングついてどのように書いているのか紹介します。情報セキュリティマネジメントシステム)認証の根幹となっている国際セキュリティ標準です。ISMS導入で自動的にセキュリティ問題に対応できる!といったモノではありませんが、体系的なセキュリティ導入にとても役立つ規格で2015年6月29日時点で4646組織の認証登録があります。関連セキュアプログラミングとは?セキュアプログラミングの別名は「防御的プログラミング」「セキュアコーディング」です。セキュアプログラミングの基本は既に書いていますが、ここでもトップ10項目だけ記載しておきます。セキュアプログラミングの歴史については”セキュアプログラミング(防御的プログラミング)の歴史をざっと振り返る”を参照してください。セキュアコーディングプラクティス入力をバリデーションするコンパイラの警告に用心するセキュリティポリシーの為に構成/設計する簡易にするデフォルトで拒否する最小権限の原則を支持する他のシステムに送信するデータを無害化する縦深防御を実践する効果的な品質保証テクニックを利用するセキュアコーディング標準を採用するセキュアプログラミングの本家と言えばCERT/カーネギーメロン大学です。セキュアプログラミングのテクニックは色々ありますが、基本はこの10項目です。IPAのセキュアプログラミング講座Web編は削除予定IPAのセキュアプログラミング講座Web編は削除予定である、と書きました。これは個人的にIPAにセキュアプログラミング講座Web編の内容が「セキュアプログラミングとは掛け離れていて問題である」と指摘した問い合わせに対する回答としていただきました。IPAのセキュアプログラミング講座Web編を見るとすぐ分りますが、第一位の入力バリデーションの記載がなかったり、出力対策にあたる部分がなぜか「入力対策」となっている、など世間一般で確立されてきたセキュアプログラミングとは随分異る内容になっています。メールを見ると6月4日に指摘をして、6月9日にはこの講座を削除するとの回答を頂きました。IPAのような組織からすると迅速な対応だと思います。現在のところはまだ参照できますが、近いうちに削除されるものと思われます。最近知ったのですがJIS規格の規格部分はオンライン参照できるようになっていました!素晴らしい!これは快挙だと思います。時々システム障害(過負荷?)で見れないことがありますが、誰でも気軽に参照できることは素晴らしいことだと思います。27002:2013)などが表示されます。11の環境ではオンライン参照(つまり、ダウンロード/印刷などは不可)できることを確認しています。27002でセキュアプログラミングに言及している部分は以下の2箇所です。開発に適用される標準類が知られていない可能性がある場合、又は現行の最適な慣行に整合していなかった場合には、新規開発する場合及びコードを再利用する場合の両方に、セキュアプログラミング技術を用いる事が望ましい。セキュリティに配慮したコーディングに関する標準類を考慮し、該当する場合には、その使用を義務付けることが望ましい。開発者は、これらの標準類の使用及び試験について訓練を受けているいることが望ましく、また、コードレビューによって標準類の使用を検証することが望ましい。セキュリティに配慮したシステム構築の原則アプリケーションの開発手順では、入出力インターフェースをもつアプリケーションの開発に対し、セキュリティに配慮した構築技術(セキュアプログラミングなど)を適用することが望ましい。CERTがセキュアプログラミングの第一位にしているだけあって入力バリデーションと第7位の出力処理には念を入れて書かれています。27000シリーズに詳しくない方の為に解説します。27002はISMS構築のガイドラインです。ガイドラインなので全ての項目が実施済みであることは”要求されません”。ISOのマネジメントシステムは”継続的改善の実施”を要求しています。クリティカルでない物、リソース制約などから直ぐに実現不可能な物は将来実現してもよく、ガイドラインではほぼすべて「○○することが望ましい」の形式になっています。よい、という意味ではありません。以前のバージョンとの違いISO/JIS規格はバージョンアップされ内容が更新されます。以前のバージョンではより具体的にセキュアプログラミング技法の1つである入力バリデーションなどを例まで挙げて紹介していました。現在のバージョンでは「セキュアプログラミングを行いなさい」とだけ記載されています。この経緯は印刷物として取得できるJISハンドブックに記載されています。そこにはセキュアプログラミングは体系的に整備されているので「セキュアプログラミングを行う」旨の記載のみした、と解説されています。要するに当たり前になってきたので「セキュアプログラミングを行う」という簡潔な記述にしたということです。まとめISMS認証を取得するようなセキュリティに能動的な組織ではセキュアプログラミングは当たり前になっています。残念ながらそうではない方も多いです。セキュアプログラミングを行うと確実に前より安全なプログラムが記述できるようになります。契約プログラミングも合わせて習得すると良いでしょう。ところで、今週末の7/11(土曜)は岡山大学大学院のビジネスマインド養成講座があり私が担当の日です。申し込み無しで来ていただいても大丈夫なので是非おこしください。紹介エレクトロニック・サービス・イニシアチブのWebシステムのコンサルタントのブログです。PHPの開発、PHP4.x/5.xレガシーPHPセキュリティパッチサービスなどを行っています。ブログのサブタイトルを「書かない日記」としているのは、ブログを始めた時にあまり書かないつもりで始めたのでこのサブタイトルになっています。yohgaki@ohgaki.net私が記述したブログ中のコードは記載が無い場合はMITライセンスです。その他のコードは参考リンクなどのライセンス情報を参照ください。