セキュアコードチェック:独自の静的解析ルールを構築

dotTESTの脆弱性の検証で使用する静的解析ルールは、新規に作成したり、パラメーターを変更したりして、カスタマイズすることが可能です。このカスタマイズ機能を使用して、自社のセキュリティポリシーのルールを作成すれば、これまで目視でチェックしていたセキュリティポリシーの推進をツールで実施することが可能になり、ポリシー遵守の徹底と目視でのチェック工数の削減を実現できます。

ルールの新規作成機能で社内のセキュリティポリシールールを作成

dotTESTには、静的解析ルール作成ツール『RuleWizard』が搭載されています。『RuleWizard』では、ノードやエレメントを追加したり連結したりして、グラフィカルに静的解析ルールを作成することができます。また、簡単なルールであれば、サンプルコードからルールを自動生成することも可能です。

RuleWizard で作成したルールの例1
dotTESTのRuleWizard で作成したルールの例1
(System.Console 'Write()' または 'WriteLine()' を使用しない)

'System.Console.WriteLine()' または 'System.Console.Write()' をデバッグ目的で使用しないようにします。


RuleWizard で作成したルールの例2
dotTESTのRuleWizard で作成したルールの例2
(RSA/DSA KeySize プロパティを変更してはならない)

RuleWizard で作成したルールの例2 (RSA/DSA KeySize プロパティを変更してはならない)
このルールは、RSA および DSA のキー サイズを変更しようとしている場合に違反をレポートします。
System.Security.Cryptography.RSACryptoServiceProvider および DSACryptoServiceProviderクラスは、キー サイズが変更された後にキーは再生成されません。

ルールのパラメーター変更でチェック対象アプリケーション用にカスタマイズ

ルールのパラメーター設定画面1
dotTESTのルールのパラメータ設定画面1
(XSS(クロスサイトスクリプティング)脆弱性から防御する)

このルールは、汚染されている可能性のあるデータが、直接的またはWeb コントロール(System.Web.UI.WebControls.Label または System.Web.UI.WebControls.Literal など) を通じてHTTP レスポンスに書き込まれる場合に違反をレポートします。
汚染されているとみなすデータやそのデータを受け取るメソッドは、デフォルト設定に加えてユーザの設定を加えることも可能です


ルールのパラメーター設定画面2
ルールのパラメータ設定画面2
(finally ブロックでリソースをクローズする)

このルールは、finally ブロックの中でリソースがクローズされていない場合に違反をレポートします。データベースをクローズして解放するのを忘れると、システムリソースが使い尽くされ、プログラムがクラッシュしたり、遅くなったりする可能性があります。

ルールセットの作成で脆弱性検証レベルを安定化

dotTESTに含まれるルールや独自に作成したルールの中からルールを選択し、ユーザー独自のルールセットとして保存できます。また、dotTESTに含まれているOWASP Top 10PCI DSSSecurity Assessmentなどのセキュリティに関連したルールセットをベースにして、ルールを加えたり、外したりして、独自のルールセットを作成することも可能です。ルールセットを作成することにより、脆弱性検証のレベルを一定に保つことが可能になります。

ルールセットをチーム内で共有し、チーム内の脆弱性検証レベルを統一化

TCM(Team Comfiguration Manager)※1というテスト設定やテスト結果を開発チームメンバーで共有するための管理サーバーを介して、ルールセットや使用するルールなどの設定を開発チームメンバーに自動的に配布することが可能です。チーム内のすべてのメンバーが同一の設定を使用して検証を実施でき、、検証のレベルを統一できます。また、ルールやルールセットを修正する際にも、修正したものをTCMにアップロードするだけで、開発チームメンバー全員の設定に反映させることが可能です。さらに、テスト結果のアップロードも自動化できるので、各開発メンバーがナイトリービルドテスト※2の結果をdotTESTにダウンロードして、確認作業に利用できます。dotTESTをインストールしていないマシンで参照する場合には、Webブラウザーから参照することができるので、管理者は検証の進捗状況や検証結果をいつでも確認できます。

検証漏れを防ぐナイトリービルドテスト

個々の開発チームメンバーが構成管理ツールにチェックインしたプログラム、または、任意の場所に保存されたプログラムに対して、バッチで検証を実行することが可能です。開発中のプログラムに対して、定期的に脆弱性をバッチで検証することにより、漏れのない検証が行えます。また、フロー解析(バグ探偵)のように時間を要する検証は、夜間や週末などにバッチで検証すれば、開発メンバーはdotTESTで検証するために時間を取られることもなく、TCMからナイトリービルドテストの結果をダウンロードするところから作業を開始でき、開発メンバーの負担が軽減します。定期的に実施している全プログラムに対するナイトリービルドテストの検証結果は、TCMを介してWebブラウザーでも参照できるので、管理者は脆弱性検証と修正の進捗状況をいつでも確認できるようになります。

※1 TCM(Team Configuration Manager)は、Jtest Server Edition、C++test Server Edition、dotTEST Server Editionに含まれています。
※2 ナイトリービルドテストを実施するためのバッチ処理機能は、dotTEST Server Editionに含まれています。

静的解析・単体テストツール dotTESTに
関するお問い合わせ

  • テクマトリックス株式会社
    東京本社

    システムエンジニアリング事業部
    ソフトウェアエンジニアリング営業部

    03-4405-7853

メールでのお問い合わせ
parasoft-info@techmatrix.co.jp

CONTACT

製品についてやテクマトリックスについてなど、
こちらよりお気軽にお問い合わせいただけます。