C and C++ Binaries


BADFUNC.PATH.LOADLIBRARY : Use of LoadLibrary

Summary

A use of LoadLibrary() or LoadLibraryEx(), which are vulnerable to path spoofing if the file name argument is not securely specified.

Properties

Class Name Use of LoadLibrary
Significance security
Mnemonic BADFUNC.PATH.LOADLIBRARY
Categories
CWE CWE:676 Use of Potentially Dangerous Function
CERT-C CERT-C:WIN00-C Be specific when dynamically loading libraries
DISA-3r10 DISA-3r10:V-6157 The designer will ensure the application does not contain invalid URL or path references.
BSI BSI:LoadLibrary Use of LoadLibrary
OWASP-2017 OWASP-2017:A9 Using components with known vulnerabilities
OWASP-2021 OWASP-2021:A6 Vulnerable and outdated components
Availability Available for C and C++.
Enabling Checks for this warning class are disabled by default. To enable them, add the following WARNING_FILTER rule to the project configuration file.
WARNING_FILTER += allow class="Use of LoadLibrary"
To enable all BSI-related classes, including all BSI-specific BADFUNC classes, use the bsi configuration preset.

Resolution

HMODULE LoadLibrary(LPCTSTR lpFileName)
HMODULE LoadLibraryEx(
  • LPCTSTR lpFileName,
  • HANDLE hFile,
  • DWORD dwFlags)

When you see a Use of LoadLibrary warning, make sure that the file name argument lpFileName to LoadLibrary() or LoadLibraryEx() is a fully-specified path name from a trusted source. The path name should include the file extension: if the file has no extension, specify the name with a trailing ".".

Additionally, make sure that the use does not occur within DllMain().

Once you are satisfied that these conditions hold, you can change the warning state to Suppressed.

Relevant Configuration File Parameters

This class is implemented using a BAD_FUNCTION_* rule set in the general template configuration file.

The following configuration file parameters affect checks for this warning class.