Hervé Godquin

Aller au contenu | Aller au menu | Aller à la recherche

Nouvelles vulnérabilités dans PHP

Deux nouvelles vulnérabilités semblent toucher PHP.

Voici l'advisory du CERT-FR : https://www.cert.ssi.gouv.fr/avis/CERTFR-2020-AVI-054/

Il semble qu'une des vulnérabilités touche mbstring et notamment la fonction mb_decode_mimeheader qui sert à décoer des en-tête MIME  : https://www.php.net/manual/fr/function.mb-decode-mimeheader.php.

Cette librairie fait partie de l'extension mbstring.

La librairie touchée semble être la libmbfl dans la fonction : mbfl_filt_conv_big5_wchar(int c, mbfl_convert_filter *filter).

Quand on regarde la pile d'exécution on peut voir que le chemin est le suivant (dans mbstring) :

mb_decode_mimeheader() -> mbfl_mime_header_decode() -> mime_header_decoder_collector() -> mbfl_filt_conv_qprintdec() -> mbfl_filter_output_pipe() -> mbfl_filt_conv_big5_wchar()

Autant vous dire que si vous cherchez à trouver cette vulnérabilité en faisant de l'analyse de code "à la mano" vous n'avez pas le cul sorti des ronces :)

Alors cette vulnérabilité a été trouvé comment ? Fuzzing ... Par reza : reza at iseclab dot org.

Vous pouvez tester si vous êtes vulnérables en faisant ceci :

./php -r 'mb_decode_mimeheader(file_get_contents("php://stdin"));' < global-overflow-cp950_pua_tbl.poc

Le fichier PoC est disponible ici : https://github.com/gaintcome/fuzz-php/blob/master/poc/mbstrings/global-overflow-cp950_pua_tbl.poc

(Au cas ou cela disparaîtrait j'en ai mis une copie ici : https://www.paranoiac-thoughts.com/netpsycho/public-scripts-and-confs/blob/master/global-overflow-cp950_pua_tbl.poc)

Pour voir la correction du la vulnérabilité : http://git.php.net/?p=php-src.git;a=blobdiff;f=ext/mbstring/libmbfl/filters/mbfilter_big5.c;h=5e1ca815da31ed68db2baae2b3d38699b546ca83;hp=f5ab8809ce8a799bd40bda74606f181fcef36c75;hb=2bcbc95f033c31b00595ed39f79c3a99b4ed0501;hpb=0f79b1bf301f455967676b5129240140c5c45b09

Alors pourquoi j'en parle : sérieusement le contrôle de MIME c'est courant, surtout dans les fonctionnalités d'upload, donc y a moyen de se faire plaisir.

De même, c'est vrai que PHP reste vaste (et inexploré ???) c'est donc une bonne piste pour s'entraîner au fuzzing et trouver des petites vulns :).

Have fun !

Comme d'habitude vous pouvez proposer des améliorations à cet article via : https://www.paranoiac-thoughts.com/netpsycho/blog_post/blob/master/20200123_nouvelles_vulnerabilites_php

Ajouter un commentaire

Le code HTML est affiché comme du texte et les adresses web sont automatiquement transformées.

La discussion continue ailleurs

URL de rétrolien : https://www.herve-godquin.fr/index.php?trackback/16

Fil des commentaires de ce billet