LAC WATCH

セキュリティとITの最新情報

RSS

ラックピープル | 

OWASP Proactive Control、安全なWebシステム開発へのガイドライン(その2)

前回に引き続き、OWASP Proactive Controls2016について紹介していきます。
OWASP Proactive Controlsは、OWASP Top10で示されている脆弱性を作り込まないようにするために、開発プロジェクトでどのように取り組めば良いかを示した「事前の対策ガイドライン」です。
今回は「C2:クエリーのパラメータ化」「C3:データのエンコーディング」
「C4:すべての入力値を検証する」「C5:アイデンティティと認証管理の実装」
「C6:適切なアクセス制御の実装」
について簡単にご紹介します。

Proactive Controls 2016

OWASP-ProactiveControl2016-Japanese#20160227OWASPDAY by OWASP Japanより)

C2:クエリーのパラメータ化」では、SQLインジェクション対策について記述しています。Proactive ControlsではSQLインジェクションを防ぐために「クエリーのパラメータ化」を提唱しています。これはIPAの「安全なウェブサイトの作り方」などのドキュメントでは「プレースホルダ方式」と呼ばれるものと一緒です。ちなみに、OWASP Proactive Controlsには、補足説明用のプレゼンテーションがあるのですが、ここではSQLインジェクションの「怖さ?」を説明するために、次図のようなマンガが使われています。

SQLインジェクションの「怖さ?」を説明するマンガ

https://www.owasp.org/images/3/33/OWASP_Top_Ten_Proactive_Controls_v2.pptxより)

C3:データのエンコーディング」では、XSS対策について記述しています。今回の改訂ではXSSの類型として「持続型XSS」「反射型XSS」に加え「DOM Based XSS」が加わりました。DOM Based XSSではXSS攻撃はHTMLコードではなくDOMに対する操作として行われます。JavaScriptが悪意のあるコードを実行してしまうのです。XSS攻撃に対する対策は出力時に適切なエンコーディングを行うことです。モバイルシステムの開発でWebViewを使う場合も注意が必要です。

C4:すべての入力値を検証する」では、Webシステムにおける入力チェックの考え方について記述しています。入力チェックにおける「ブラックリスト方式」「ホワイトリスト方式」の解説、入力チェックで良く使われる「正規表現」について例を用いて解説しています。また、Proactive Controlsではセキュリティを入力チェックだけに依存するのではなく、入力値が実際に使われる場所で担保すべきだ、という考え方を示しています。

C5:アイデンティティと認証管理の実装」では、認証について記述しています。認証とは「本人確認」のことです。ここでは多要素認証、モバイルアプリケーションにおける認証、安全なパスワードの保存、パスワードリカバリー、ハッシュ化など、Webシステムで認証に関する機能を実装する際に検討すべき事項をリストアップしています。

C6:適切なアクセス制御の実装」では、認可(アクセス制御)について記述しています。ここではアクセス制御を設計・実装する際に陥りやすい点(いわゆる、アンチパターン)について解説し、アクセス制御を記述するレイヤーをビジネスロジックを記述するレイヤーと分離することを提唱しています。

このように、OWASP Proactive Controlsでは、安全なWebシステムを開発していく上でのひとつのアプローチ方法を示しています。具体的な設計方式や実装方針については、OWASP Cheat Sheetシリーズなどが紹介されています。
Proactive Controlsは全部で30ページ程度の簡易なドキュメントですので、是非全文を一読いただき、詳しく学びたい部分はCheat Sheetなどを参照していただければと思います。

この記事は役に立ちましたか?

はい いいえ