yohgaki's blog

  • Facebook
  • X
  • CERT Top 10 Secure Coding Practices

    CERTは米カーネギーメロン大学に設置されたコンピュータセキュリティ対策を行う老舗の組織です。CERTが設立される前もセキュリティが無視されていたのではありませんが、CERT設立後と前ではコンピュータセキュリティ、特にソフトウェアセキュリティに対する考え方が大きく変わりました。詳しくはセキュアプログラミング(防御的プログラミング)の歴史をざっと振り返るを参照してください。

    CERTはSecure Coding Standardsとして

    • SEI CERT C Coding Standard
    • CERT C++ Coding Standard
    • AndroidTM Secure Coding Standard 
    • SEI CERT Oracle Coding Standard for Java
    • SEI CERT Perl Coding Standard

    を公開しています。その中でもセキュアコーディング(セキュアプログラミング/防御的プログラミング)で最も重要なトップ10をTop 10 Secure Coding Practicesとしてまとめています。

    日本語訳が無いようなので資料として利用できるよう私訳しておきます。
    (追記:IPAのセキュアコーディングガイドは入力対策が出鱈目でした。 2017年からやっとIPAがCERT Secure Coding Practicesをセキュアコーディングの”原則”として紹介するようになりました。CERT版では出力対策を7番目に記載しています。IPAは順序を変えて2番目にしています。トップ10の原則とする際に順序を入れ替えるのは混乱の元です。オリジナルの順序のままにすべきだと思います。順序を変えると外国人とコミュニケーションが取れなくなります。)

    よく勘違いされているので書いておきます。入力対策と出力対策は”独立したセキュリティ対策”です。間違えないようにしましょう。

    入力バリデーションが第1位の対策であるのは科学的/論理的/原理的な理由が根拠となっています。最も重要な対策ですが、よく誤解されています。

    参考:

    • エンジニア必須の概念 – 契約による設計と信頼境界線
    • OWASP Secure Coding Practices – Quick Reference Guide
    • 開発者は必修、SANS TOP 25の怪物的なセキュリティ対策
    • セキュアプログラミングの7つ習慣

    (さらに…)

    2015年5月28日
  • OWASP Secure Coding Practices – Quick Reference Guide

    OWASPのガイドラインはPCI DSSでも参照するように指定されているセキュリティガイドラインです。その中でも比較的簡潔かつ体系的にセキュアプログラミングを解説した資料がOWASP Secure Coding Practices – Quick Reference Guide (v2) です。

    日本語訳がないようなので一部未訳ですが訳しました。CC-BY-SAライセンスです。クリエイティブコモンズライセンスに従って自由に配布できます。

    チェックリスト形式になっているので、自分のコーディング/開発スタイルがどの程度適合しているのか、簡単にチェックできるようになっています。コーディングスタイルのみでなく、運用はシステム構成に関連する物も含まれています。私が解説/紹介しているセキュリティ対策を行っている開発チームであればこれらの殆どに適合しているはずです。どのくらい適合していたでしょうか?

    イントロダクションでは、開発者に対して少々厳しいことが書いてあります。

    この技術的不可知論文書は一般的なセキュアコーディングを実践に必要な要素をソフトウェア開発ライフサイクルに統合可能なチェックリストとして定義します。

    「技術的不可知論文書」(不可知論:物事の本質は人には認識することが不可能である、とする立場のこと ※ )としているのは、この文書が取り扱うセキュアコーディングの本質が理解されていない、理解されることがない、と嘆いていることを意味します。セキュアコーディングの本質の解説は諦めて作ったチェックリストであることを示唆しています。私も同じ感覚を共有しています。興味がある方はぜひ以下の参考資料を参照してください。原理と原則を知った方が応用範囲が広がります。

    正確な直訳より分かり易さを優先しました。見直しをする時間まではありませんでした。誤り、誤解を招く訳などの指摘を歓迎します。

    ※ Agnostic(不可知論)について: このガイドは2010年に公開された文書です。最近、agnosticは「〜に依存しない」「〜に関わらず」「〜を問わず」「汎用的」「プラガブル」「詳しく知らなくても使える」といったコンテクストで割と一般的なIT用語として利用されています。2010年頃は哲学的意味が強かったと思いますが、現在は先に書いたような意味で使われているケースが多くあります。

    参考資料:

    • セキュアプログラミングの7つ習慣
    • エンジニア必須の概念 – 契約による設計と信頼境界線
    • CERT Top 10 Secure Coding Standard
    • 開発者は必修、SANS TOP 25の怪物的なセキュリティ対策
    • セキュアプログラミング(防御的プログラミング)の歴史をざっと振り返る
    (さらに…)
    2015年5月27日
  • セキュアなアプリ開発 – もしあなたが開発を丸投げするなら?

    もし「新規開発を丸投げしセキュアなWebアプリ開発を実現してください」と依頼されたらどうするでしょうか?開発者として開発に参加するのではなく、開発主体、つまりアプリの運営者としてして「新規開発を丸投げしセキュアなWebアプリ開発を実現すること」が目的です。開発プロジェクトのディレクションを担当し、開発は丸投げなので自分が開発に一切関わらないことが前提条件です。

    セキュア開発を行うには?を考えたメモです。

    (さらに…)

    2015年5月24日
  • 今すぐできるWAFの導入

    PHPに簡易WAF機能を追加するのは簡単です。今すぐできます。同じ考え方で他の言語でも実装可能ですし、Apacheのmod_rewirteを使って実装、iptablesのstringモジュールなどを使っても実装できます。

    (さらに…)

    2015年5月18日
  • セキュアプログラミング(防御的プログラミング)の歴史をざっと振り返る

    キュアプログラミング(防御的プログラミング)の歴史をざっと振り返ってみたいと思います。セキュアプログラミングは防御的プログラミングとも言われるプログラミングの原則の1つ※です。古くからある概念ですが、誤解または理解されていない概念の1つではないでしょうか?

    ※ Defensive Programmingとして記載されています。

    何故、一般に広く常識として理解されていないのか?その理由は防御的プログラミングの歴史にあるのかも知れません。

    参考:

    • セキュアプログラミングの7つ習慣
    • 「出力対策だけのセキュリティ設計」が誤りである理由

    (さらに…)

    2015年5月16日
  • PHP7のタイプヒントの使い方

    PHP7で基本的なデータ型である”int”や”float”、”array”タイプヒント(データ型のヒント)がサポートされます。使い方を間違えると思ってもいない問題が発生することがあります。しかし、正しく使えば問題ありません。タイプヒントの使い方を簡単に紹介します。

    (さらに…)

    2015年5月14日
  • PHP7 is going to be strictly typed language. Will this work?

    In previous blog, I wrote how PHP7’s basic type hinting works and missing piece to make it work. I would like to explain reason why current type hinting design will not work well for PHP.

    (さらに…)

    2015年5月12日
  • Don’t use PHP7 type hint for external data

    PHP7, expected 2015 Q4, comes with scalar type hints that supports “int”, “float”, “array”. While it is good thing to have type hints for basic data types, but it changes the way data was handled in older PHP versions.

     

    (さらに…)

    2015年5月11日
  • Building Dynamic websites. Harvard OpencourseWare. CS E-75

    すこし古い(2012年)ハーバード大学での「動的Webサイト構築」の動画です。英語の勉強を兼て基礎からWeb開発を学ぶには良い動画です。長いので流石に全部は見ていません。しかし、ほとんどの内容は現在でも通用する物になっていると思います。

    (さらに…)

    2015年5月11日
  • 不整合が起きてはならない場合、トランザクションはシリアライザブル

    リレーショナルデータベースが優れている点はトランザクションをサポートしている点です。トランザクションは手続きが一貫性ある形で実行されることを保証してくれます。しかし、トランザクションを使えばOK、という物ではありません。

    もしトランザクションさえ使っていればOKと思っていた方はトランザクション分離レベルを理解してください。

    (さらに…)

    2015年5月8日
  • いちばんやさしいPHPの教本

    「一番やさしいPHPの教本」を献本いただきました。表紙に書いてある通り、パソコンさえつかえれば知識ゼロではじめても挫折せずに動くプログラムが作れます。最初の一歩を踏み出すための本なのでこれだけで十分とは言えませんが、初めてWebアプリを作ってみたい、という方にはぴったりの本だと思います。

    DSC_0339
    DSC_0339

    (さらに…)

    2015年5月4日
  • Zephirで作られたIce Framework

    Ice FrameworkはC拡張モジュールとして作られたPHP用フレームワークです。PHPのC拡張モジュールを簡単に作れるZephirで作られたIce Frameworkが公開されています。GitHubで見てみると半年ほど前からあるようです。

    Fast PHP framework   Ice framework

     

    (さらに…)

    2015年5月4日
  • VMWareのWindowsがBSoD(ブルースクリーン)でクラッシュする場合の対処

    VMWare 11上のWindows 7 VMがBSoD(Blue Screen of Death)で時々クラッシュするので困っていたのですが、少し大きなファイルをネットワークを使ってコピーなどするとクラッシュするようになり使い物になりませんでした。対処方法が分ったので書いておきます。

    (さらに…)

    2015年5月2日
  • PHPスクリプトファイルアップロード攻撃を防止する方法

    PHPはスクリプトアップロードに弱いシステムですが、PHPアプリにはファイルアップロードをサポートしているアプリが数多くあります。WordPressなど自動更新を行うアプリも増えてきました。

    PHPアプリの場合、MVCフレームワークなどを使っていてもエントリポイントにはPHPファイルが必要です。ファイルアップロードをより安全に使うための設定も可能ですが、WordPressのようなファイル配置で自動更新を行っているアプリの場合、攻撃を完全に防ぐ事ができません。

    しかし、簡単な方法でドキュメントルート以下のPHPファイルの実行をホワイトリストで防御することができます。

    (さらに…)

    2015年4月26日
  • 開発者でなくても解るセキュリティ対策 – 入力バリデーション編

    ITシステムに限らずセキュリティ対策で最初に行うべき対策は境界防御(契約による設計と信頼境界線、標準と基本概念、開発者は必修SANS TOP 25)です。ソフトウェアにおける境界防御の第一番は入力の確認(入力の確実な制御)です。このブログでは何度も取り上げていますが、最も重要なセキュリティ対策である境界防御の概念と入力の確認が正しく認識されていない場合がよくあります。

    開発者であるから「これで解るはず」と思い書いたエントリは幾つか(「合成の誤謬」の罠、エンジニアに見られるセキュリティ対策理解の壁など)ありますが、どうも成功しているとは言えないようです。今回は開発者でなくても理解できるよう努力してみます。

    ホワイトリストの基本中の基本は”デフォルトで全て拒否する”であることに注意してください。全て拒否した上で、許可するモノ、を指定しないとホワイトリストになりません。

    (さらに…)

    2015年4月25日
←前のページ
1 … 17 18 19 20 21 … 97
次のページ→

yohgaki's blog

  • Facebook
  • X

Twenty Twenty-Five

Designed with WordPress

 

コメントを読み込み中…