機密情報の平文保存

機密情報の平文保存

説明

パスワード、トークン、秘密鍵などを暗号化や同等の保護なしでファイルや保存先に書き込むと、保存媒体にアクセスされた際にそのまま漏えいします。

想定される影響

  • 認証情報の窃取、アカウントの乗っ取り、長期トークンの再利用につながる可能性があります。

対処方法

適切な鍵管理を伴う暗号化か、専用の安全な保存先を使ってください。トークンの元の値を再利用せず、照合だけに使う場合は、適切なハッシュによる保存を検討してください。

例

変更前

c
const char *token = getenv("API_TOKEN");
fprintf(file, "%s", token);

変更後

c
const char *token = getenv("API_TOKEN");
char *sealed = encrypt(token);
fprintf(file, "%s", sealed);

変更前は環境変数のトークンをそのままファイルに書き込みます。変更後は保存する前に値を保護します。

encryptは実装を省略した例示用ヘルパーです。検証された認証付き暗号と鍵管理を実装してください。この例のように%sで保存する場合、結果をヌル終端文字列にエンコードする必要があります。環境変数の欠落、暗号化の失敗、ファイル書き込みエラーも処理してください。

参考資料