Atheris, he Taputapu Whakamatau Waehere Python

I huraina a Google i mua tata nei te tuku o Kaupapa AtherisTuhinga o mua he huinga taputapu tuwhera tohunga mo nga whakamatautau wera i te waehere Python me nga toronga mo CPython kua tuhia ki te C / C ++.

Ko te kaupapa whakamahi i te miihini miihini e whai ana i te miihini a ka taea te whakamahi i te taha o te Wāhitau Sanitizer me nga taputapu Whakahaeretanga Whanonga Kaore i Tautuhia kia kitea he hapa taapiri. Kei te tuwhera te waehere i raro i te raihana Apache 2.0.

Mo te Google Atheris

I roto i nga kupu a Google Atheris, he kete taputapu ka taea te whakamahi kia kitea noa nga he i te waehere Python me nga whakaroanga taketake. Ko te Atheris he kaipupuri i te 'kapi kapi', ko te tikanga ka whakamatautauria e Atheris nga momo whakauru ki to papatono i a ia e matakitaki ana e rere ana, e ngana ana ki te rapu huarahi pai.

Ko te arotake waehere mo te Python 2.7 me te Python 3.3+ e tautokohia ana, engari mo te kapinga, arataki arataki, ka tūtohu matou kia whakamahi i nga peka Python 3.8 me 3.9, e tautoko ana inaianei i nga tatauranga opcode na te opcode.

I tenei mahinga, Ka whakararangihia e Atheris nga huinga ka taea te whakauru i nga raraunga whakauru ka whakaputa he purongo i runga i nga he katoa i kitea me nga aweretanga kaore i kitea.

Hei tauira, i te wa e tirotiro ana i te whare pukapuka wetiwete a te YAML i Atheris, i kitea etahi hanganga YAML, penei i te tohu "-_" hei utu mo te uara integer me te whakamahi raarangi kaore i te kii matua, makahia tetahi okonga ohorere hei utu mo te YAMLE Ka hapa te paerewa paerewa.

Ko te whakamatautau fuzz he tikanga e mohiotia ana mo te rapu hapa i nga hotaka. Ko te nuinga o enei hapa ka kitea he paanga haumarutanga nui. Kua kitea e Google nga tini whakaraeraetanga haumarutanga me etahi atu pepeke e whakamahi ana i tenei tikanga. Ko te Fuzzing he tikanga e whakamahia ana i roto i nga reo taketake penei i te C me te C ++ ranei, engari i tera tau i hangaia e matou he miihini whakahiu hou Python. I tenei ra, i tukuna e matou te miihini kora mura Atheris hei puna tuwhera.

Atheris ka taea hoki te whakamahi hei tautuhi i nga rereketanga o te whanonga o nga wharepukapuka e arotahi ana ki nga mahi rite. Hei tauira, ko te tirotiro whakarapopototanga o te kohinga Python "idna" me te wharepukapuka "libidn2", e mahi ana i te mahi ki te wetewete i nga ingoa rohe kua whakahekehia, i kitea kaore i rite tonu te hua.

Ko tetahi o nga whakamahinga pai mo te Atheris mo nga rereketanga rereke. Koinei nga kaitahu e rapu ana i nga rereketanga o te whanonga o nga wharepukapuka e rua e tika ana kia mahi i taua mahi. Ko tetahi o nga tauira fuzzers kua whakakotahihia ki a Atheris he mahi tika tenei hei whakataurite i te kohinga "idna" a Python me te putea C "libidn2".

Ina koa, mena ka whakamahia e te rohe te raupapa Unicode, na "idna" me te "libidn2" i huri te ingoa rohe kua whakaraupapahia ki etahi atu kaihautu.

I te nuinga o te waa, he pai te Atheris ki te waeatanga Python parakore mena he huarahi ki te whakaputa he aha te whanonga "tika", te whakaputa ranei i nga whanonga kaore i te tika. He uaua pea tenei me he waehere ritenga kei te kaitahu e aromatawai ana i te tika o te putanga o te wharepukapuka, maamaa ranei ki te tirotiro kaore he kaupapa ohorere e whakaarahia ana.

He mea nui kia whakaarohia tera ko nga whakamatautau mura te whakaputa i nga rerenga katoa o nga huihuinga ohorere o te whakauru raraunga, tata ki nga raraunga tuuturu (hei tauira, nga wharangi html me nga taapiri tohu tupurangi, konae, whakaahua ranei me nga pane rereke, me etahi atu) me te whakatika i nga awangawanga ka taea.

Mena ka puta he raupapatanga i tetahi raupapa, kaore ranei e taurite ki te whakautu e tumanakohia ana, ko tenei whanonga pea he tohu he whakaraerae ranei.

Hei whakamutunga, penei i whakahuatia Ka mahi a Atheris me te waehere Python i te putanga 2.7 me te 3.3+, ahakoa e kaha ana te taunaki a Google kia whakamahi i te 3.8+ me nga whakaroanga taketake kua tuhia mo CPython.

Kaore ano a Windows i roto i nga punaha whakahaere kua tautokohia, na ko te miihini he hiahia noa ki nga kaiwhakamahi Linux me te Mac OS X mo tenei wa.

Hei whakamahi i runga i enei paparanga, me matua whai i nga kaiwhakawhanake he putanga hou o te Clang compiler frontend kua whakauruhia.

Mena kei te hiahia koe ki te mohio atu mo tenei, ka taea e koe te tirotiro i te tuhipoka taketake i te hono e whai ake nei.


Ko nga korero o te tuhinga e piri ana ki o maatau kaupapa o matatika whakatika. Ki te ripoata i tetahi paatene paato Here.

Hei tuatahi ki te korero

Waiho to korero

Ka kore e whakaputaina tō wāhitau īmēra. Kua tohua ngā āpure e hiahiatia ana ki *

*

*

  1. He kawenga mo nga raraunga: Miguel Ángel Gatón
  2. Te kaupapa o te raraunga: Whakahaerehia te SPAM, te whakahaere korero.
  3. Ture: To whakaae
  4. Whakawhitinga korero: Kaore nga korero e tukuna ki nga taha tuatoru engari ma te ture herenga.
  5. Rokiroki raraunga: Paetukutuku e whakahaerehia ana e Occentus Networks (EU)
  6. Tika: I nga wa katoa ka taea e koe te whakaiti, te whakaora me te muku i o korero.