OWASPに対して大変失礼な誤解をしている意見を見かけたのでブログに書いておきます。
OWASPは「入力バリデーション」とても重要な「セキュリティ対策」として考えていますが、OWASP的にはセキュリティ対策ではない、少なくとも重要なセキュリティ対策ではない、というとんでもない誤解はOWASPに対して大変失礼な誤解と言えます。
OWASPでも入力バリデーションは重要なセキュリティ対策
2004年度版のOWASP TOP 10ではUnvalidated Inputが第一位のセキュリティ対策として記載されています。つまり、最も重要なセキュリティ対策として入力バリデーションを挙げていました。
Information from web requests is not validated before being used by a web application. Attackers can use these flaws to attack backend components through a web application.
OWASPの方針変更
2007年度版のOWASP TOP 10では大幅な変更が行われました。2004年度版の導入部分には
The OWASP Top Ten provides a powerful awareness document for web application security. The OWASP Top Ten represents a broad consensus about what the most critical web application security flaws are.
「Webアプリセキュリティに対する強力な認識を与える文書を提供」としています。2007年度版の導入部分では
The primary aim of the OWASP Top 10 is to educate developers, designers, architects, and organizations about the consequences of the most common web application security vulnerabilities.
Webアプリで最も一般的に見られる”脆弱性”の結果を教育する、としています。
2004年度版と2007年度版のOWASP TOP 10では編集方針に大きな変更があったことをここから読み取れます。2007年度版の編纂方法論の部分では
Our methodology for the Top 10 2007 was simple: take the MITRE Vulnerability Trends for 2006, and distill the Top 10 web application security issues.
単純にMITREの脆弱性データベース(CWE/CVEの事)の傾向をTop 10のWebアプリ脆弱性問題としてまとめている、としています。この為、特定の脆弱性対策ではない入力バリデーションは重要なセキュリティ対策です。OWASPの文書でも省略する理由を解説する部分で”重要な対策”として記載しています。
Why we have dropped some important issues
Unvalidated input is a major challenge for any development team, and is at the root of many application security problems. In fact, many of the other items in the list recommend validating input as a part of the solution. We still strongly recommend creating a centralized input validation mechanism as a part of your web applications.
我々は幾つかの重要な課題を省略しました。
入力バリデーションされていなデータは「沢山のアプリケーションセキュリティ問題の原因」とし「個別対策の中でも入力バリデーションを解決策として推奨している」「Webアプリの一部として集中した入力バリデーションメカニズムの作成することを強く勧める」と書いてあります。
要するに「重要なWebアプリのセキュリティ問題の原因は”バリデーションしていない入力”であることが多いが省略しました。重要であることは変わりないから勘違いしないように」という事です。
まとめ
OWASPでも入力バリデーションは重要なセキュリティ対策であり、セキュリティ対策ではないと考えていることは有り得ません。アプリケーション仕様だからセキュリティ対策ではない、という出鱈目な事も主張していません。
防御的プログラミング(セキュアプログラミング)は現在では「プログラミング原則」と考えられています。普通の常識的/論理的なソフトウェアセキュリティを理解していれば、「入力バリデーションがセキュリティ対策ではない」などとあり得ない誤解をするとは無いはずです。
明確な注意書きまでしてあります。OWASP TOP 10を良く知っているWebセキュリティの専門家なら間違えることはないはずです。細かい部分まで読まない方は勘違いするかも知れませんが、間違っているので出鱈目を主張するのはやめましょう。このような勘違いは「OWASPはソフトウェアセキュリティに対して無知である 」と言っているに等しいです。OWASPに対しても失礼です。
Leave a Comment