Atheris, абзори санҷиши рамзи Python

Google намоиш дод ба наздикӣ озод Лоиҳаи Atheris, ки рушди маҷмӯи воситаҳои кушодаасос махсусгардонидашуда барои санҷишҳои рамзи Python ва васеъшавӣ барои CPython, ки бо C / C ++ навишта шудааст.

Лоиҳа муҳаррики асоси libFuzzer -ро истифода мебарад ва метавонанд дар якҷоягӣ бо асбобҳои тозакунандаи суроға ва тозакунандаи рафтори номуайян барои ошкор кардани хатогиҳои иловагӣ истифода шаванд. Рамз зери литсензияи Apache 2.0 кушода аст.

Дар бораи Google Atheris

Ба ибораи Google Atheris, ин як абзорест, ки бо истифода аз он метавонад ба таври худкор хатогиҳо дар коди Python ва васеъкунии ватаниро пайдо кунад. Atheris фузери 'фарогирии идорашаванда' мебошад, ки маънои онро дорад, ки Atheris борҳо ҳангоми тамошои он вурудоти гуногунро ба барномаи шумо санҷида, кӯшиш мекунад, ки роҳҳои ҷолиб пайдо кунад.

Баррасии кодекс барои Python 2.7 ва Python 3.3+ дастгирӣ карда мешавад, аммо барои фарогирии пурраи роҳнамо, тавсия медиҳем, ки филиалҳои Python 3.8 ва 3.9, ки ҳоло омори опкодро аз рӯи opcode дастгирӣ мекунанд.

Дар раванд, Atheris таркиби имконпазири маълумоти дохилшударо номбар мекунад ва ҳисобот таҳия мекунад дар бораи ҳамаи хатогиҳои ошкоршуда ва истисноҳои номаълум.

Масалан, ҳангоми тафтиши китобхонаи таҳлили YAML дар Atheris, муайян карда шуд, ки баъзе сохторҳои YAML, ба монанди нишон додани "-_" ба ҷои арзиши бутун ё истифодаи рӯйхат ба ҷои калид, ба ҷои истиснои ғайричашмдошт мепартоянд. YAMLE хатогии стандартиро хато мекунад.

Санҷиши фузз як усули шинохташудаи хатогиҳои барномасозӣ мебошад. Аксари ин хатогиҳои ошкоршуда оқибатҳои ҷиддии амниятӣ доранд. Google ҳангоми истифодаи ин усул ҳазорон осебпазирии амният ва хатогиҳои дигарро пайдо кардааст. Фузинг одатан дар забонҳои модарӣ ба монанди C ё C ++ истифода мешавад, аммо соли гузашта мо як муҳаррики нави фузункунандаи Python сохтем. Имрӯз, мо муҳаррики беназири Atheris -ро ҳамчун манбаи кушода баровардем.

Атерис инчунин барои муайян кардани фарқияти рафтор истифода бурда мешавад китобхонаҳо, ки ба вазифаҳои якхела нигаронида шудаанд. Масалан, тафтиши ҷамъбастии бастаи Python "idna" ва китобхонаи "libidn2", ки вазифаи рамзкушоии номҳои домейнҳои байналмилалиро иҷро мекунанд, нишон доданд, ки онҳо на ҳамеша натиҷаи якхела медиҳанд.

Яке аз беҳтарин истифодаҳо барои Atheris барои диффузорҳои дифференсиалӣ мебошад. Инҳо фузерҳое ҳастанд, ки дар рафтори ду китобхона фарқиятро меҷӯянд, ки барои иҷрои як кор пешбинӣ шудаанд. Яке аз намунаҳои фузерҳои бо Atheris бастабандишуда маҳз ҳамин чизро барои муқоисаи бастаи "idna" -и Python бо бастаи C "libidn2" мекунад.

Аз ҷумла, агар домен пайдарпаии Юникодро истифода бурда бошад, пас "idna" ва "libidn2" номи домейнҳои байналмилалиро ба ҳостҳои гуногун табдил дод.

Умуман, Atheris дар рамзи тозаи Python муфид аст, агар он тарзи ифодаи рафтори "дуруст" дошта бошад ва ё ҳадди аққал изҳори кадом рафтор бешубҳа дуруст набошад. Ин метавонад ҳамчун рамзи фармоишӣ дар фузер, ки дақиқии натиҷаи китобхонаро арзёбӣ мекунад, мураккаб бошад ё ба монанди тафтиш, ки истисноҳои ғайричашмдошт ба миён оварда нашудаанд.

Инро ба назар гирифтан муҳим аст - санҷишҳои ноамн ҷараёни ҳама намудҳои таркиби тасодуфии маълумоти воридшударо ба вуҷуд меоранд, наздик ба маълумоти воқеӣ (масалан, сафҳаҳои HTML бо параметрҳои тасодуфӣ, файлҳо ё тасвирҳо бо сарлавҳаҳои ғайримуқаррарӣ ва ғайра) ва ислоҳи носозиҳои имконпазир дар раванд.

Агар ягон пайдарпаӣ ба истисно оварда расонад ё ба ҷавоби интизоршуда мувофиқат накунад, ин рафтор ба эҳтимоли зиёд хато ё осебпазириро нишон медиҳад.

Ниҳоят, тавре ки зикр гардид Atheris бо коди Python дар версияҳои 2.7 ва 3.3+ кор мекунад, гарчанде ки Google истифодаи 3.8+ ва васеъкунии ватаниро, ки барои CPython навишта шудаанд, тавсия медиҳад.

Windows ҳанӯз дар байни системаҳои оператсионии дастгиришаванда нест, аз ин рӯ, муҳаррик ҳоло танҳо барои корбарони Linux ва Mac OS X манфиатдор аст.

Барои истифодаи он дар ин платформаҳо, таҳиягарон бояд нусхаи ҷории фронди компилятории Clang насб карда шаванд.

Агар шумо хоҳед, ки дар бораи он маълумоти бештар гиред, шумо метавонед ёддошти аслиро дар истиноди зерин.


Мазмуни мақола ба принсипҳои мо риоя мекунад ахлоқи таҳрирӣ. Барои гузориш додани хато клик кунед ин ҷо.

Аваллин эзоҳро диҳед

Назари худро бинависед

Суроғаи почтаи электронии шумо нест, нашр карда мешавад.

*

*

  1. Масъул барои маълумот: Мигел Анхел Гатан
  2. Мақсади маълумот: Назорати СПАМ, идоракунии шарҳҳо.
  3. Қонунӣ: Розигии шумо
  4. Иртиботи маълумот: Маълумот ба шахсони сеюм расонида намешавад, ба истиснои ӯҳдадориҳои қонунӣ.
  5. Нигоҳдории маълумот: Пойгоҳи додаҳо аз ҷониби Occentus Networks (ИА) ҷойгир карда шудааст
  6. Ҳуқуқҳо: Ҳар лаҳза шумо метавонед маълумоти худро маҳдуд, барқарор ва нест кунед.

bool (ҳақиқӣ)