
VCG (VisualCodeGrepper)
現在のバージョン: 2.3.2
====================================================================================
目次:
VCG は、C/C++、Java、C#、VB、PL/SQL、PHP、COBOL を扱う自動コードセキュリティレビューツールです。コードセキュリティレビューを行うすべての人にとって、特に時間が限られている場合に役立つことを願ったいくつかの機能を備えています:
一部のツールが返すような大量の誤検知を返さず、バッファオーバーフローや符号付き/符号なし比較をインテリジェントに検索して特定するものを目指して作成しました。
新機能: 1) GUI の変更により、対象言語の選択がメニューではなくドロップダウンリストから行えるようになりました(V2.3.1 と同様)。 2) ベータ機能として、R Script のスキャンが含まれるようになりました(V2.3.1 と同様)。 3) さまざまな問題に対処し、複数のアプリケーションインスタンスの起動を再び許可するための軽微なバグ修正。
入力ファイル/コードベース:
コードをスキャンする前に、正しい言語が選択されていることを確認してください。VCG は選択された言語に関連する問題のみをテストし、関連するファイルタイプのみをスキャンします。言語は設定メニューまたはオプションダイアログで選択できます。 File=>New Target... を使用して、スキャンするコードを含むディレクトリを選択してください。 VCG は指定された拡張子を持つすべてのファイルを読み込みます。
デフォルトは以下のとおりですが、オプションダイアログを使用して変更できます: C/C++: .c .h .cpp .hpp Java: .java .jsp web.xml config.xml (xml ファイルは Struts などによる入力検証をチェックするために含まれています) PL/SQL: .pls .sql .pkb .pks C#: .cs .asp .aspx web.config (web.config ファイルは入力検証、デバッグ設定などをチェックするために含まれています) VB: .vb .asp .aspx web.config (web.config ファイルは入力検証、デバッグ設定などをチェックするために含まれています) PHP: .php php.ini (php.ini ファイルは register_globals などの不正な設定をチェックするために含まれています) COBOL: .cob .cbl .clt .cl2 .cics R: .r
オプションと設定:
ファイルタイプ - コードタイプごとにVCGがスキャンするファイルの種類を変更するために使用します。ディレクトリ内のすべてのファイルをスキャンするには、リストに .* を追加するか、すべてのタイプを削除して空の文字列を送信します。 設定ファイル - 言語ごとに設定ファイルを指定します。これには、リスクがあると見なされ報告が必要な関数やコード断片のリストが含まれます。この機能は本質的に、コードスキャンの一部として実行されるより複雑な操作の上に、追加のチェック層を加えるものです。 重大度 - VCGは、特定の重大度レベル以上のエラーのみを報告するように設定できます。例えば、「Medium」を選択すると、レポートにはMedium、High、Criticalのみが含まれます。 COBOL設定 - 開始列を指定する必要があります。つまり、行番号の後の最初の列です。これは通常、行番号のないリストでは1、行番号を含むリストでは7になります。リスト内のコード行/コメント行が異なる列から始まる場合は、別の設定が必要になることがあります。z/OS設定は、CICS APIの安全な使用に関するチェックなどを含めるために使用できます。 OWASP設定(Javaのみ) - 選択すると、OWASPのセキュアコーディングページに記載されているJavaプログラミングのOWASPベストプラクティスに対する2つの違反が識別されます。ネストされたクラスと非finalのpublicクラスが報告されますが、これらの違反はリスクがそれほど高くなくても多数発生する可能性が高いため、これらのスキャンのいずれかをオフにするオプションが提供されています。 出力ファイル - 選択した場合、ASCII出力がこのファイルに書き込まれます。 ベータ機能 - オプション -> ベータ機能の該当するチェックボックスをクリックして、ベータ機能を使用するかどうかを選択します。現在利用可能なベータ機能は、Cにおける符号付き/符号なし比較の位置特定(非常に信頼性が低い)と、Rのスキャン(ある程度良好に動作することを確認済み - 次回リリースでの正式採用に近い状態)です。
スキャン:
スキャンは3つの方法で実行できます:
設定ファイル:
設定ファイルは、VCGがスキャンする6つの言語それぞれに存在します。これらは、各言語の組み込みの複雑なスキャンを補完する追加のスキャン層を提供します。 設定ファイルの内容は、スキャン対象の関数/コード断片のリストと、結果に表示される関連する説明で構成されています。説明には、角括弧で囲まれたオプションの重大度設定が含まれ、関数名とは「=>」で区切られ、次の形式になります: 関数名[=>][[N]][説明] (ここでNは1(Critical)から3(Medium)の重大度評価です(オプションで0は「normal」))
例: strcat=>[3]String concatenation function which facilitates buffer overflow conditions. Appears in Microsoft's banned function list.
出力:
スキャンが完了すると、Visual Code Breakdownが表示されます。
結果は、検出された順序で結果ペインに書き込まれます。結果は次の形式になります: SEVERITY: Code issue 行番号 - ファイル名 説明 [コード断片]
問題のタイトルには、明確にするために次の色コードが使用されます: Critical - マゼンタ High - 赤 Medium - オレンジ Standard/Normal - 黄/セピア Low - 灰青 Potential Issue/Best Practice - 緑 壊れたコードを示す疑わしいコメント - 濃紺
結果は要約テーブルにも省略形式で書き込まれ、列見出しをクリックすることで並べ替えることができます。結果テーブルの項目をダブルクリックすると、そのファイルが関連付けられたアプリケーションで読み込まれます。
これらの結果は、File=>Save Results... をクリックすることで ASCII テキストとして保存できます。 結果は、File=>Export Results as XML... をクリックすることで XML として保存できます。 重大度でフィルタリングされた結果セットは、Results ウィンドウ内で右クリックし、Export Filtered XML Results... をクリックすることで XML として保存できます。 結果は、File=>Export Results as CSV... をクリックすることで CSV ファイルに保存できます。
コマンドラインパラメータ:
Usage: VisualCodeGrepper [Options]
STARTUP OPTIONS: (GUI の希望する開始ポイントを設定します。コンソールモードを使用する場合、これらのオプションはスキャン対象を設定します。) -t, --target <Filename|DirectoryName>: 対象ファイルまたはディレクトリを設定します。このオプションは、対象を GUI に即座に読み込む場合、またはコンソールモードの対象を指定する場合に使用します。 -l, --language <CPP|PLSQL|JAVA|CS|VB|PHP|COBOL|R>: 対象言語を設定します (デフォルトは C/C++)。 -e, --extensions <ext1|ext2|ext3>: 解析するファイル拡張子を設定します (言語固有のデフォルトについては ReadMe または Options 画面を参照してください)。 -i, --import : XML/CSV の結果を GUI にインポートします。
OUTPUT OPTIONS: (結果を指定された形式のファイルに自動的にエクスポートします。後で結果を GUI に再読み込みしたい場合は、XML または CSV 出力を使用してください。) -x, --export : 結果を XML ファイルに自動的にエクスポートします。 -f, --csv-export : 結果を CSV ファイルに自動的にエクスポートします。 -r, --results : 結果をフラットテキストファイルに自動的にエクスポートします。
CONSOLE OPTIONS: -c, --console: アプリケーションをコンソールのみで実行します (GUI を非表示にします)。 -v, --verbose: コンソール出力を詳細モードに設定します。 -h, --help: ヘルプを表示します。
====================================================================================