7 questions pour comprendre la dernière vulnérabilité affectant Tomcat (CVE-2020-1938)

7 questions pour comprendre la dernière vulnérabilité affectant Tomcat (CVE-2020-1938)

Le 20 février 2020, un utilisateur a publié un code exploitant l’une de ces vulnérabilités sur la plateforme Github.
L’exploitation de cette vulnérabilité permettait d’accéder à n’importe quel fichier contenu sur le serveur, voire d’exécuter du code arbitraire.
Nous vous proposons de synthétiser cette actualité en 7 questions afin de vous donner toutes les clés nécessaires pour votre prise de décision.

1. Qu’est-ce que Tomcat ?

Tomcat est un serveur web open-source basé sur la technologie Java, maintenu par la fondation Apache. Ce dernier est composé de 3 briques principales :

  • Un conteneur de servlet (composant permettant de créer dynamiquement des données au sein d’un serveur HTTP) pour faire fonctionner des servlets Java ;
  • Un serveur web fait pour livrer des fichiers du système local comme le serveur HTTP Apache ;
  • Un serveur applicatif implémentant la spécification J2E (Jakarta EE).

2. Qu’est-ce que le protocole AJP ?

L’AJP (Apache JServ Protocol) est un protocole binaire permettant de faire le lien entre un serveur Web et un serveur applicatif.
Ce dernier peut être utilisé comme répartiteur de charges, ou pour passer des en-têtes et d’autres données entre le front-end et le back-end via des API dédiées.
Ce protocole est réputé comme plus performant que HTTP. Le port utilisé par défaut par AJP est TCP/8009.

3. La vulnérabilité est-elle facilement exploitable ? Des codes d’exploitation sont-ils disponibles ?

La vulnérabilité référencée CVE-2020-1938 (ou CNVD-2020-10487) provient d’une erreur d’analyse syntaxique par le connecteur AJP du serveur Tomcat. Un attaquant exploitant cette vulnérabilité était alors en mesure de lire n’importe quel fichier du serveur Web voire d’exécuter du code arbitraire à distance sur le système.

Dans une vidéo de démonstration du code d’exploitation disponible sur Youtube (www.youtube.com/watch?v=Z_UiXhQ5mEQ), il semblerait que l’attaquant téléverse un fichier arbitraire sur le serveur Tomcat puis parvient à l’exécuter.

XMCO_CVE-2020-1938_YT

 4. La vulnérabilité fait-elle l’objet d’une campagne d’exploitation ?

Oui, un premier code d’exploitation permet d’accéder à n’importe quel fichier du serveur (Local File Inclusion).

Grâce à nos outils internes, nous avons pu observer un pic de scan pour le port TCP/8009. Par expérience, nous pouvons supposer que cette tendance va continuer à évoluer en ce sens.

 c5ec81f8-e655-4a6e-9f09-6f17ce515d2a

5. Comment savoir si je suis affecté par la vulnérabilité ?

Vous êtes affecté par cette vulnérabilité si les trois conditions suivantes sont réunies :

  1. Vous utilisez l’une des versions suivantes de Tomcat :
    • Tomcat v9.0.x < 9.0.31
    • Tomcat v8.5.x < 8.5.51
    • Tomcat v7.x < 7.0.100
  2. Vous disposez d’un serveur Tomcat avec un connecteur AJP activé ;
  3. Le port AJP (TCP/8009) est exposé sur Internet.

6. Comment se protéger contre l’exploitation de cette faille ?

6.1. Solution de contournement

Il est possible de se prémunir de cette vulnérabilité en désactivant les connecteurs AJP sur les serveurs vulnérables ou en limitant l’accès réseau au port TCP/8009.

6.2. Application des correctifs

L’application des derniers correctifs de sécurité permet de ne plus être affecté par cette vulnérabilité.

7. Dois-je appliquer les correctifs en urgence ?

Étant donné que la vulnérabilité est actuellement exploitée sur Internet et que des codes d’exploitation sont utilisés, nous vous recommandons de mettre à jour au plus vite les serveurs Tomcat vers les versions suivantes:


Sources :


Aurélien Denis