
Corrigez votre appareil D-Link affecté par CVE-2024-3272
Êtes-vous l'une des 92 000+ personnes1 coincées avec un NAS D-Link vulnérable à CVE-2024-3272, et sans correctif en vue ?
Cet outil utilise l'exploit lui-même pour corriger un appareil vulnérable.
1 : Voir la divulgation originale dans les références
Dinkleberry exécutera une commande pour remplacer le fichier vulnérable nas_sharing.cgi par une version corrigée - en remplaçant l'appel system() par des NOP.
Le dossier /usr/local/modules (où se trouve le fichier) est en lecture seule, donc à la place une copie est créée dans /usr/local/config, et le lien symbolique dans /var/www/cgi-bin est mis à jour pour pointer vers la version (plus) sûre.
J'ai choisi de ne NOP que l'appel système afin que la commande réponde toujours comme d'habitude, juste sans rien exécuter.
[!NOTE] Le système de fichiers est rechargé depuis la flash au démarrage. L'application de ce correctif ne fonctionnera que jusqu'au redémarrage de l'appareil. Si vous voulez une solution plus permanente, il faudra reflasher le firmware - peut-être avec Debian
aliask:~/git/dinkleberry$ python3 ./src/main.py -h 10:01:02
usage: dinkleberry [-h] [--telnet] [--kill-telnet] [--test] [--verbose] target
positional arguments:
target Target NAS to patch
options:
-h, --help show this help message and exit
--telnet Start telnet server
--kill-telnet Stop telnet server
--test Test if device is vulnerable
--verbose, -v Set this to print debug messages
Si aucun drapeau optionnel n'est appliqué, le script effectue la correction.
Si vous voulez juste explorer l'appareil, utilisez la commande --telnet, qui démarre une session telnet sur le port 23.
C'est d'un risible manque de sécurité, mais votre appareil est déjà risiblement peu sécurisé, alors autant profiter d'un shell pratique.
[!CAUTION] Utilisez cet outil à vos risques et périls. Il modifie le logiciel même de l'appareil.
Je ne suis pas responsable de :
- L'arrêt de fonctionnement de votre appareil
- La perte de données stockées sur le NAS
- Un départ de feu
- Le TA qui exploitait joyeusement cet appareil être contrarié
Lors de l'analyse des binaires nas_sharing.cgi et libsmbif.so, il est rapidement devenu évident que le logiciel de cet appareil est extrêmement vulnérable. Vulnérable au point de devoir le réécrire entièrement.
Il y a environ 80 appels à system() dans nas_sharing.cgi seul - beaucoup d'entre eux ont un chemin d'accès pour les entrées utilisateur. Je n'ai pas pris la peine de tous les analyser pour trouver d'autres trous à corriger, mais voici un exemple de qualité S :
/* Why use system() instead of libc fopen/fwrite?
What if you want to write a long string or your filename is long?
Painfully obvious command injection playground 🤦 */
void append_to_file(const char* string, const char* file) {
char s_cmd[1024];
sprintf(s_cmd, "echo %s >> %s", string, file);
system(s_cmd);
return;
}
Outre tous ces appels system insensés, il y a plus de débordements de tampon qu'on ne peut en compter - et je peux en compter beaucoup.
Cette CVE figure sur la liste KEV de la CISA - Si vous avez un de ces appareils sur Internet, mettez-le hors ligne. Tout de suite.
Peut-être même suivre le conseil de D-Link et remplacer l'appareil en fin de vie. Mais je n'achèterais certainement pas un produit D-Link.