Atheris, Python код турших хэрэгсэл

Google-ийг нээлээ саяхан гарсан Atheris төсөл, нь хөгжил юм нээлттэй эхийн хэрэгслүүдийн багц төрөлжсөн Python кодын туршилтын хувьд болон C / C ++ дээр бичсэн CPython-д зориулсан өргөтгөлүүд.

Төсөл libFuzzer дээр суурилсан хөдөлгүүр ашигладаг нэмэлт хаяг илрүүлэхийн тулд хаяг ариутгагч ба тодорхойгүй зан үйлийг ариутгагч хэрэгсэлтэй хамт ашиглаж болно. Код нь Apache 2.0 лицензийн дор нээлттэй байна.

Google Atheris-ийн тухай

Google Atheris-ийн үгээр бол энэ нь Python код болон уугуул өргөтгөлүүдээс автоматаар алдаа олоход хэрэглэгддэг хэрэгсэл юм. Атерис бол 'хамрах хүрээний' хөлдөгч юм. Энэ нь Атерис таны нэвтрүүлгийг үзэж байхдаа янз бүрийн оролтуудыг удаа дараа туршиж үзээд сонирхолтой замыг олохыг хичээдэг гэсэн үг юм.

Python 2.7 ба Python 3.3+ програмын кодыг хянахыг дэмжиж байнаГэхдээ бүрэн удирдамжаар хамрагдахын тулд Python 3.8 ба 3.9 салбаруудыг ашиглахыг зөвлөж байна.

Энэ явцад Атерис оролтын өгөгдлийн боломжит хослолуудын жагсаалтыг гаргаж, тайлан гаргадаг илэрсэн бүх гэмтэл, илрүүлээгүй үл хамаарах зүйлсийн талаар.

Жишээлбэл, Atheris дахь YAML задлах санг шалгахдаа бүхэл тоон утгын оронд "-_" -г зааж өгөх эсвэл түлхүүрийн оронд жагсаалтыг ашиглах гэх мэт зарим YAML байгуулалтууд нь YAMLE стандарт алдааг алдаатай байна.

Fuzz тест нь програмчлалын алдааг олж мэдэх сайн арга юм. Эдгээр илрүүлж болох алдаануудын ихэнх нь аюулгүй байдалд ноцтой нөлөөлдөг. Google энэ аргыг ашиглахдаа олон мянган аюулгүй байдлын эмзэг байдал болон бусад алдааг олж илрүүлжээ. Fuzzing нь C эсвэл C ++ гэх мэт төрөлх хэл дээр хэрэглэгддэг уламжлалтай боловч өнгөрсөн жил бид шинэ Python фузинг хөдөлгүүрийг бүтээсэн. Өнөөдөр бид Atheris хөдөлгүүрийг нээлттэй эх үүсвэр болгон гаргав.

Атерис зан үйлийн ялгааг тодорхойлоход ашиглаж болно ижил зорилтуудыг чиглүүлдэг номын сангууд. Жишээлбэл, олон улсын домэйн нэрнүүдийн декодчилох ажлыг гүйцэтгэдэг Python багц "idna" болон "libidn2" номын сангийн тойм шалгалтаар тэдгээр нь үргэлж ижил үр дүнд хүрдэггүй болохыг тогтоожээ.

Atheris-ийн хамгийн сайн хэрэглээний нэг бол дифференциал тархалт юм. Эдгээр нь ижил зүйлийг хийх гэсэн хоёр номын сангийн зан үйлийн ялгааг олж хардаг fuzzers юм. Atheris-тэй цуг нийлүүлсэн нэг жишээ хөлдөгч нь Python-ийн "idna" багцыг C "libidn2" багцтай харьцуулахын тулд яг үүнийг хийдэг.

Тодруулбал, домэйн нь Юникодын дарааллыг ашигласан бол "idna" ба "libidn2" нь олон улсын домэйн нэрийг өөр хостууд болгон хөрвүүлсэн болно.

Ерөнхийдөө Atheris нь цэвэр "Python" кодонд хэрэгтэй бөгөөд "зөв" зан чанар гэж юу болохыг илэрхийлэх эсвэл ядаж ямар зан үйл нь зөв биш болохыг илэрхийлэх чадвартай байдаг. Энэ нь номын сангийн үр дүнгийн нарийвчлалыг үнэлдэг фузер дээрх өөрчлөн тохируулсан код шиг төвөгтэй, эсвэл гэнэтийн үл хамаарах зүйл оруулаагүй эсэхийг шалгахад хялбар байдаг.

Үүнийг анхаарч үзэх нь чухал юм fuzzing тестүүд нь оролтын өгөгдлийн бүх төрлийн санамсаргүй хослолуудын урсгалыг үүсгэдэг. бодит өгөгдөлд ойрхон (жишээлбэл, санамсаргүй шошгоны параметрүүд бүхий html хуудсууд, хэвийн бус гарчигтай файлууд эсвэл зургууд гэх мэт) ба үйл явцад гарч болзошгүй алдаануудыг засах.

Хэрэв ямар нэгэн дараалал нь үл хамаарах зүйлд хүргэх эсвэл хүлээгдэж буй хариутай тохирохгүй байвал энэ үйлдэл нь алдаа эсвэл эмзэг байдлыг илтгэх магадлалтай.

Эцэст нь дурьдсанчлан Atheris нь 2.7 ба 3.3+ хувилбаруудад Python кодтой ажилладаг, Google нь CPython-д зориулж бичсэн 3.8+ болон уугуул өргөтгөлүүдийг ашиглахыг хатуу зөвлөж байна.

Windows нь дэмжигдсэн үйлдлийн системүүдийн дунд хараахан ороогүй байнаТиймээс хөдөлгүүр нь одоогоор зөвхөн Линукс болон Mac OS X хэрэглэгчдийг сонирхож байна.

Эдгээр платформ дээр ашиглахын тулд хөгжүүлэгчид Clang хөрвүүлэгчийн урд талын хувилбарыг суулгасан байх ёстой.

Хэрэв та энэ талаар илүү ихийг мэдэхийг хүсч байвал, та анхны тэмдэглэлийг дараах холбоос.


Нийтлэлийн агуулга нь бидний зарчмуудыг баримталдаг редакцийн ёс зүй. Алдааны талаар мэдээлэхийн тулд товшино уу энд байна.

Сэтгэгдэл бичих эхний хүн бай

Сэтгэгдэлээ үлдээгээрэй

Таны и-мэйл хаяг хэвлэгдсэн байх болно. Шаардлагатай талбарууд нь тэмдэглэгдсэн байна *

*

*

  1. Мэдээллийг хариуцах: Мигель Анхель Гатан
  2. Мэдээллийн зорилго: СПАМ-ыг хянах, сэтгэгдлийн менежмент.
  3. Хууль ёсны байдал: Таны зөвшөөрөл
  4. Мэдээллийн харилцаа холбоо: Хуулийн үүргээс бусад тохиолдолд мэдээллийг гуравдагч этгээдэд дамжуулахгүй.
  5. Өгөгдөл хадгалах: Occentus Networks (ЕХ) -с зохион байгуулсан мэдээллийн сан
  6. Эрх: Та хүссэн үедээ мэдээллээ хязгаарлаж, сэргээж, устгаж болно.