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 |
19 mars 2026 |
Date de la dernière version |
20 mars 2026 | |
Source | Université Paris 1 Panthéon-Sorbonne |
Diffusion de cette version | Publique |
Historique |
|
|
|
|
|
| |
Planning prévisionnel | - |
Pièces jointes | - |
Risque
Possibilité de créditer un compte papercut sans authentification ni paiement via EsupPapercut.de valider la demande de MFA (Multi Factor Authentication) à la place de l'utilisateur légitime
Systèmes affectés
- Cette vulnérabilité affecte l'ensemble des versions esup-papercut depuis Août 2019 : version 2.0.0 et supérieures-otp-api et donc des solutions de MFA utilisant la solution esupotp.
Description
le module papercut logiciel utilisé pour permettre à l'utilisateur de recréditer son compteur Papercut via un paiement Paybox ou/et IzlyPay
de ne pas avoir besoin de payer ni même s'authentifier pour créditer un compte dans papercut via une faille d'esup-papercut.
Cette faille exploite la possibilité de paiement via izlypay.
esup-papercut ne sécurise pas son mécanisme de callback en /izlypaycallback qui ne devrait être appelé que par les serveurs izly.
Complexité d'exploitation
Complexité d'exploitation
Sous réserve de compréhension du fonctionnement des WS et d'inspection des requêtes HTTP, la complexité d'exploitation est relativement Relativement faible, une commande curl permet de procéder au créditrécupérer un code otp permettant d'accepter la demande de MFA.
Conditions préalables
Il faut connaître l'URL d'esup-papercut, le nom d'un contexte, le login à créditer et le préfixe des numéros de commandes lié au contexte
Solutions
Mise à jour d'esup-
...
otp-api
Les administrateurs système sont encouragés à doivent mettre à jour esup-papercut otp-api vers la version 2.12.0 3 ou ultérieure qui corrige ce problème.
Cf https://github.com/EsupPortail/esup-papercut
Interdiction des URL en /izlypaycallback
Si vous ne pouvez pas mettre à jour votre esup-papercut et que vous n'utilisez pas izlypay, vous pouvez interdire les URL en /izlypaycallback au niveau de votre frontal ; une solution simple est de bloquer toutes les URL contenant izlypaycallback par exemple sous Apache :
...
Applications concernées
esup-papercut version 2.0.0 et supérieur -otp-api jusqu'à 2.1.0, même si izlypay n'est pas mis en œuvre par l'établissement.2.2
Analyse des logs
Une analyse des logs d'accès peut permettre de déterminer si la faille a été exploitée : tout POST GET avec réponse en 200 sur une url finissant en /izlypaycallback et dont l'IP ne correspond pas à un serveur izly (crous) sur /users/:uid/methods/push/:lt/:hash est à considérer comme illégitime .si :lt contient moins de 10 caractères .
Ainsi, dans vos logs HTTP (apache ou nginx par exemple) 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) :
| Bloc de code | |||
|---|---|---|---|
| |||
grep -E '"GET /users/[^/]+/methods/push/[^/]{1,9}/[^/]+ HTTP/[0-9.]+"' esup-otp-api-access.logselect * from public.pay_papercut_transaction_log where pay_mode='IZLYPAY'; |
Liens
- https://www.esup-portail.org/wiki/spacesdisplay/EsupPapercut/esupotp
- https://github.com/EsupPortail/esup-papercutotp-api/