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 应替代为更安全的宏或可确保使用较低权限的代码。