SV.LPP.VAR

危険な関数の変数での安全でないパラメーターの使用

パラメーターとして危険なマクロを使用する可能性がある Microsoft Windows 関数がいくつかあります。そのため、悪意のあるユーザーがレジストリにアクセスし、任意のコマンドを実行することができます。RegCreateKeyEx、SHRegCreateUSKey、または RegOpenKeyEx は、望ましいアクセスパラメーターを KEY_ALL_ACCESS に設定することができ、そのために悪意のあるユーザーがレジストリで属性を変更することができます。キーに DLL への参照が含まれている場合、そのような参照を変更すると、任意のコマンドを実行できるようになります。

SV.LPP.VAR チェッカーは、RegCreateKeyEx、SHRegCreateUSKey、または RegOpenKeyEx アクセスパラメーターが KEY_ALL_ACCESS に設定される可能性がある変数であるインスタンスを探します。

脆弱性とリスク

all-access マクロを使用すると、リソースにアクセスするためのパーミッションを不適切に失うことになります。この行為により、攻撃者が権限を取得し、機密情報にアクセスし、おそらくはコマンドを実行できるようになるため、ソフトウェアのセキュリティが低下する可能性があります。リソースアクセスでは、ジョブの実行に必要な最低レベルの権限を常に使用する必要があります。

軽減と防止

フラグが立てられたこれらの欠陥をレビューし、特定されたパラメーターをより低い権限が確実に強制使用されるようにする安全なマクロまたはコードに置換する必要があります。

脆弱コード例 1

コピー
    LONG foo(LPCTSTR lpSubKey, DWORD ulOptions, PHKEY phkResult) {
        REGSAM samDesired = KEY_ALL_ACCESS;
        return RegOpenKeyEx(HKEY_USERS, lpSubKey, ulOptions, samDesired, phkResult);
    }

Klocwork は 3 行目で指摘レポートを生成し、関数 RegOpenKeyEx が、望ましいアクセスパラメーターとしてマクロ KEY_ALL_ACCESS を使用していると指摘します。この緩いアクセスパーミッションマクロを使用すると、コードに脆弱性が生じるため、攻撃者がソフトウェアのセキュリティを低下させる可能性があります。この指摘をレビューし、KEY_ALL_ACCESS に設定される可能性がある変数をより低い権限の使用を確実に実行する安全なマクロまたはコードに置換する必要があります。