Inicio / Alerta Temprana / Avisos Seguridad / Vulnerabilidad en bases de datos Oracle

Vulnerabilidad en bases de datos Oracle

Fecha de publicación: 
30/04/2012
Importancia: 
5 - Crítica
Recursos afectados: 

Todas las versiones de bases de datos desde 8i hasta 11g R2.

Descripción: 
Llamada de tipo TNS Poison, permite establecer un ataque de tipo man-in-the-middle entre el servidor y el cliente de BBDD.
Solución: 

Actualización 01/05/2012: Oracle ha publicado el siguiente aviso de seguridad con medidas para evitar este problema:

Para paliar el problema, se puede establecer a off la opción dynamic_registration en el archivo listener.ora. En clusters Oracle RAC, además, se debe establecer el balanceo de sesión en el cliente, añadiendo los nodos del cluster en el archivo tnsnames.ora.

Otra alternativa, en clusters Oracle RAC, es establecer la siguiente configuración en el archivo protocol.ora (aunque esta medida no evitará la explotación de la vulnerabilidad desde los clientes autorizados por dicha configuración):

TCP.VALIDNODE_CHECKING = YES
TCP.INVITED_NODE = (LISTA DE LOS CLIENTES ADMITIDOS)

Por último, para evitar el ataque también se puede establecer que la comunicación sea SSL/TLS (aunque esta funcionalidad se debe adquirir aparte), indicando en el archivo protocol.ora del cliente y servidor:

SQLNET.ENCRYPTION_CLIENT=REQUIRED
Detalle: 

La vulnerabilidad afecta al componente TNS Listener, responsable del establecimiento de sesión.

Un atacante puede registrar, en este componente, una instancia ya registrada anteriormente. Esta acción es interpretada, por TNS Listener, como el registro de una instancia de un cluster. De forma que, a partir de ese momento, se realizará un balanceo de carga entre los miembros del cluster, incluido el equipo del atacante. Después, el atacante puede reenviar la información, o comandos del cliente, a un servidor legítimo de la BBDD.

No se necesita privilegios para explotar esta vulnerabilidad, llamada TNS Poison, sólo acceso por red al servicio TNS-Listener.

Impacto:

  • Captura de información intercambiada entre el cliente y el servidor de BBDD.
  • Inyección de comandos SQL.
  • Secuestro de sesión.