

技術推進事業部ビジネス基盤第3グループ
電話:03-3458-8680
E-mail: security-biz@in.dcs.co.jp
ソースコード診断サービスは、セキュリティ上問題となるプログラムの組み方、アプリケーション品質上の問題点の検出に「FORTIFY 360 SCA」を使用するサービスです。
診断する検査項目(検査カテゴリー)の数は、診断対象アプリケーションのプログラム言語毎に異なり、例えばJavaのWebアプリケーション(J2EEアプリケーション)であれば、200項目以上に及びます。また、言語仕様だけではなく、主要なサードパーティライブラリについても解析し検査することが可能です。
5つの分析エンジンを組み合わせ、多角的な視点で脆弱性を検出します。
| 分析エンジン | 検査方法 |
|---|---|
| データフローエンジン (データフローのチェック) |
データの入力(例:JavaのgetParameter)行から、そのデータの出力(例:javaのexcuteQuery)行までを追跡し、危険なデータ(例:シングルコーテーション等)が無害化されるか検査します。 このエンジンが検出する主な脆弱性カテゴリは「SQLインジェクション」や「xpathインジェクション」、「クロスサイトスクリプティング」等の注入系脆弱性カテゴリです。 |
| コントロールフローエンジン (制御フローのチェック) |
コントロール(例:データベースコントロールオブジェクトやファイルハンドラ等)に着目し、オブジェクトが生成されてから破棄されるまでのフローを追跡し、危険な使用方法がないか検査します。 このエンジンが検出する主な脆弱性カテゴリは「リソースの開放漏れ」などです。 |
| セマンテックエンジン (文法のチェック) |
プロシージャ内レベルにおける関数やAPIの潜在的に危険な利用方法をパターンマッチングにて検出します。 このエンジンが発見する主な脆弱性カテゴリは「バッファオバーフロー」や「CSRF」などで、例えばC言語のfgets関数やHTML上の入力パラメータを検出します。(脆弱性となりうるかどうか別途、目視の判断が必要となる情報レベルの問題が多く含まれます。) |
| ストラクチャルエンジン (構造のチェック) |
関数や変数、クラスの宣言をその階層構造に着目して追跡し、プログラムの構造や定義内の潜在的に危険な欠陥を検出します。 このエンジンが検出する主な脆弱性カテゴリは「シングルトンメンバーフィールド」等、メモリの競合や排他に関する問題が多く含まれます。 |
| コンフィグレーションエンジン (XMLファイルなど 設定ファイルのチェック) |
アプリケーションの設定ファイルを検査し、その誤り、弱点、およびポリシー違反を検出します。 このエンジンが検出する主な脆弱性カテゴリは「コネクションタイムアウトの未設定」など設定ファイル上の問題です。 |
不正なデータの注入等、攻撃に対する対策を施したコーディングであるか、ソースコードの流れを追跡し検査します。
| ・ | SQLインジェクション |
| ・ | xpathインジェクション |
| ・ | OSコマンドインジェクション |
| ・ | LDAP等のインジェクション |
| ・ | クロスサイトスクリプティング |
| ・ | CSRF |
| ・ | ディレクトリトラバーサル |
| ・ | リモートファイルインクルージョン |
| ・ | HTTPスプリティング |
アプリケーションでセッション管理用IDを生成する場合、生成方式にユニーク性、ランダム性の問題がないか等、セッションに関する問題がないか検査します。
| ・ | セッションの管理方式 |
| ・ | セッションの有効期限 |
| ・ | セッション固定攻撃の対策 |
| ・ | セッションハイジャック対策 |
| ・ | ランダムID等の生成方式のチェック |
システム情報やエラー情報などの漏洩に繋がるコーディングの検査
| ・ | アプリケーションエラー時の詳細情報の漏洩 |
| ・ | HTMLコメント |
| ・ | DBアクセス時のアクセス制御の不備 |
デッドロックの発生やリソースの開放漏れ等、アプリケーションの通常の利用でも誤動作やシステム停止、パフォーマンス劣化に繋がる信頼性・可用性の阻害要因となるコーディングがないか検査します。
| ・ | メモリ競合(レースコンディション) |
| ・ | システムリソースの開放漏れ |
| ・ | 実行時エラーの原因となるコーディング |
| ・ | NULL参照 |
| ・ | エラー制御違反 |
プログラムの再利用性といた保守性に関する問題やソースの可読性に関するコーディングの問題点がないか検査します。
| ・ | 言語仕様違反 |
| ・ | コンポーネント、ライブラリ等の公開仕様違反 |
| ・ | 処理されることのない無駄なコード |
| ・ | SUN等のネーミングルール違反 |
| ・ | 最適でないアクセス修飾子スコープ |