sábado, 20 de febrero de 2010

Vulnerabilidad afecta al plan de numeración de Asterisk

Se ha anunciado la existencia de una vulnerabilidad en Asterisk, que podría permitir a un atacante remoto inyectar datos en los dialplans de los sistemas vulnerables.

Asterisk es una aplicación de una central telefónica (PBX) de código abierto. Como cualquier PBX, se pueden conectar un número determinado de teléfonos para hacer llamadas entre sí e incluso conectarlos a un proveedor de VoIP para realizar comunicaciones con el exterior. Asterisk es ampliamente usado e incluye un gran número de interesantes características: buzón de voz, conferencias, IVR, distribución automática de llamadas, etc. Además el software creado por Digium está disponible para plataformas Linux, BSD, MacOS X, Solaris y Microsoft Windows.

En Asterisk, el dialplan es el plan de numeración que seguirá la centralita para cada contexto y por tanto para cada usuario. El problema reside en el tratamiento de la variable "${EXTEN}" en un dialplan con caracteres comodín, como:
exten => _X.,1,Dial(SIP/${EXTEN})
Esto podría permitir a atacantes inyectar cadenas arbitrarias en la aplicación "Dial()" y permitir por ejemplo la realización de llamadas sin autorización.

Asterisk Open Source versiones 1.2.x
Asterisk Open Source versiones 1.4.x
Asterisk Open Source versiones 1.6.x
Asterisk Business Edition versiones B.x.x
Asterisk Business Edition versiones C.x.x

El problema puede resolverse con una adecuada programación del dialplan, evitar el uso del punto siempre que sea posible y emplear la función "Filter()". Se ha publicado una documentación con prácticas recomendadas para realizar este proceso. Disponible según versión desde:
http://svn.asterisk.org/svn/asterisk/branches/1.2/README-SERIOUSLY.bestpractices.txt
http://svn.asterisk.org/svn/asterisk/branches/1.4/README-SERIOUSLY.bestpractices.txt
http://svn.asterisk.org/svn/asterisk/branches/1.6.0/README-SERIOUSLY.bestpractices.txt
http://svn.asterisk.org/svn/asterisk/branches/1.6.1/README-SERIOUSLY.bestpractices.txt
http://svn.asterisk.org/svn/asterisk/branches/1.6.2/README-SERIOUSLY.bestpractices.txt

También se ha publicado la versión Asterisk 1.2.40 con la inclusión de la función "FILTER()" (incluida desde la versión 1.4) para proporcionar las herramientas necesarias para resolver este problema en el dialplan.


Antonio Ropero
antonior@hispasec


Más información:

Asterisk Project Security Advisory - AST-2010-002
Dialplan injection vulnerability
http://downloads.asterisk.org/pub/security/AST-2010-002.html

No hay comentarios:

Publicar un comentario en la entrada