El pasado 4 de mayo, F5 liberó distintos parches de seguridad para su balanceador de carga F5 BIG-IP. Entre los fallos que mitigaba este parche, se encuentra una vulnerabilidad crítica de ejecución de código remoto (RCE).
Impacto de la vulnerabilidad
Este fallo permite a un atacante ejecutar código arbitrario de forma remota, que permitiría: crear o borrar archivos, habilitar o deshabilitar servicios en el equipo vulnerado.
Para poder ser explotada esta vulnerabilidad es necesario contar con acceso a la red, sin embargo, no se necesitan credenciales o estar autenticado.
Versiones vulnerables
La vulnerabilidad se presenta dado que existe un fallo en la autenticación de iControl REST, un atacante puede realizar un bypass al módulo mencionado.
Producto | Versión vulnerable | Versión recomendada | Severidad | Componente vulnerable |
BIG-IP (Todos los módulos) | 16.1.0-16.1.2 | 16.1.2.2 | Crítica | iControl REST |
BIG-IP (Todos los módulos) | 15.1.0 – 15.1.5 | 15.1.5.1 | Crítica | iControl REST |
BIG-IP (Todos los módulos) | 14.1.0 – 14.1.4 | 14.1.4.6 | Crítica | iControl REST |
BIG-IP (Todos los módulos) | 13.1.0 – 13.1.4 | 13.1.5 | Crítica | iControl REST |
BIG-IP (Todos los módulos) | 12.1.0 – 12.1.6 | No tendrán parches | Crítica | iControl REST |
BIG-IP (Todos los módulos) | 11.6.1 – 11.6.5 | No tendrán parches | Crítica | iControl REST |
Mitigación
Hasta que sea posible instalar una versión segura, puede efectuar las siguientes mitigaciones temporales. Estas mitigaciones restringen el acceso a iControl REST solo a redes o dispositivos confiables, lo que limita la superficie de ataque.
Bloquear el acceso REST a iControl a través de la propia dirección IP
Puede bloquear todos los accesos a la interfaz REST iControl de su sistema BIG-IP a través de direcciones IP propias. Para hacerlo, puede cambiar la configuración de Port Lockdown a Allow None para cada dirección IP propia en el sistema. Si debe abrir algún puerto, debe usar la opción Permitir personalizado, teniendo cuidado de no permitir el acceso a iControl REST. De manera predeterminada, iControl REST escucha en el puerto TCP 443 o en el puerto TCP 8443 en instancias únicas de NIC BIG-IP VE. Si modificó el puerto predeterminado, asegúrese de prohibir el acceso al puerto alternativo que configuró.
Bloquee el acceso REST de iControl a través de la interfaz de administración
Para mitigar esta vulnerabilidad para los productos F5 afectados, debe restringir el acceso de administración solo a usuarios y dispositivos de confianza a través de una red segura.
Modificar la configuración httpd de BIG-IP
Además de bloquear el acceso a través de las propias direcciones IP y la interfaz de administración, o como una alternativa para bloquear el acceso si esas opciones no son posibles en su entorno, puede modificar la configuración httpd de BIG-IP para mitigar este problema.
BIG-IP 14.1.0 y posteriores
- Inicie sesión en TMOS Shell (tmsh) del sistema BIG-IP ingresando el siguiente comando:
tmsh
- Abra la configuración de httpd para editarla ingresando el siguiente comando:
edit /sys httpd all-properties
- Busque la línea que comienza con include none y reemplace none con el siguiente texto:
<If \"%{https:connection} =~ /close/i \">
RequestHeader set connection close
</If>
<ElseIf \"%{https:connection} =~ /keep-alive/i \">
RequestHeader set connection keep-alive
</ElseIf>
<Else>
RequestHeader set connection close
</Else>
- Después de actualizar la declaración de inclusión, use la tecla ESC para salir del modo interactivo del editor, luego guarde los cambios ingresando el siguiente comando:
:wq
- En el mensaje Guardar cambios (y/n/e), seleccione «y» para guardar los cambios.
- Guarde la configuración de BIG-IP ingresando el siguiente comando:
save /sys config
BIG-IP 14.0.0 y anteriores
- Inicie sesión en TMOS Shell (tmsh) del sistema BIG-IP ingresando el siguiente comando:
tmsh
- Abra la configuración de httpd para editarla ingresando el siguiente comando:
edit /sys httpd all-properties
- Busque la línea que comienza con include none y reemplace none con el siguiente texto:
"RequestHeader set connection close"
- Después de actualizar la declaración de inclusión, use la tecla ESC para salir del modo interactivo del editor, luego guarde los cambios ingresando el siguiente comando:
:wq
- En el mensaje Guardar cambios (y/n/e), seleccione «y» para guardar los cambios.
- Guarde la configuración de BIG-IP ingresando el siguiente comando:
save /sys config
Indicadores de compromiso (IOCs)
Utilice esta comparación para determinar la intención y el impacto potencial de los registros de BIG-IP. Por ejemplo, puede ver las siguientes entradas en estos registros:
'/var/log/audit'
May 00 00:00:00 hostname notice icrd_child[11111]: 11111111:5: AUDIT - pid=11111 user=admin folder=/Common module=(tmos)# status=[Command OK] cmd_data=run util bash -c id
'/var/log/restjavad-audit.0.log'
[I][1111][00 May 0000 00:00:00 UTC][ForwarderPassThroughWorker] {"user":"local/admin","method":"POST","uri":"https://localhost:8100/mgmt/tm/util/bash","status":200,"from":"nnn.nnn.nnn.nnn"}
Si los registros muestran entradas similares a estos ejemplos, esto puede indicar que una solicitud REST de la dirección IP nnn.nnn.nnn.nnn invoca el comando "run util bash -c id
«. (en estas entradas de registro, el comando id
se usa solo como ejemplo). Debe examinar detenidamente cualquier entrada de "/var/log/restjavad-audit..log
» y «/var/log/audit
» y compararlas con llamadas REST legítimas contra el dispositivo.
Recomendaciones
- Efectuar las actualizaciones a las versiones seguras tan pronto como sea posible. Sobre todo si se encuentra en las versiones 11.x y 12.x.
- En caso de no poder efectuar las actualizaciones, realizar las mitigaciones de manera urgente, exceptuando el caso en que se encuentre en las versiones 11.x o 12.x, en estos casos debe actualizar de inmediato.
- Realizar la revisión de los logs para validar que no hayan indicadores de compromiso.