2012-02-24 7 views
0

いくつかの非常に大きなプロジェクトでFortify(2.6.5)を実行していますが、本当に必要ないくつかの重要な問題にはフラグを立てていません。あたかもFortifyが「パスワード」のような名前の変数に対してパターンマッチングを行って、データフロー解析を実行しているかのようです。これは素晴らしいことであり、プライバシーの侵害がそのような機密データで発生しないようにするのに役立ちます(デバッグ時にロガーに書き込むなど)。Fortify 360 - 'パスワード'エイリアスを追加していますか?

これはすべてうまくいきますが、パスワードに「資格情報」などの他の変数名を使用してシステムに渡す場合や、他の機密情報を同じレベルの厳密さで扱う必要がある場合がありますFortifyは文字列 'password'を含む変数で処理するので、

Fortifyが「パスワード」と同じように動作するように、このようなキーワードのリストを追加/設定する簡単な方法はありますか?

答えて

1

"簡単"は、カスタムルールでのあなたの快適度によります。 CharacterizationRuleを使用して「資格情報」という名前の変数に+ PRIVATE taintフラグ(プライバシー違反ルールに関連付けられている汚れ)を追加することは間違いありません。ここで

はあなたが始めるために必要があります構造的一致ルールの小さな例の抜粋です:

  VariableAccess va: va.variable.name matches "(?i).*credential.*" and 
           not va in [AssignmentStatement: lhs.location is va] 
           and 
           (va.variable.type.name == "java.lang.String" or 
           va.variable.type.name == "java.lang.StringBuffer" or 
           va.variable.type.name matches "byte.*" or 
           va.variable.type.name matches "char.*") 
+0

ありがとう! Fortifyがどのようなパスワードであるかを識別する方法と、そうでないものがどれだけシンプルであるかを考えれば、簡単な解決策ではありませんが(すべてのコードを実行してFortifyアノテーションをどこにでも追加する必要はありません)行う。私はそれにショットを与えるでしょう... –

0

AWBカスタムルールウィザードを使用してこれを行うための簡単な方法があります。ルールのタイプリストから、「Characterization Rule」を選択し、「Private sourceの特性」を選択します。

変数「資格情報」は、秘密または私的なデータのソースになります。ウィザードに従うだけで、指定した正規表現を持つルールが作成されます。式は大文字と小文字を区別し、Java正規表現の方言に従います。http://docs.oracle.com/javase/1.4.2/docs/api/java/util/regex/Pattern.html

+0

この機能はバージョン2.6.5で利用できないかもしれません。現在のバージョン3.40では確かに利用可能です。 –

関連する問題