Le projet llama.cpp a publié la version b11000, qui corrige une vulnérabilité de sécurité critique dans le serveur RPC. La correction résout un bug d'utilisation après libération qui permettait aux clients distants non authentifiés d'obtenir une exécution de code à distance en manipulant les graphes de calcul mis en cache.

  • Une implémentation précédente mettait en cache les graphes de calcul par appareil pour éviter de renvoyer les données des tenseurs lors des opérations GRAPH_RECOMPUTE.
  • Ces nœuds mis en cache conservaient des pointeurs directs vers les tampons du backend ; si un tampon était libéré via FREE_BUFFER, une réexécution ultérieure accédait à des pointeurs pendables.
  • Les attaquants pouvaient remodeler des blocs de mémoire via les commandes ALLOC_BUFFER et SET_TENSOR pour fuir les adresses de libc et détourner le vtable de l'interface du tampon.
  • Le correctif supprime tous les graphes mis en cache dans free_buffer(), obligeant le client à revenir à GRAPH_COMPUTE lors de l'appel suivant.

Cette mise à jour empêche les exploits d'exécution de code à distance ciblant le serveur RPC llama.cpp sans nécessiter de modifications du protocole ou de l'API.