ათერი, Python Code Testing Toolkit

Google- მა გამოაქვეყნა ცოტა ხნის წინ გაათავისუფლეს ათეროსის პროექტი, რაც განვითარებაა ღია წყაროების კომპლექტი სპეციალიზირებული Python კოდის fuzzing ტესტებისთვის და Cython– ის გაფართოებები, დაწერილი C / C ++.

პროექტი იყენებს libFuzzer– ზე დაფუძნებულ ძრავას და შეიძლება გამოყენებულ იქნეს მისამართის სანიტარიზატორთან და განუსაზღვრელი ქცევის საწინააღმდეგო საშუალებებთან ერთად დამატებითი შეცდომების დასადგენად. კოდი ღიაა Apache 2.0 ლიცენზიით.

Google Atheris- ის შესახებ

Google Atheris- ის სიტყვებით, ეს არის ინსტრუმენტარიუმი, რომლის საშუალებითაც შეგიძლიათ ავტომატურად იპოვოთ შეცდომები Python კოდში და მშობლიურ დანართებში. Atheris არის "გაშუქებით გამოწვეული" ფუზა, რაც ნიშნავს, რომ Atheris განმეორებით შეეცდება თქვენს შოუს სხვადასხვა შენატანებს, როდესაც ის უყურებს გაშვებას და შეეცდება საინტერესო ბილიკები მოძებნოს.

კოდის მიმოხილვა Python 2.7 და Python 3.3+ მხარდაჭერილია, მაგრამ სრული მართვადი დაფარვისთვის რეკომენდებულია Python 3.8 და 3.9 ფილიალების გამოყენება, რომლებიც ახლა მხარს უჭერენ ოპკოდების სტატისტიკას ოპკოდების მიხედვით.

Პროცესში, ათერისი ჩამოთვლის მონაცემების შესაძლო კომბინაციებს და ქმნის ანგარიშს ყველა გამოვლენილ ხარვეზზე და გამოვლენილ გამონაკლისზე.

მაგალითად, Atheris- ში YAML- ის ანალიზის ბიბლიოთეკის შემოწმებისას აღმოჩნდა, რომ YAML- ის ზოგიერთ სტრუქტურაში, მაგალითად, "-_" -ს დაზუსტება მთელი რიცხვის ნაცვლად ან გასაღების ნაცვლად სიის გამოყენება, მოულოდნელი გამონაკლისი YAMLE შეცდომაა სტანდარტული შეცდომა.

Fuzz ტესტი არის ცნობილი ტექნიკა პროგრამირების შეცდომების აღმოჩენისთვის. ამ შესამჩნევი შეცდომებიდან ბევრს სერიოზული გავლენა აქვს უსაფრთხოებაზე. Google- მა ამ ტექნიკის გამოყენებისას ათასობით უსაფრთხოების სისუსტე და სხვა შეცდომები იპოვა. ფუჟინგი ტრადიციულად გამოიყენება მშობლიურ ენებში, როგორიცაა C ან C ++, მაგრამ გასულ წელს ჩვენ შევქმენით ახალი Python ძრავის ძრავა. დღეს ჩვენ გამოვუშვით Atheris fuzzing ძრავა, როგორც ღია წყარო.

ათერი ასევე შეიძლება გამოყენებულ იქნას ქცევაში არსებული განსხვავებების დასადგენად ბიბლიოთეკების, რომლებიც მიზნად ისახავს იდენტურ ამოცანებს. მაგალითად, Python პაკეტის "idna" და ბიბლიოთეკის "libidn2" შემაჯამებელმა შემოწმებამ, რომელიც ასრულებს ინტერნაციონალიზებული დომენური სახელების დეკოდირების ამოცანას, აღმოჩნდა, რომ ისინი ყოველთვის ერთსა და იმავე შედეგს არ იძლევა.

