2017-09-25 32 views
1

HP Fortify SCAがプロブレムの解決策を見つけ出すのに問題があります。それは報告 問題は、次のとおりです。HP Fortify偽陽性のハードコーディングされたパスワード - Java

ハードコードパスワードが が簡単に改善することができないような方法でシステムのセキュリティを損なう可能性があります。

コードは次のようになります。

@Configuration 
public class MySpringConfig { 

    private final String userName; 

    private final String password; 

    @Autowired 
    public MySpringConfig(
      @Value("${my.userName}") final String userName, 
      @Value("${my.password}") final String password) { 
     this.host = host; 
     this.userName = userName; 
     this.password = password; 
    } 
    ... 
} 

Fortifyはこれがハードコードされたパスワードであると思うだろう、なぜ私が理解することはできません。パスワードはコンストラクタへのパラメータとして渡されており、それは春@Valueから来ています。

私は@FortifyNotPasswordを使ってこの偽陽性を止めると考えましたが、実際はパスワードです。私はむしろ、このフィールドの値を記録するような実際の問題を逃す可能性があるので、その注釈を使用しないでください。

答えて

1

Fortifyは、ツールが人間のようにスマートではないため、これはハードコードされたパスワードだと考えています!これは、コードレビューアとして遭遇する最も頻繁な誤検出の1つです。

Fortifyは、人間のコード監査員なしで自動で使用しないでください。 Fortifyは、コードレビュー担当者がコードレビュー担当者を置き換えるのではなく、興味深いものを見るのを助けるためのものです。コードレビュー担当者は、手動でこの問題を抑制または除外する必要があります。

より自動化されたソリューションが必要な場合、Fortifyはあまりにも多くの誤検出を引き起こすため、適切なツールではありません。

1

ええ、それは賢明ではないことは事実です。苦情は「パスワード」が文字列@Value("${my.password}")に現れたという事実に結びついていたことが判明しました。単に@Value("${my.value}")に変更するだけで、エラーはなくなりました。

フィールドに格納されているという事実との関係もあります。最後に、私はもっとこのようなクラスを再配置し、違反が去っていきました:

@Configuration 
public class MySpringConfig { 

    @Bean 
    public MyBean myBean(
      @Value("${my.userName}") final String userName, 
      @Value("${my.password}") final String password) { 
     return new MyBeanThatNeedsUserCredentials(userName, password); 
    } 

} 
0

Fortifyには異なる解析器を持っています。この場合、セマンティックアナライザーが使用されたように見えます。これは単純に単語 "パスワード"のgrepです。したがって、このケースを偽陽性と評価することができます。セマンティックアナライザは非常にノイズが多い傾向があります。

AuditWorkbenchを使用する場合は、「概要」タブ(検索結果をクリックした後)で、どのエンジンが問題を見つけるのに使用されているかを確認できます。それはパネルの右側にあります。

関連する問題