Vulnerabilidad crítica en Citrix NetScaler ADC y Gateway (CVE-2019-19781)

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.