PoPToP PPTP server remote buffer overflow
|
Date de Publication: 2003-04-10
K-Otik ID : 0009
Titre: PoPToP PPTP server remote buffer overflow
Class: Design Error
Exploitable à distance : Oui
Exploitable en local : Non
|
* Description Technique *
PPTP-over-IPSEC est généralement utilisé pour le déploiement de réseaux VPN. L'en-tête du paquet de PPTP contient une longueur de 16bits qui indique la taille normale du paquet :
|
bytes_this = read(clientFd, packet + bytes_ttl, 2 - bytes_ttl);
// ...
bytes_ttl += bytes_this;
// ...
length = htons(*(u_int16_t *) packet);
if (length > PPTP_MAX_CTRL_PCKT_SIZE) {
// abort
}
-------------------------------------------------------------------------
bytes_this = read(clientFd, packet + bytes_ttl, length - bytes_ttl);
Le problème est que si la longueur (lenght) du paquet est placée à "0" ou "1", il sera donc possible de remplir une quantité illimitée de données.
Ce problème peut être exploité pour gagner l'accès système sur une machine Linux en utilisant libc. Cette vulnérabilité n'est pas exploitable sur Solaris et *BSD
* Versions Vulnérables *
PoPToP 1.x sous Linux
* Solution *
Bloquer le port PPTP pour les connexions Non-IPSEC, ou filitrer les IP.
|