Selon Rapports de média , un attaquant peut
exécuter à distance le code contenu dans la bibliothèque.
Comment ça marche? Est-ce un débordement de tampon "classique"? Ou Samba est-il trompé pour exécuter un code de chargement de la bibliothèque légitime? Si oui, comment? Y a-t-il quelque chose que nous, en tant que développeurs, peut apprendre de cela? J'ai vérifié les ressources en ligne habituelles, mais elles contiennent principalement des informations sur la manière de vous protéger si vous êtes un utilisateur Samba.
Essayer de trouver la réponse, j'ai regardé le patch :
--- a/source3/rpc_server/srv_pipe.c
+++ b/source3/rpc_server/srv_pipe.c
@@ -475,6 +475,11 @@ bool is_known_pipename(const char *pipename, struct ndr_syntax_id *syntax)
{
NTSTATUS status;
+ if (strchr(pipename, '/')) {
+ DEBUG(1, ("Refusing open on pipe %s\n", pipename));
+ return false;
+ }
+
if (lp_disable_spoolss() && strequal(pipename, "spoolss")) {
DEBUG(10, ("refusing spoolss access\n"));
return false;
--
Mais, apparemment, le patch ajoute simplement une validation supplémentaire et ne montre pas la "partie juteuse" où la bibliothèque malveillante est chargée.
Il serait plus facile si vous pouvez analyser la source de l'exploit. Vous pouvez le trouver ici: https://github.com/omri9741/cve-2017-7494
De ce que je peux voir, il semble que Samba ne puisse tout simplement charger le SO et l'exécute sans avoir besoin d'un débordement de tampon. Ne savez pas pourquoi une telle chose est là-bas mais elle a probablement quelque chose à voir avec RPC sur 445/TCP.
Edit:
Ouais. Donc, je suis allé fort au fond et c'est vraiment lié à IPC/RPC. Il semble que vous ayez pu ouvrir n'importe quel fichier .so dans des conditions spécifiques sur des tuyaux nommés. Bien sûr, seuls les modules de confiance ne doivent être autorisés que ceux qui ont été téléchargés par personne, donc je pense qu'ils sont principalement fixés à partir desquels les modules pouvaient être chargés.