Share to: share facebook share twitter share wa share telegram print page

 

Fuzzing

Le fuzzing (ou test à données aléatoires[1]) est une technique pour tester des logiciels. L'idée est d'injecter des données aléatoires dans les entrées d'un programme. Si le programme échoue (par exemple en plantant ou en générant une erreur), alors il y a des défauts à corriger. Exemples de points d'entrée d'un programme :

Le grand avantage du fuzzing est que l'écriture de tests est extrêmement simple, ne demande aucune connaissance du fonctionnement du système et permet de trouver des vulnérabilités facilement. D'ailleurs, le fuzzing est également utilisé pour traquer des failles de sécurité ou dans la rétro-ingénierie.

La première trace du fuzzing est la publication datant du  : « An Empirical Study of the Reliability of UNIX Utilities » [1] écrite par Barton P. Miller, Lars Fredriksen, et Bryan So. Le résumé indique que durant les essais ils ont été capables de faire planter « entre 25 et 33 % des programmes utilitaires de n'importe quelle version d'UNIX ». Le rapport présente les outils de test mais également l'origine des erreurs.

Le fuzzing est tellement simple à utiliser et si efficace pour trouver des vulnérabilités que le chercheur en sécurité informatique Charlie Miller a refusé de dévoiler les vulnérabilités zero day trouvées dans le code de logiciels célèbres (contrairement au règlement du concours de sécurité informatique Pwn2Own), afin de protester contre les éditeurs qui n'utilisent pas assez cette technique simple selon lui[2].

Cette simplicité est toutefois à relativiser lorsqu'il s'agit de trouver des vulnérabilités dans l'implémentation de protocoles notoirement connus (HTTP par exemple) dans des serveurs. En effet, les paramètres d'entrée sont souvent testés et protégés rigoureusement (contrôle de forme), chaque erreur menant à un abandon immédiat de la routine de traitement de la requête test. La probabilité de trouver des vulnérabilités par fuzzing en un temps acceptable devient alors très faible. Pour corriger cela, il est nécessaire de recourir au « smart fuzzing », dont le concept consiste à faire varier progressivement certains paramètres de requêtes et de suites de requêtes pouvant être considérées comme légitimes par les automates cibles, ceci afin de pouvoir pénétrer plus en profondeur dans le cœur du programme attaqué et ainsi de maximiser les probabilités d'identification de vulnérabilités.

Inversement au fuzzing qui est une méthode de test par boîte noire, la méthode de test par boîte blanche analyse un système dont on connaît exactement le fonctionnement.

Références

Articles connexes

Liens externes

Kembali kehalaman sebelumnya


Index: pl ar de en es fr it arz nl ja pt ceb sv uk vi war zh ru af ast az bg zh-min-nan bn be ca cs cy da et el eo eu fa gl ko hi hr id he ka la lv lt hu mk ms min no nn ce uz kk ro simple sk sl sr sh fi ta tt th tg azb tr ur zh-yue hy my ace als am an hyw ban bjn map-bms ba be-tarask bcl bpy bar bs br cv nv eml hif fo fy ga gd gu hak ha hsb io ig ilo ia ie os is jv kn ht ku ckb ky mrj lb lij li lmo mai mg ml zh-classical mr xmf mzn cdo mn nap new ne frr oc mhr or as pa pnb ps pms nds crh qu sa sah sco sq scn si sd szl su sw tl shn te bug vec vo wa wuu yi yo diq bat-smg zu lad kbd ang smn ab roa-rup frp arc gn av ay bh bi bo bxr cbk-zam co za dag ary se pdc dv dsb myv ext fur gv gag inh ki glk gan guw xal haw rw kbp pam csb kw km kv koi kg gom ks gcr lo lbe ltg lez nia ln jbo lg mt mi tw mwl mdf mnw nqo fj nah na nds-nl nrm nov om pi pag pap pfl pcd krc kaa ksh rm rue sm sat sc trv stq nso sn cu so srn kab roa-tara tet tpi to chr tum tk tyv udm ug vep fiu-vro vls wo xh zea ty ak bm ch ny ee ff got iu ik kl mad cr pih ami pwn pnt dz rmy rn sg st tn ss ti din chy ts kcg ve 
Prefix: a b c d e f g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9