Atheris, Python Code Testing Toolkit

Google ачылды жакында бошотулган Atheris долбоору, бул өнүгүү болуп саналат ачык булактуу шаймандардын жыйындысы адистештирилген Python кодун тестирлөө үчүн жана C / C ++ тилинде жазылган CPython үчүн кеңейтүүлөр.

долбоору libFuzzer негизделген кыймылдаткычты колдонот жана кошумча каталарды табуу үчүн даректи тазалоочу жана аныкталбаган жүрүм-турумду тазалоочу шаймандар менен бирге колдонсо болот. Код Apache 2.0 лицензиясынын астында ачык.

Google Atheris жөнүндө

Google Atherisтин сөзү менен айтканда, бул Python кодунан жана жергиликтүү кеңейтүүлөрдөн каталарды автоматтык түрдө табуу үчүн колдонула турган курал. Atheris - бул "камтуучу фузер", башкача айтканда, Atheris программаңызды көрүп жатып, ар кандай киргизүүлөрдү бир нече жолу кайталап, кызыктуу жолдорду табууга аракет кылат.

Python 2.7 жана Python 3.3+ үчүн коддорду карап чыгуу колдоого алынат, бирок толугу менен жетекчиликке алуу үчүн, азыр opcode статистикасын opcode аркылуу колдогон Python 3.8 жана 3.9 бутактарын колдонуу сунушталат.

Жүрүшүндө, Atheris киргизүү маалыматтарынын мүмкүн болгон айкалыштарын санап, отчет берет бардык аныкталган кемчиликтер жана аныкталбаган өзгөчө кырдаалдар жөнүндө.

Мисалы, Atheris программасында YAML талдоо китепканасын текшергенде, бүтүндөй маанинин ордуна "-_" көрсөтүү же ачкычтын ордуна тизме колдонуу сыяктуу айрым YAML курулмалары а YAMLEката каталары

Fuzz тест - программалоонун каталарын табуунун белгилүү ыкмасы. Ушул байкалган каталардын көпчүлүгү коопсуздукка олуттуу таасир этет. Google бул техниканы колдонууда коопсуздуктун миңдеген кемчиликтерин жана башка мүчүлүштүктөрүн тапты. Фузинг салттуу түрдө C же C ++ сыяктуу эне тилдерде колдонулат, бирок өткөн жылы биз жаңы Python фузинг кыймылдаткычын түздүк. Бүгүн биз Atheris кыймылдаткычын ачык булак катары чыгардык.

Атерис ошондой эле жүрүм-турумдагы айырмачылыктарды аныктоодо колдонсо болот бирдей милдеттерди максат кылган китепканалардын. Мисалы, эл аралык домендик аталыштарды чечмелөө милдетин аткарган Python пакетинин "idna" жана "libidn2" китепканасынын жыйынтыктоочу текшерүүсү алардын ар дайым эле бирдей натыйжа бербей тургандыгын аныктады.

Atheris колдонуунун эң мыкты ыкмаларынын бири - дифференциалдык диффузорлор. Бул бир эле нерсени жасоого арналган эки китепкананын жүрүм-турумундагы айырмачылыктарды издеген фузерлер. Atheris менен таңгакталган мисал фузерлердин бири Pythonдун "idna" таңгагын C "libidn2" таңгагы менен салыштыруу үчүн так ушундай кылат.

Тактап айтканда, домен Юникод тизмектерин колдонгон болсо, анда "idna" жана "libidn2" эл аралык домендик аталышты ар кандай хостторго которушкан.

Жалпысынан, Atheris таза Python кодунда пайдалуу, эгерде сизде "туура" жүрүм-турум кандай экендигин билдирүүгө же жок дегенде кайсы жүрүм-турумдун туура эместигин билдирүүгө болот. Бул китепкананын чыгарылышынын тактыгын баалоочу фузердеги ыңгайлаштырылган код сыяктуу татаал же күтүлбөгөн өзгөчө кырдаалдардын жоктугун текшергендей болушу мүмкүн.

Муну эске алуу маанилүү бүдөмүк тесттер киргизүү маалыматтарынын туш келди айкалыштарынын агымын пайда кылат, чыныгы маалыматтарга жакын (мисалы, кокус теги параметрлери бар HTML баракчалары, анормалдуу аталыштагы файлдар же сүрөттөр ж.б.) жана процесстеги мүмкүн болгон мүчүлүштүктөрдү оңдоо.

Эгерде кандайдыр бир ырааттуулук өзгөчө кырдаалга алып келсе же күтүлгөн жоопко дал келбесе, анда бул жүрүм-турум мүчүлүштүктү же аялуу жерди көрсөтөт.

Акыры, айтылгандай Atheris 2.7 жана 3.3+ версияларында Python коду менен иштейт, Google 3.8+ жана CPython үчүн жазылган жергиликтүү кеңейтүүлөрдү колдонууну сунуш кылат.

Windows азырынча колдоого алынган операциялык тутумдардын катарына кире элек, ошондуктан азырынча кыймылдаткыч Linux жана Mac OS X колдонуучуларын гана кызыктырат.

Аны ушул аянтчаларда колдонуу үчүн, иштеп чыгуучулар Clang компиляторунун учурдагы версиясын орнотушу керек.

Эгер сиз бул жөнүндө көбүрөөк билгиңиз келсе, сиз баштапкы жазуунун текшере аласыз төмөнкү шилтеме.


Макаланын мазмуну биздин принциптерге карманат редакциялык этика. Ката жөнүндө кабарлоо үчүн чыкылдатыңыз бул жерде.

Комментарий биринчи болуп

Комментарий калтырыңыз

Сиздин электрондук почта дареги жарыяланбайт. Милдеттүү талаалар менен белгиленет *

*

*

  1. Маалыматтар үчүн жооптуу: Мигель Анхель Гатан
  2. Маалыматтын максаты: СПАМды көзөмөлдөө, комментарийлерди башкаруу.
  3. Мыйзамдуулук: Сиздин макулдугуңуз
  4. Маалыматтарды берүү: Маалыматтар үчүнчү жактарга юридикалык милдеттенмелерден тышкары билдирилбейт.
  5. Маалыматтарды сактоо: Occentus Networks (ЕС) тарабынан уюштурулган маалыматтар базасы
  6. Укуктар: Каалаган убакта маалыматыңызды чектеп, калыбына келтирип жана жок кыла аласыз.