SV.SIP.VAR

危険な関数についての安全でないマクロの使用

パラメーターとして危険なマクロを使用する可能性がある Microsoft Windows 関数がいくつかあります。 そのため、悪意のあるユーザーがレジストリにアクセスし、任意のコマンドを実行することができます。CreateService では、パラメーターが SERVICE_INTERACTIVE_PROCESS に設定されることがあります。 そのため、悪意のあるユーザーがサービスと対話し、高権限モードで任意のコマンドを実行できる可能性があります。

SV.SIP.VAR チェッカーは、CreateService 関数が SERVICE_INTERACTIVE_PROCESS パラメーターを指定するインスタンスを探します。

脆弱性とリスク

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

軽減と防止

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

脆弱コード例

コピー
 SC_HANDLE foo(SC_HANDLE hSCManager, LPCTSTR lpServiceName, LPCTSTR lpDisplayName,
               DWORD dwDesiredAccess, DWORD dwStartType, DWORD dwErrorControl, 
               LPCTSTR lpBinaryPathName, LPCTSTR lpLoadOrderGroup, LPDWORD lpdwTagId, 
               LPCTSTR lpDependencies, LPCTSTR lpServiceStartName, LPCTSTR lpPassword)
 {
    DWORD dwServiceType = SERVICE_INTERACTIVE_PROCESS;
    return CreateService(hSCManager, lpServiceName, lpDisplayName,
                         dwDesiredAccess, dwServiceType,
                         dwStartType, dwErrorControl, 
                         lpBinaryPathName, lpLoadOrderGroup, lpdwTagId, 
                         lpDependencies, lpServiceStartName, lpPassword);
 }

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