CS.INFORMATION_EXPOSURE.ATTR
潜在的なセキュリティ情報の漏洩
このチェッカーは、属性 [SecurityCritical] または [SecuritySafeCritical] で明確にマークされたデータフィールドのコンソールに、意図的でない可能性のあるロギングまたはプリントとしてフラグを立てます。このチェッカーは、エラーレベルまたは重大なエラーレベルでメッセージを報告する、最も広く使用されているロギングメソッドの呼び出しのインスタンス全てにフラグを立てます。
チェッカーはパラメーター化できます。<install>\plugin\csharp ディレクトリに配置されている、チェッカーの説明を記載した XML ファイルを変更することにより、チェッカーが認識するロギングメソッドのリストを変更できます。
脆弱コード例 1
コピー
namespace Program
{
class Program
{
[SecurityCritical]
static int x = 10;
static void Main(string[] args)
{
Console.WriteLine(" Critical X " + x);
}
}
}
Klocwork は 11 行目で CS.INFORMATION_EXPOSURE.ATTR の欠陥を報告します。これは、[SecurityCritical] 属性でマークされたデータ「x」がコンソールに出力され、機密データが意図せずに漏洩される可能性があることを示しています。
脆弱コード例 2
コピー
using System.Security;
namespace Program
{
class Program
{
[SecuritySafeCritical]
static int y = 10;
static void Main(string[] args)
{
logger.Error($"y = {y}");
}
public static log4net.ILog logger; // initialized elsewhere
}
}
Klocwork は 11 行目で CS.INFORMATION_EXPOSURE.ATTR の欠陥を報告します。これは、[SecuritySafeCritical] 属性でマークされたデータがロギング関数に渡され、重要データが意図せずに漏洩される可能性があることを示しています。
関連チェッカー
外部参考資料
セキュリティトレーニング
Secure Code Warrior が提供しているアプリケーションセキュリティトレーニング教材。