El servicio RAS (Remote Access Service) de Windows NT es vulnerable
a diversas sobrecargas de buffer que pueden provocar la ejecución
de código preparado que puede servir a un atacante para conseguir
acceso privilegiado a la máquina.
Hace unos días informábamos de la existencia de una vulnerabilidad
por sobrecarga de buffer en los ficheros de ayuda en Windows NT,
ahora se comprueba que el servicio RAS también está afectado por
problemas similares. Este servicio se emplea por los usuarios
remotos para llamar al servidor RAS y tener acceso a los recursos
locales a través de dicho servidor o a la red que se asocia. RAS
es además el servicio empleado por los usuarios para conectar con
otros servicios fuera de la máquina NT, por ejemplo, con el ISP
para acceder a Internet.
Con RAS se instalan diferentes programas y servicios, como
rassrv.exe, que implementa el servicio de servidor de acceso
remoto y se emplea para aceptar las llamadas entrantes. Rasman.exe
implementa el administrador de llamada automática para RAS (RAS
Autodial Manager) y el administrador de conexión RAS (RAS
Connection Manager) que se emplean en las llamadas al exterior.
Rasphone.exe es la aplicación que se usa cuando un usuario realiza
una llamada manual, así como para editar la agenda de teléfonos de
RAS. Por último también se usa rasdial.exe para efectuar llamadas
al exterior.
Rassrv.exe y rasman.exe son procesos del sistema y se ejecutan en
el contexto de seguridad del sistema mientras que rasphone.exe y
rasdial.exe trabajan normalmente en el entorno de seguridad del
usuario que inició el proceso. Todos los programas indicados,
excepto rassrv.exe parecen estar afectados por el problema.
La sobrecarga de buffer ocurre por que las funciones API de RAS,
como RasGetDialParams( ), no efectúan ninguna comprobación y
permite que se llenen las estructuras que contienen determinados
arrays. Por ejemplo, cuando el administrador de llamada automática
efectúa una llamada usa la función RasDailGetParams() para leer el
número de teléfono de la agenda rasphone.pbk. Tras ello, lo sitúa
en la estructura rasdialparams, que contiene matrices de caracteres.
Como no se realiza ninguna comprobación del tamaño de los datos si
el archivo rasphone.pbk contiene un número telefónico muy largo
causará una violación de acceso en rasman.exe. Si el número
introducido tiene un tamaño superior a 299 caracteres se
sobreescribe completamente el registro EIP del procesador, lo
que puede hacer que se modifique el orden de funcionamiento del
programa y se ejecute código arbitrario.
Por defecto, todos los usuarios tienen permisos para modificar
el archivo rasphone.pbk, con lo que cualquiera con acceso a él
puede editar su contenido y causar la sobrecarga de buffer. Los
permisos para este fichero deben de ser ajustados, pero a pesar
de ello cualquier usuario puede crear su propia agenda para RAS,
por lo que aun sin tener en cuenta los permisos de rasphone.pbk
en el directorio %systemroot%\system32\ras el ataque aun puede
ser posible.
Microsoft ha publicado un parche para solucionar este problema,
a través del cual cualquiera con acceso local a un sistema NT
puede conseguir elevar sus privilegios a los de administrador
por una sobrecarga de rasman.exe. Los programas rasphone.exe y
rasdial.exe también pueden ser usados de forma similar para
conseguir acceso total a un sistema.
Más información:
Sobrecarga de buffer con RAS, por David Litchfield
Sobrecarga de buffer en Windows NT, boletín de David Litchfield
Boletín de seguridad de Microsoft
Microsoft Knowledge Base
Parche para evitar el problema
Deja una respuesta