Atheris, Inneal Deuchainn Còd Python

Google air fhoillseachadh o chionn ghoirid sgaoileadh Pròiseact Atheris, a tha na leasachadh de seata de innealan stòr fosgailte speisealta airson deuchainnean fuzzing de chòd Python agus leudachadh airson CPython sgrìobhte ann an C / C ++.

Am pròiseact a ’cleachdadh einnsean stèidhichte air libFuzzer agus faodar an cleachdadh an co-bhonn ris na h-innealan Seòladh Sanitizer agus Giùlan Neo-mhìnichte Sanitizer gus mearachdan a bharrachd a lorg. Tha an còd fosgailte fo chead Apache 2.0.

Mu Google Atheris

Ann am faclan Google Atheris, is e inneal a th ’ann a dh’ fhaodar a chleachdadh gus mearachdan a lorg gu fèin-ghluasadach ann an còd Python agus leudachadh dùthchasach. Tha Atheris na chnap-starra ‘air a stiùireadh le craoladh’, a tha a ’ciallachadh gum bi Atheris a-rithist a’ feuchainn diofar chuir-a-steach don phrògram agad fhad ‘s a tha e ga fhaicinn a’ ruith agus a ’feuchainn ri slighean inntinneach a lorg.

Tha ath-sgrùdadh còd airson Python 2.7 agus Python 3.3+ a ’faighinn taic, ach airson craoladh làn treòraichte, thathas a ’moladh na meuran Python 3.8 agus 3.9 a chleachdadh, a tha a-nis a’ toirt taic do staitistig opcode le opcode.

Anns a ’phròiseas, Tha Atheris a ’liostadh measgachadh comasach de dhàta cur-a-steach agus a’ gineadh aithisg air gach locht a chaidh a lorg agus eisgeachdan neo-aithnichte.

Mar eisimpleir, nuair a bha thu a ’sgrùdadh leabharlann parsaidh YAML ann an Atheris, chaidh a lorg gu bheil cuid de thogail YAML, leithid a bhith a’ sònrachadh “-_” an àite luach integer no a ’cleachdadh liosta an àite iuchair, a’ tilgeil eisgeachd ris nach robh dùil an àite inbhe YAMLErrors mearachd.

Tha an deuchainn fuzz na dhòigh aithnichte airson mearachdan prògramaidh a lorg. Tha buaidh mhòr aig tèarainteachd air mòran de na mearachdan sin. Tha Google air mìltean de chugallachd tèarainteachd agus biastagan eile a lorg nuair a bhios tu a ’cleachdadh an dòigh seo. Tha fuzzing air a chleachdadh gu traidiseanta ann an cànanan dùthchasach mar C no C ++, ach an-uiridh chruthaich sinn einnsean fuzzing Python ùr. An-diugh, leig sinn a-mach einnsean fuzzing Atheris mar stòr fosgailte.

Atheris Faodar a chleachdadh cuideachd gus eadar-dhealachaidhean ann an giùlan a chomharrachadh de leabharlannan a tha ag amas air gnìomhan co-ionann. Mar eisimpleir, lorg sgrùdadh geàrr-chunntas air pasgan Python “idna” agus an leabharlann “libidn2”, a bhios a ’coileanadh a’ ghnìomh airson ainmean fearainn eadar-nàiseanta a dhì-chòdachadh, nach bi iad an-còmhnaidh a ’toirt a-mach an aon toradh.

Is e aon de na cleachdaidhean as fheàrr airson Atheris airson diffusers eadar-dhealaichte. Tha iad sin nam fuzzers a tha a ’coimhead airson eadar-dhealachaidhean ann an giùlan dà leabharlann a tha an dùil an aon rud a dhèanamh. Bidh aon de na h-eisimpleirean fuzzers a tha air am pasgadh le Atheris a ’dèanamh dìreach seo gus coimeas a dhèanamh eadar pasgan“ idna ”Python leis a’ phacaid C “libidn2”.

Gu sònraichte, nam biodh an àrainn a ’cleachdadh sreathan Unicode, an uairsin thionndaidh“ idna ”agus“ libidn2 ”an t-ainm àrainn eadar-nàiseanta gu diofar luchd-aoigheachd.

San fharsaingeachd, tha Atheris feumail ann an còd Python fìor fhad ‘s gu bheil dòigh agad a bhith a’ cur an cèill dè an giùlan “ceart” a th ’ann, no co-dhiù a bhith a’ cur an cèill dè na giùlanan nach eil ceart gu cinnteach. Dh ’fhaodadh seo a bhith cho iom-fhillte le còd àbhaisteach anns an fhùirneis a bhios a’ measadh cruinneas toradh leabharlainn, no cho sìmplidh ri bhith a ’dèanamh cinnteach nach tèid eisgeachdan ris nach robh dùil a thogail.

Tha e cudromach aire a thoirt don sin bidh deuchainnean fuzzing a ’gineadh sruth de gach seòrsa measgachadh air thuaiream de dhàta cur-a-steach, faisg air an dàta fhèin (me duilleagan html le paramadairean taga air thuaiream, faidhlichean no ìomhaighean le cinn neo-àbhaisteach, msaa.) agus socraich gliocasan a dh ’fhaodadh a bhith sa phròiseas.

Ma tha sreath sam bith a ’leantainn gu eisgeachd no nach eil e a’ freagairt ris an fhreagairt ris a bheil dùil, tha an giùlan seo nas coltaiche a ’nochdadh bug no so-leòntachd.

Mu dheireadh, mar a chaidh ainmeachadh Bidh Atheris ag obair le còd Python ann an dreach 2.7 agus 3.3+, ged a tha Google a ’moladh gu làidir gun cleachd thu 3.8+ agus leudachadh dùthchasach sgrìobhte airson CPython.

Chan eil Windows fhathast am measg nan siostaman obrachaidh le taic, mar sin chan eil an einnsean inntinneach ach do luchd-cleachdaidh Linux agus Mac OS X airson a-nis.

Gus a chleachdadh air na h-àrd-chabhsairean sin, feumaidh luchd-leasachaidh dreach làithreach den frontend compiler Clang a chuir a-steach.

Ma tha thu airson tuilleadh fhaighinn a-mach mu dheidhinn, faodaidh tu sgrùdadh a dhèanamh air an nota tùsail anns an ceangal a leanas.


Tha susbaint an artaigil a ’cumail ri na prionnsapalan againn de moraltachd deasachaidh. Gus aithris a dhèanamh air mearachd cliog an seo.

Bi a 'chiad fhear a thog beachd

Fàg do bheachd

Seòladh-d cha tèid fhoillseachadh. Feum air achaidhean air an comharrachadh le *

*

*

  1. Uallach airson an dàta: Miguel Ángel Gatón
  2. Adhbhar an dàta: Smachd air SPAM, riaghladh bheachdan.
  3. Dìleab: Do chead
  4. Conaltradh an dàta: Cha tèid an dàta a thoirt do threas phàrtaidhean ach a-mhàin fo dhleastanas laghail.
  5. Stòradh dàta: Stòr-dàta air a chumail le Occentus Networks (EU)
  6. Còraichean: Aig àm sam bith faodaidh tu am fiosrachadh agad a chuingealachadh, fhaighinn air ais agus a dhubhadh às.