SV.PASSWD.PLAIN
このエラーは、ファイルストレージまたはネットワークから、文字列をパスワードとして使用するメソッドまで、文字列のトレースが可能な場合に発生します。
リリース 2023.2 の時点で、このチェッカーは Jakarta EE をサポートしています。
脆弱性とリスク
ストレージまたはネットワークが外部の暗号化によって保護されていない場合、これらにアクセス可能なユーザーはすべて、パスワードの意味を調べることができます。
Klocwork セキュリティ脆弱性 (SV) チェッカーは、潜在的に危険なデータを生成する呼び出しを特定します。このような呼び出しは安全でないソースと考えられます。ユーザーは攻撃者になる可能性があり、ヒューマンエラーを取り込む可能性があるため、安全でないソースはユーザーが指定した任意のデータである可能性があります。
軽減と防止
パスワードは動的に入力される必要があります。それが不可能な場合には、パスワードを不可逆のダイジェスト (MD5 など) として保存します。メソッドがパスワードをプレーンテキストで要求する場合は、暗号化したパスワードを構成ファイルに保存します。
例 1
public static void main(String[] args) throws Exception {
Properties info = new Properties();
final FileInputStream st = new FileInputStream("config.ini");
info.load(st);
st.close();
DriverManager.getConnection("jdbc:mysql://localhost:3307", info);
}
SV.PASSWD.PLAIN が 18 行目に対して報告されています。 'getConnection' の呼び出しで使用されるパスワードは 'info' から取得されたものです。このパスワードは、外部暗号化 (SSL など) が適用されている以外、プレーンテキストで保存または伝達されています。
外部参考資料
セキュリティトレーニング
Secure Code Warrior が提供しているアプリケーションセキュリティトレーニング教材。
拡張機能
このチェッカーは、Klocwork knowledge base (ナレッジベース) を利用して拡張できます。詳細については、Java 解析のチューニングを参照してください。