セキュリティの脆弱性についてcheckmarxツールに対してJavaアプリを実行しましたが、文字配列を使用するパスワードフィールドに対して、常に問題が発生しています-ヒープ検査。これ以上は発生しません。パスワードフィールドの宣言を指摘するだけではありません。
private char[] passwordLength;
誰かがここで私を助けてくれますか、これを解決するためにこれ以上何を探すことができますか?
ヒープ検査は、暗号化されていないマシンメモリに保存されている機密情報に関するものであるため、攻撃者がメモリダンプを実行すると(たとえば、Heartbleedバグ)、その情報が危険にさらされます。したがって、その情報を保持するだけで脆弱になります。
Stringやchar配列の代わりにGuardedStringオブジェクトなどの安全な方法でこのような機密情報を保存するか、暗号化して元の情報をすぐにスクラブすることで、これを軽減できます。
詳細については、 this CWE (C/C++について説明していますが、Javaとの関連性は同じです)を参照してください。
私見では、SealedObject
を使用して、暗号化された資格情報データをJVMメモリ内に格納する必要があります。
次のパッケージが必要です。
だからあなたは作成します
実用的な例は次の場所にあります: https://github.com/Daimler/sechub/blob/develop/sechub-adapter/src/main/Java/com/daimler/sechub/adapter/CryptoAccess.Java
「char []の値を上書きする方が安全ですか?」という質問については、 この回答 onsecurity.stackexchange.comを参照してください。文字列"。
TLDR:あなたはそれについて多くをすることはできません。
PS:姉妹のstackexchangeサイトです。ここでは答えをコピーしていません(また、長すぎます)。モデレーターが同意しない場合は、自由にコピーして貼り付けてください。