CS.UFR
解放されたリソースの使用
C# にはガベージコレクターがあるため、多くのメモリの指摘からほとんど保護されます。ただし、管理されていないリソースを使用するオブジェクト (たとえば、'IDisposable' オブジェクト) では、解放後の使用のバグが発生しやすい可能性がまだあります。CS.UFR チェッカーは、破棄されたリソースの使用にフラグを立てます。
脆弱性とリスク
破棄された後に 'IDisposable' オブジェクトにアクセスすると、例外がスローされるため、処理されない場合は、プログラムが途中で終了する可能性があります。
脆弱コード例
コピー
using System.IO;
namespace Example
{
class Program
{
static void Main(string[] args)
{
BinaryWriter bw = new BinaryWriter(new FileStream("aaa.txt", FileMode.Open)); // Or, any other IDisposable
bw.Dispose();
bw.Write("bbb"); //@ CS.UFR.廃棄された後にリソースにアクセスしています。
}
}
}
この例で Klocwork は、コードが破棄された後にリソースにアクセスする際に 12 行目で CS.UFR の欠陥を報告します。
修正コード例
コピー
using System.IO;
namespace Example
{
class Program
{
static void Main(string[] args)
{
BinaryWriter bw = new BinaryWriter(new FileStream("aaa.txt", FileMode.Open)); // Or, any other IDisposable
bw.Write("bbb"); //@no CS.UFR.
bw.Dispose();
}
}
}
外部参考資料
セキュリティトレーニング
Secure Code Warrior が提供しているアプリケーションセキュリティトレーニング教材。