Utilisation et diffusion de ce document
Les avis de sécurité du consortium ESUP-Portail portent sur des vulnérabilités des logiciels diffusés par le consortium. Il est de la responsabilité de chacun des destinataires de ce document de ne pas le rediffuser en dehors du cadre pour lequel il a été écrit, pour des raisons évidentes de sécurité des Systèmes d'Information de tous les établissements du consortium ESUP-Portail.
Objet | Vulnérabilité dans esup-otp-api |
Référence | ESUP-2026-AVI-001 |
Date de la première version | 13 mars 2026 |
Date de la dernière version | 13 mars 2026 |
Source | Université Paris 1 Panthéon-Sorbonne |
Diffusion de cette version | Publique |
Historique |
|
Planning prévisionnel | - |
Pièces jointes | - |
Risque
Possibilité de valider la demande de MFA à la place de l'utilisateur légitime
Systèmes affectés
- Cette vulnérabilité affecte l'ensemble des versions esup-otp-api.
Description
Complexité d'exploitation
Relativement faible, une commande curl permet d'accepter la demande de MFA.
Conditions préalables
Solutions
Mise à jour d'esup-otp-api
Les administrateurs système sont encouragés à mettre à jour esup-otp-api vers la version 2.2.3 ou ultérieure qui corrige ce problème.
Cf https://github.com/EsupPortail/esup-otp-api
Applications concernées
esup-otp-api jusqu'à 2.2.3.
Analyse des logs
Une analyse des logs d'accès peut permettre de déterminer si la faille a été exploitée : tout POST avec réponse en 200 sur une url finissant en /izlypaycallback et dont l'IP ne correspond pas à un serveur izly (crous) est à considérer comme illégitime.
Si vous n'avez pas mis en place izlypay dans votre esup-papercut, les logs en base de données peuvent rapidement vous permettre d'identifier un paiement illégitime, d'autant que, même si vous les avez anonymisés via la procédure interne d'esup-papercut, le mode de paiement est conservé.
Ainsi la requête SQL suivante ne doit vous renvoyer aucun résultat (à condition que vous n'utilisiez pas vous-même IzlyPay, mais uniquement le paiement par Paybox) :
select * from public.pay_papercut_transaction_log where pay_mode='IZLYPAY';