Atheris– ის ერთ – ერთი საუკეთესო გამოყენებაა დიფერენციალური დიფუზორებისთვის. ეს არის გამათბობლები, რომლებიც ეძებენ განსხვავებებს ორი ბიბლიოთეკის ქცევაში, რაც მიზნად ისახავს იგივე საქმის გაკეთებას. Atheris- ით შეფუთული ერთ-ერთი მაგალითი, რომელიც ზუსტად ამას აკეთებს, აკეთებს ამას, რომ შეადაროს Python- ის "idna" პაკეტი C "libidn2" პაკეტს.

კერძოდ, თუ დომენმა გამოიყენა უნიკოდის მიმდევრობა, მაშინ "idna" და "libidn2" გადააკეთეს ინტერნაციონალიზებული დომენის სახელი სხვადასხვა ჰოსტად.

ზოგადად, Atheris სასარგებლოა სუფთა Python კოდში, სანამ მას აქვს საშუალება გამოხატოს თუ რა არის "სწორი" ქცევა, ან თუნდაც გამოხატოს რომელი ქცევა ნამდვილად არ არის სწორი. ეს შეიძლება იყოს ისეთივე რთული, როგორც მორგებული კოდი fuzzer- ში, რომელიც აფასებს ბიბლიოთეკის პროდუქტის სიზუსტეს, ან ისეთივე მარტივი, როგორც შემოწმება, რომ მოულოდნელი გამონაკლისები არ არის აღებული.

მნიშვნელოვანია გავითვალისწინოთ ის fuzzing ტესტები წარმოქმნის ყველა სახის შემთხვევითი კომბინაციის ნაკადის მონაცემებს, ფაქტობრივ მონაცემებთან ახლოს (მაგ. html გვერდები შემთხვევითი ნიშნის პარამეტრებით, ფაილები ან სურათები არანორმალური სათაურით და ა.შ.) და დააფიქსირეთ შესაძლო ხარვეზები ამ პროცესში.

თუ რომელიმე თანმიმდევრობა გამოიწვევს გამონაკლისს ან არ ემთხვევა მოსალოდნელ პასუხს, ეს ქცევა, სავარაუდოდ, მიუთითებს შეცდომაზე ან მოწყვლადობაზე.

დაბოლოს, როგორც აღვნიშნეთ Atheris მუშაობს Python კოდით 2.7 და 3.3+ ვერსიებში, თუმცა Google მკაცრად გირჩევთ გამოიყენოთ 3.8+ და ადგილობრივი გაფართოებები, რომლებიც დაწერილია CPython– ისთვის.

Windows ჯერ არ არის მხარდაჭერილ ოპერაციულ სისტემებს შორის, ამიტომ ძრავა ამჟამად მხოლოდ Linux და Mac OS X მომხმარებლების ინტერესს იწვევს.

ამ პლატფორმებზე გამოსაყენებლად, დეველოპერებს უნდა ჰქონდეთ დაინსტალირებული Clang შემდგენლის წინა ვერსია.

თუ ამის შესახებ მეტი გსურთორიგინალი შენიშვნა შეგიძლიათ ნახოთ აქ შემდეგი ბმული.


სტატიის შინაარსი იცავს ჩვენს პრინციპებს სარედაქციო ეთიკა. შეცდომის შესატყობინებლად დააჭირეთ ღილაკს აქ.

იყავი პირველი კომენტარი

დატოვე კომენტარი

თქვენი ელფოსტის მისამართი გამოქვეყნებული არ იყო.

*

*

  1. მონაცემებზე პასუხისმგებელი: მიგელ ანგელ გატონი
  2. მონაცემთა მიზანი: სპამის კონტროლი, კომენტარების მართვა.
  3. ლეგიტიმაცია: თქვენი თანხმობა
  4. მონაცემთა კომუნიკაცია: მონაცემები არ გადაეცემა მესამე პირებს, გარდა სამართლებრივი ვალდებულებისა.
  5. მონაცემთა შენახვა: მონაცემთა ბაზა, რომელსაც უმასპინძლა Occentus Networks (EU)
  6. უფლებები: ნებისმიერ დროს შეგიძლიათ შეზღუდოთ, აღადგინოთ და წაშალოთ თქვენი ინფორმაცია.