SV.PASSWD.HC
このエラーは、パスワードを受け付けるメソッドまたは暗号化を実行するメソッドにハードコードされた文字列またはハードコードされた文字列の一部が到達した場合に発生します。
脆弱性とリスク
ソースコードは、機密情報のストレージには適しません。まず、別の開発者が機密情報を読み取ることができます。文字列パスワードは Java バイトコードから容易に抽出できるため、バイトコードを持つ人物が文字列パスワードを読み取ることができます。また、ソフトウェアを更新しない限り、変更できません。ハードコードされた文字列がダイジェストの一部として使用されている場合、攻撃者にキーの作成方法の手がかりを与える可能性があり、その結果、攻撃者がキー (セッションキーなど) の推測を試みる可能性があります。
Klocwork セキュリティ脆弱性 (SV) チェッカーは、潜在的に危険なデータを生成する呼び出しを特定します。このような呼び出しは安全でないソースと考えられます。ユーザーは攻撃者になる可能性があり、ヒューマンエラーを取り込む可能性があるため、安全でないソースはユーザーが指定した任意のデータである可能性があります。
軽減と防止
パスワードは、動的に入力し、不可逆のダイジェスト (MD5 など) に保存する必要があります。メソッドがパスワードをプレーンテキストで要求する場合は、暗号化したパスワードを構成ファイルに保存します。
例 1
public static void main(String[] args) throws Exception {
Properties info = new Properties();
info.setProperty("user", "root");
info.setProperty("password", "^6nR$%_");
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3307", info);
try {
//...
} finally {
connection.close();
}
}
SV.PASSWD.HC が 16 行目に対して報告されています。文字列 ' ^6nR$%_ ' がパスワードまたはパスワードの一部として使用されています:ソースコードは機密情報のストレージには適しません。攻撃者がこの文字列を使用して、別の認証チャンネルを割り出したり、セッションキーの構成方法を推測する可能性があります。
外部参考資料
セキュリティトレーニング
Secure Code Warrior が提供しているアプリケーションセキュリティトレーニング教材。
拡張機能
このチェッカーは、Klocwork knowledge base (ナレッジベース) を利用して拡張できます。詳細については、Java 解析のチューニングを参照してください。