Se ha descubierto una vulnerabilidad crítica que afecta a Citrix Application Delivery Controller (Anteriormente conocido como NetScaler ADC) y Gateway (NetScaler Gateway).
La vulnerabilidad, identificada como CVE-2019-19781, podría ser explotada de forma remota por parte de un atacante que pudiese acceder a la red interna y, sin autenticación alguna, ejecutar código de forma arbitraria a través de ella.
Teniendo en consideración el amplio uso que tienen las aplicaciones de Citrix y su importancia para la operación de muchas organizaciones, el impacto que podría tener la explotación de esta vulnerabilidad podría ser muy crítico.
Productos afectados
Según Citrix, CVE-2019-19781 afecta a todas las versiones de producto y plataforma:
- Citrix ADC & Citrix Gateway version 13.0
- Citrix ADC & NetScaler Gateway version 12.1
- Citrix ADC & NetScaler Gateway version 12.0
- Citrix ADC & NetScaler Gateway version 11.1
- Citrix NetScaler ADC & NetScaler Gateway version 10.5
Mitigación
Si bien Citrix aún no ha disponibilizado una actualización de firmware para resolver esta vulnerabilidad, ha publicado en su Knowledge Center medidas que pueden tomarse para mitigar el riesgo sobre sistemas y clusters.
Las medidas consisten en usar la interfaz de línea de comandos para crear una responder action y policy.
Sistema standalone
enable ns feature responder
add responder action respondwith403 respondwith “\”HTTP/1.1 403 Forbidden\r\n\r\n\””
add responder policy ctx267027 “HTTP.REQ.URL.DECODE_USING_TEXT_MODE.CONTAINS(\”/vpns/\”) && (!CLIENT.SSLVPN.IS_SSLVPN || HTTP.REQ.URL.DECODE_USING_TEXT_MODE.CONTAINS(\”/../\”))” respondwith403
bind responder global ctx267027 1 END -type REQ_OVERRIDE
save config
Para aplicar el mismo cambio sobre las interfaces de management
shell nsapimgr_wr.sh -ys skip_systemaccess_policyeval=0
shell “echo ‘nsapimgr_wr.sh -ys skip_systemaccess_policyeval=0’ >> /nsconfig/rc.netscaler”
reboot
Par en HA
En el primario
enable ns feature responder
add responder action respondwith403 respondwith “\”HTTP/1.1 403 Forbidden\r\n\r\n\””
add responder policy ctx267027 “HTTP.REQ.URL.DECODE_USING_TEXT_MODE.CONTAINS(\”/vpns/\”) && (!CLIENT.SSLVPN.IS_SSLVPN || HTTP.REQ.URL.DECODE_USING_TEXT_MODE.CONTAINS(\”/../\”))” respondwith403
bind responder global ctx267027 1 END -type REQ_OVERRIDE
save config
shell nsapimgr_wr.sh -ys skip_systemaccess_policyeval=0
shell “echo ‘nsapimgr_wr.sh -ys skip_systemaccess_policyeval=0’ >> /nsconfig/rc.netscaler”
reboot
Sobre el secundario, una vez haya reiniciado el primario
shell nsapimgr_wr.sh -ys skip_systemaccess_policyeval=0
shell “echo ‘nsapimgr_wr.sh -ys skip_systemaccess_policyeval=0’ >> /nsconfig/rc.netscaler”
reboot
Cluster
En el CLIP
enable ns feature responder
add responder action respondwith403 respondwith “\”HTTP/1.1 403 Forbidden\r\n\r\n\””
add responder policy ctx267027 “HTTP.REQ.URL.DECODE_USING_TEXT_MODE.CONTAINS(\”/vpns/\”) && (!CLIENT.SSLVPN.IS_SSLVPN || HTTP.REQ.URL.DECODE_USING_TEXT_MODE.CONTAINS(\”/../\”))” respondwith403
bind responder global ctx267027 1 END -type REQ_OVERRIDE
save config
shell nsapimgr_wr.sh -ys skip_systemaccess_policyeval=0
shell “echo ‘nsapimgr_wr.sh -ys skip_systemaccess_policyeval=0’ >> /nsconfig/rc.netscaler”
reboot
En cada nodo del cluster
shell nsapimgr_wr.sh -ys skip_systemaccess_policyeval=0
shell “echo ‘nsapimgr_wr.sh -ys skip_systemaccess_policyeval=0’ >> /nsconfig/rc.netscaler”
reboot
En la partición de Admin
switch ns partition default
enable ns feature responder
add responder action respondwith403 respondwith “\”HTTP/1.1 403 Forbidden\r\n\r\n\””
add responder policy ctx267027 “HTTP.REQ.URL.DECODE_USING_TEXT_MODE.CONTAINS(\”/vpns/\”) && (!CLIENT.SSLVPN.IS_SSLVPN || HTTP.REQ.URL.DECODE_USING_TEXT_MODE.CONTAINS(\”/../\”))” respondwith403
bind responder global ctx267027 1 END -type REQ_OVERRIDE
save config
shell nsapimgr_wr.sh -ys skip_systemaccess_policyeval=0
shell “echo ‘nsapimgr_wr.sh -ys skip_systemaccess_policyeval=0’ >> /nsconfig/rc.netscaler”
reboot
Procedimiento para revertir los cambios
unbind responder global ctx267027
rm responder policy ctx267027
rm responder action respondwith403
save config
Eliminar el comando nsapi de rc.netscaler
shell nsapimgr_wr.sh -ys skip_systemaccess_policyeval=1
shell “sed -i ” ‘/skip_systemaccess_policyeval=0/d’ /nsconfig/rc.netscaler”
reboot
Todos los reboot que se indica realizar no son debido a que sea necesario para aplicar la nueva política sino más bien para que, en caso de existir una sesión abierta que fue obtenida a través de la explotación de la vulnerabilidad, esta sea finalizada.