5.1 【必须】避免路径穿越问题
在进行文件操作时,需要判断外部传入的文件名是否合法,如果文件名中包含 等特殊字符,则会造成路径穿越,导致任意文件的读写。
错误:
正确:
关联漏洞:
5.2 【必须】避免相对路径导致的安全问题(DLL、EXE劫持等问题)
在程序中,使用相对路径可能导致一些安全风险,例如DLL、EXE劫持等问题。
例如以下代码,可能存在劫持问题:
针对DLL劫持的安全编码的规范:
1)调用LoadLibrary,LoadLibraryEx,CreateProcess,ShellExecute等进行模块加载的函数时,指明模块的完整(全)路径,禁止使用相对路径,这样就可避免从其它目录加载DLL。 2)在应用程序的开头调用SetDllDirectory(TEXT(“”)); 从而将当前目录从DLL的搜索列表中删除。结合SetDefaultDllDirectories,AddDllDirectory,RemoveDllDirectory这几个API配合使用,可以有效的规避DLL劫持问题。这些API只能在打了KB2533623补丁的Windows7,2008上使用。
关联漏洞:
5.3 【必须】文件权限控制
在创建文件时,需要根据文件的敏感级别设置不同的访问权限,以防止敏感数据被其他恶意程序读取或写入。
错误:
关联漏洞: