Listener Remote Poisoning : La faille de sécurité du listener

Contexte

Une faille de sécurité du listener Oracle Database permet de prendre le contrôle à distance de la base de données mettant en cause son intégrité et sa disponibilité via une attaque connue sous le nom de « TNS Poison Attack ».
Cette faille de sécurité est exploitable à distance sans authentification. Elle a été publiée par Oracle dans « Oracle Security Alert for CVE-2012-1675 ».

Principe

La faille de sécurité exploite la fonctionnalité d’enregistrement des services au processus d’écoute (listener). Le service de la base de données vient s’enregistrer automatiquement auprès du listener pour que les utilisateurs puissent se connecter à la base en utilisant son TNS name. Ensuite, le listener autorisera ou non la connexion.
Une personne malveillante et résidant sur le même réseau, peut créer son propre service qui utilisera les mêmes paramètres que le service de base de données et s’enregistrera auprès du même listener. L’authentification pour enregistrer un service de base de données au listener n’étant pas nécessaire, la faille est créée !
Le listener dispose désormais de deux services pour une même base de données. Il va donc réguler le trafic entre les deux services (load balancing). C’est-à-dire qu’environ 50% des informations seront récupérées par la personne malveillante.
 

Solution

En version 11.2.0.3 et antérieure ?
Oracle n’a pas mis à disposition de correctif car elle ne sont plus supportées. Vous devez mettre à jour votre version en version supérieure.
En version 11.2.0.4 ?
Le principe est de positionner un paramètre dans le fichier listener.ora qui empêchera l’enregistrement de services émanant de serveurs distants. Seuls les enregistrements locaux pourront être autorisés.

LISTENER_<nom_base> =
(DESCRIPTION_LIST =
   (DESCRIPTION =
     (ADDRESS=(PROTOCOL=TCP)(HOST=192.106.52.16)(PORT=1521))
   )
)
VALID_NODE_CHECKING_REGISTRATION_LISTENER_<nom_base> = LOCAL

Avec ce paramètre, la faille est comblée. Si des tentatives d’enregistrements à partir d’un serveur distant interviennent, vous rencontrerez l’erreur suivante dans le listener.log :

Listener rejected Registration request from destination 192.106.52.45
29-JUN-2016 17:27:54 * service_register_NSGR * 1521

Et en version 12c ?
En version 12c, la faille de sécurité n’est plus apparente. La configuration par défaut du listener vous protègera de votre vulnérabilité aux attaques « Listener Remote Poisoning ».