CXX.SV.PWD.PLAIN.LENGTH
15 文字未満の長さでパスワードを設定しようとしている
アプリケーションが 15 文字未満のプレーンテキストパスワードを設定しようとするときに、Klocwork は CXX.SV.PWD.PLAIN.LENGTH の欠陥を報告します。
脆弱性とリスク
認証プロセス中に、ユーザーが 15 文字未満のパスワードを提示すると、悪意のある攻撃者は、ブルートフォース攻撃を使用することで、そのデータを傍受し、パスワードを推測する可能性があります。
軽減と防止
パスワードの長さを 15 文字以上に増やすことで、強力なパスワードを使用してください。
脆弱コード例
コピー
#include <QtSql/QSqlDatabase>
void Database::connect(Ui::MainWindow *ui){
/* Set connections */
this->qSqlDatabase.setUserName("mojito");
this->qSqlDatabase.setPassword("J0a1m8");
}
Klocwork は、5 行目で CXX.SV.PWD.PLAIN.LENGTH の欠陥を報告し、「15 文字未満の長さでパスワードを設定しようとしています。長さを 15 文字以上に増やすことを検討してください」を示します。Database::connect メソッドでは、認証中に、プレーンな文字列 "J0a1m8" が setPassword API に直接渡されています。パスワード "J0a1m8" は 15 文字未満です。
修正コード例
コピー
#include <QtSql/QSqlDatabase>
void Database::connect(Ui::MainWindow *ui){
/* Set connections */
QString pwd = "J0a1m8welCome6469";
this->qSqlDatabase.setUserName("mojito");
this->qSqlDatabase.setPassword(pwd);
}
setPassword API に提示されるパスワードの長さが 15 文字以上であるため、Klocwork は CXX.SV.PWD.PLAIN.LENGTH の欠陥を報告しなくなります。
外部参考資料
セキュリティトレーニング
Secure Code Warrior が提供しているアプリケーションセキュリティトレーニング教材。
- 「Sensitive Data Exposure (機密データの漏えい)」トレーニングビデオ - トレーニングサンプルを使用して自分のスキルをテストできます
- 「Insufficiently Protected Credentials (十分に保護されていない資格情報)」トレーニングビデオ - トレーニングサンプルを使用して自分のスキルをテストできます
- 「Improper Authentication (不適切な認証)」トレーニングビデオ - トレーニングサンプルを使用して自分のスキルをテストできます
- 「Sensitive Data Exposure (機密データの漏えい)」トレーニングビデオ - トレーニングサンプルを使用して自分のスキルをテストできます