●トピック
・バッファオーバーフロー(バッファオーバーラン)
・レース状態(レースハザード)
・TOCTOU
・クロスサイトスクリプティング
・クロスサイトトレーシング
・クロスサイトリクエストフォージュリ
・SQLインジェクション
・ディスクロージャー
・同一生成元ポリシー
・JavaScript
・DNSキャッシュポイズニング
・DNSファーミング
・データ詐取・削取
・カバートチャネル
●深く知る
ソフトウェアの攻撃は柔軟で常に進化していきます。そのため、攻撃への対策も常に上をいかなければなりません。ただ、攻撃の方法は多岐にわたるものの、攻撃手法の分類から開発時点でどのような事に気を付けなければならないかを把握することが可能です。多くの攻撃は脆弱なアプリケーションのインターフェースより発生します。そのため、アプリケーションで実際に処理する前にどのような値を処理すべきなのかというリクエストに対する検査を行う必要があります。また、攻撃の手法の一つに管理者用ツールを利用する方法があります。システムの開発者はシステムを柔軟にコントロールをするためのツールを整備することがあります。これ自体は問題ありませんが、そういった設定操作の管理者ツールには大きな権限が与えられており、ツールを利用することで特権の昇格を得ることができます。
ソフトウェアの脆弱性を発見した人が取るべき行動について考えましょう。広く使われるWebサーバーなどの有名なソフトウェアに欠陥を発見した場合、どのような行動を取るべきでしょうか。 あなたが倫理的な行動をするホワイトハットであれば、リスクは脆弱性を知っているということではなく、悪意のある人も知っている可能性があることです。ホワイトハットはむやみやたらに公開するのではなく、ソフトウェアを担当するベンダーに通知し、ソフトウェアが脆弱であることを示した調査を共有します。脆弱性情報をベンダーと非公開で共有し、パッチが利用可能になるまで公開を差し控えることです。しかし、その脆弱性の調査を受けても対応しない場合もあるでしょう。その時に、政治的な圧力を得るために脆弱性に対応しないことを公開する人もいるかもしれません。彼らの主張は、脆弱性を隠すことによるセキュリティ対策として不十分であることと、放置した場合に最終的な不利益を被るのがその利用者に及ぶことを認識していることです。しかし、ブラックハットは公開された情報を基に、攻撃の誘発になる可能性があり、物議を醸しています。
クライアントベースの脆弱性は、ユーザ、そのデータ、およびそのシステムを危険にさらし、破壊する危険性があります。クライアントサイド攻撃とは、クライアントに危害を加えることができるあらゆる攻撃のことです。一般的に、攻撃について議論する場合、主なターゲットはサーバーまたはサーバー側のコンポーネントであると想定されます。クライアント側またはクライアントに焦点を当てた攻撃とは、クライアント自身またはクライアント上のプロセスがターゲットとなるものです。クライアントサイド攻撃の一般的な例としては、悪意のあるウェブサイトが、クライアント上で実行されている脆弱なブラウザに悪意のあるモバイルコード(アプレットなど)を転送することが挙げられます。クライアントサイド攻撃は、ハイパーテキスト転送プロトコル(HTTP)だけでなく、あらゆる通信プロトコルで発生する可能性があります。また、クライアントベースの潜在的な脆弱性として、ローカルキャッシュのポイズニングの危険性があります。