RH.LEAK
リソース リーク
RH.LEAK チェッカーは、以前に獲得したが解放していないリソースに関連するすべての記述子が失われるインスタンスを検出します。
脆弱性とリスク
リソースが制限される状況があります。リソースが適切に解放されない場合は、次のアクセスのときにそのリソースを使用できません。
脆弱コード例
コピー
#include <stdio.h>
int foo (const char *name) {
FILE *f = fopen(name, "r");
//...//
if (some_error) return 1;
//...//
fclose(f);
return 0;
}
Klocwork は、リソースが失われる可能性のあることを示すコードの 5 行目にフラグを立てます。
セキュリティトレーニング
Secure Code Warrior が提供しているアプリケーションセキュリティトレーニング教材。
- CERT FIO42-C: 不要になったファイルを閉じる
- CERT MEM00-C: 同一の抽象化レベルで同一のモジュール内でメモリの割り当ておよび解放を行う
- CERT MEM12-C: リソースの使用および解放時にエラーが発生した際に関数を抜ける場合には、goto チェーンの使用を検討する
- CWE-403: 意図しない制御範囲に対するファイル記述子の開示
- CWE-404: 不適切なリソースのシャットダウンまたはリリース
- CWE-772: 有効な生存期間後のリソースの解放の欠落
- 「Sensitive Data Exposure (機密データの漏えい)」トレーニングビデオ - トレーニングサンプルを使用して自分のスキルをテストできます
外部参考資料
- CERT ERR57-CPP: 例外の処理中にリソースをリークしない
- CERT FIO22-C: プロセス生成前にファイルを閉じる
- CERT FIO42-C: 不要になったファイルを閉じる
- CERT FIO51-CPP: 不要になったファイルを閉じる
- CERT MEM00-C: 同一の抽象化レベルで同一のモジュール内でメモリの割り当ておよび解放を行う
- CERT MEM12-C: リソースの使用および解放時にエラーが発生した際に関数を抜ける場合には、goto チェーンの使用を検討する
- CWE-403: 意図しない制御範囲に対するファイル記述子の開示 ('ファイル記述子リーク')
- CWE-404: 不適切なリソースのシャットダウンまたはリリース
- CWE-772: 有効な生存期間後のリソースの解放の欠落