Atheris, Python кодын тексеру құралы

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

Жоба liFFuzzer негізіндегі қозғалтқышты қолданады және қосымша қателіктерді анықтау үшін мекен-жайларды тазарту құралымен және анықталмаған мінез-құлық тазарту құралдарымен бірге қолдануға болады. Код Apache 2.0 лицензиясы бойынша ашық.

Google Atheris туралы

Google Atheris сөзімен айтқанда, бұл Python коды мен жергілікті кеңейтімдерден қателерді автоматты түрде табуға болатын құрал. Atheris - бұл «басқарылатын» фузер, яғни Atheris бағдарламаңыздың жұмысына қарап, әртүрлі жолдарды бірнеше рет тексеріп, қызықты жолдарды табуға тырысады.

Python 2.7 және Python 3.3+ кодтарын шолуға қолдау көрсетіледі, бірақ толық, басшылыққа алу үшін біз Python 3.8 және 3.9 тармақтарын қолдануды ұсынамыз, олар қазір opcode статистикасын opcode арқылы қолдайды.

Процесс барысында Atheris енгізілген деректердің мүмкін комбинацияларын тізімдейді және есеп шығарады барлық анықталған ақаулар мен анықталмаған ерекшеліктер бойынша.

Мысалы, Atheris-те YAML талдау кітапханасын тексеру кезінде кейбір YAML конструкциялары, мысалы, бүтін санның орнына «-_» көрсету немесе кілттің орнына тізімді пайдалану, орнына күтпеген жағдайды шығаратыны анықталды YAMLE қателері стандартты.

Фуз-тест - бұл бағдарламалау қателіктерін анықтауға арналған белгілі әдіс. Осы анықталатын қателердің көпшілігі қауіпсіздіктің маңызды салдарына ие. Google осы техниканы қолдану кезінде мыңдаған қауіпсіздік осалдықтарын және басқа қателерді тапты. Фузинг дәстүрлі түрде C немесе C ++ сияқты ана тілдерінде қолданылады, бірақ өткен жылы біз жаңа Python фюзирлеу қозғалтқышын жасадық. Бүгін біз Atheris қозғалтқышын ашық көзі ретінде шығардық.

Атерис мінез-құлық айырмашылықтарын анықтау үшін де қолданыла алады бірдей міндеттерге бағытталған кітапханалар. Мысалы, интернационалдандырылған домендік атауларды декодтау міндетін орындайтын Python пакеті «idna» мен «libidn2» кітапханасын жиынтық тексеру нәтижесінде олар бірдей нәтиже бере бермейтіндігі анықталды.

Atheris-ті ең жақсы қолданудың бірі дифференциалды диффузорларға арналған. Бұл екі кітапхананың мінез-құлқында бір нәрсені жасауға арналған айырмашылықтарды іздейтін фузерлер. Atheris-ке оралған мысалдың бірі - мұны Python-ның «idna» пакетін C «libidn2» пакетімен салыстыру үшін жасайды.

Атап айтқанда, егер домен Юникод тізбегін қолданса, онда «idna» және «libidn2» интернационалдандырылған домен атауын әр түрлі хосттарға түрлендірді.

Тұтастай алғанда, Atheris таза Python кодында пайдалы, егер сізде «дұрыс» мінез-құлықты білдіретін тәсіл болса немесе ең болмағанда қандай мінез-құлық дұрыс емес екенін білдіретін болса. Бұл кітапхана шығысының дәлдігін бағалайтын фузердегі реттелетін код сияқты күрделі болуы мүмкін немесе күтпеген ерекшеліктердің болмауын тексеру сияқты қарапайым болуы мүмкін.

Мұны ескеру маңызды Fuzzing тестілері барлық енгізілетін мәліметтердің кездейсоқ тіркесімдерінің ағынын тудырады, нақты деректерге жақын (мысалы, кездейсоқ тэг параметрлері бар html парақтары, әдеттен тыс тақырыптары бар файлдар немесе кескіндер және т.б.) және мүмкін болатын ақауларды түзету.

Егер кез-келген реттілік ерекше жағдайға әкелсе немесе күтілетін жауапқа сәйкес келмесе, бұл мінез-құлық қатені немесе осалдығын көрсетеді.

Соңында, айтылғандай Atheris 2.7 және 3.3+ нұсқаларында Python кодымен жұмыс істейді, дегенмен, Google CPython үшін жазылған 3.8+ және жергілікті кеңейтімдерді қолдануға кеңес береді.

Windows әлі қолдайтын операциялық жүйелер қатарына кірмейді, сондықтан қозғалтқыш әзірге Linux және Mac OS X пайдаланушыларын ғана қызықтырады.

Оны осы платформаларда қолдану үшін әзірлеушілерде Clang компиляторының алдыңғы нұсқасы орнатылған болуы керек.

Егер сіз бұл туралы көбірек білгіңіз келсе, сіз жазбаның түпнұсқасын тексере аласыз келесі сілтеме.


Мақаланың мазмұны біздің ұстанымдарымызды ұстанады редакторлық этика. Қате туралы хабарлау үшін нұқыңыз Мұнда.

Бірінші болып пікір айтыңыз

Пікіріңізді қалдырыңыз

Сіздің электрондық пошта мекен-жайы емес жарияланады. Міндетті өрістер таңбаланған *

*

*

  1. Деректерге жауапты: Мигель Анхель Гатан
  2. Деректердің мақсаты: СПАМ-ны басқару, түсініктемелерді басқару.
  3. Заңдылық: Сіздің келісіміңіз
  4. Деректер туралы ақпарат: заңды міндеттемелерді қоспағанда, деректер үшінші тұлғаларға жіберілмейді.
  5. Деректерді сақтау: Occentus Networks (ЕО) орналастырған мәліметтер базасы
  6. Құқықтар: Сіз кез-келген уақытта ақпаратты шектей, қалпына келтіре және жоя аласыз.