martes, 18 de julio de 2017

Graves vulnerabilidades en la extensión de navegadores de Cisco WebEx

Cisco WebEx es un servicio de videoconferencias que cuenta con varias aplicaciones para poder interaccionar con él. Desde la aplicación de escritorio, aplicaciones móviles, web y extensiones de navegador.

Son precisamente estas últimas donde se encuentran las vulnerabilidades reportadas por Cris Neckar de Divergent Security y Tavis Ormandy de Google. Lo errores pueden llegar a producir una ejecución remota de código.


- La primera de ellas se encuentra al leer el JSON. WebEx utiliza dentro de la librería "atgpcext" un parser de JSON propio para procesar los mensajes desde el cliente.

El siguiente código muestra cómo se podría crear 2 atributos con el mismo nombre.

 var c = e.GpcExtName;  
 if (c && (c = c.trim(),  
 "atgpcext" != c.toLowerCase() && "atgpcext" != atob(c).toLowerCase().trim()))  
   return !1;  
 var d = e.GpcUnpackName;  
 if (d && (d = d.trim(),  
 "atgpcdec" != d.toLowerCase() && "atgpcdec" != atob(d).toLowerCase().trim()))  
   return !1;  
 var f = e.GpcInitCall;  
 if (f && !a.verifyScriptCall(atob(f.trim())))  

Para ello bastaría con utilizar un diccionario con el siguiente contenido:
 object={ "foo": 1, "foo\0": 2 }  
Lo cual provocaría que se crearan 2 atributos con el nombre "foo", uno con el valor 1, que sería visible por el navegador Chrome y otro con el valor 2, que sería visible por la librería "atgpcext".

- La segunda vulnerabilidad se encuentra en una expresión regular incompleta en "GpcScript". Para la interacción de WebEx con los componentes nativos del sistema se utiliza JavaScript. El siguiente código se corresponde con la función que verifica que la entrada sea correcta:

 a.verifyScriptCall = function(a) {  
   var b = /^(WebEx_|A[sT][ADEPSN]|conDll|RA[AM])|^(Ex|In)it|^(FinishC|Is[NS]|JoinM|[NM][BCS][JRUC]|Set|Name|Noti|Trans|Update)|^(td|SCSP)$/;  
   if (10240 < a.length)  
     return !1;  
   a = a.split(";");  
   for (var c = 0; c < a.length; c++) {  
     var d = a[c].trim()  
      , f = ""  
      , g = d.indexOf("=");  
     0 <= g && (d = d.substring(g + 1).trim());  
     g = d.indexOf("(");  
     0 <= g && (f = d.substring(g + 1),  
     d = d.substring(0, g).trim());  
     g = f.split(",");  
     if (1024 < f.length || 20 < g.length || 0 < d.length && !d.match(b))  
       return !1  
   }  
   return !0  
 }  

Si un atacante malicioso introdujese la entrada _wsystem(Calc)=WebEx_Exploit;, el sistema la aceptaría y funcionaría:

Esto permitiría a un atacante remoto llamar y ejecutar cualquier función exportada de cualquier librería del sistema, lo cual se traduce en una ejecución de código remoto arbitrario.

- La tercera vulnerabilidad residen en la llamada de funciones que se encuentra en lista blanca, con parámetros bajo el control del usuario.

Cualquier función que se encuentre en la lista blanca de funciones a exportar por WebEx acepta parámetros. Por ejemplo "atmccli!WebEx_AutoLaunch", la cual está permitida, pero el parámetro o parámetros son objetos controlados por el usuario. La rutina hará una llamada virtual que puede resultar en una ejecución de código arbitrario. Con el siguiente JSON se podría ejecutar código arbitrario de la dirección ObjectAddress:

 {  
   ObjectAddress: "1094795585",  
   GpcInitCall: "WebEx_AutoLaunch(ObjectAddress, ObjectAddress, ObjectAddress);"  
 }  

- La última vulnerabilidad se reside en que cualquier atacante puede actualizar a una versión anterior del plugin configurando los parámetros "GpcExtVersion" y "GpcUrlRoot". En este caso se comprueba la firma del binario, pero el atacante podría volver a una versión en la que el plugin sea vulnerable a otros ataques.


Los productos vulnerables son:
- Plugin para Google Chrome, versiones anteriores a 1.0.12
- Extensión para Mozilla Firefox, versiones anteriores a 1.0.12

Cisco recomienda actualizar los plugin de navegador y las aplicaciones de escritorio.

Más información:

Cisco Security Advisory - Cisco WebEx Browser Extension Remote Code Execution Vulnerability
https://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-20170717-webex

Cisco: WebEx Various GPC Sanitization bypasses permit Arbitrary Remote Command Execution
https://bugs.chromium.org/p/project-zero/issues/detail?id=1324


Antonio Sánchez