Американдық анық емес лоп (фузер) - American fuzzy lop (fuzzer)

Американдық бұлыңғыр лоп
Тест бағдарламасында жұмыс істейтін американдық бұлыңғыр лоптың афл-фузы
Тест бағдарламасында жұмыс істейтін американдық бұлыңғыр лоптың афл-фузы
ӘзірлеушілерМихал Залевский
Бастапқы шығарылым12 қараша 2013; 7 жыл бұрын (2013-11-12)
Тұрақты шығарылым
2.56b / 26 қыркүйек 2019 ж; 14 ай бұрын (2019-09-26)[1]
Репозиторий Мұны Wikidata-да өңдеңіз
ЖазылғанC, құрастыру
Операциялық жүйеКросс-платформа
ТүріФузер
ЛицензияApache лицензиясы  2.0
Веб-сайтlcamtuf.coredump.cx/ afl/

американдық бұлыңғыр лоп Бұл ақысыз бағдарламалық жасақтама фузер жұмыс істейді генетикалық алгоритмдер тиімді арттыру мақсатында кодты қамту туралы сынақ жағдайлары. Әзірге бұл маңыздыларды анықтауға көмектесті бағдарламалық жасақтама қателері бағдарламалық қамтамасыз етудің ондаған ірі жобаларында, соның ішінде X.Org сервері,[2] PHP,[3] OpenSSL,[4][5] pngcrush, bash,[6] Firefox,[7] БАЙЛАНЫС,[8][9] Qt,[10] және SQLite.[11]

американдық бұлыңғыр лоп 'с бастапқы код жарияланды GitHub. Оның атауы - қоян тұқымына сілтеме Америкалық Fuzzy Lop.

Әдеттегі қолдану

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

Осы алғашқы фазадан кейін AFL кіріс файлына әр түрлі модификацияларды қолдану арқылы нақты құбылу процесін бастайды. Бағдарлама тексерілген кезде апаттар немесе ілулі, бұл жаңа қатені табуды ұсынуы мүмкін, мүмкін қауіпсіздіктің осалдығы. Бұл жағдайда өзгертілген кіріс файлы пайдаланушыны әрі қарай тексеру үшін сақталады.

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

Ерекшеліктер

Бұлдыр қозғалтқыш

Белгіленген кірістегі AFL логотипі бір анимация түрінде біріктірілген.[12]

Бұлыңғыр қозғалтқыш американдық бұлыңғыр лоп бірнеше алгоритмдерді пайдаланады, олардың мақсаты күтпеген мінез-құлықты іске қосу, соның ішінде бит флиптерін немесе кіріс файлының байттарын шеткі жағдайларды тудыруы мүмкін әртүрлі бүтін сандармен ауыстыру.[13] Сонымен қатар, ол үлгілік кілт сөздерге негізделген тестілік жағдайларды жасай алады, бұл SQLite сияқты мәтіндік грамматиканы қолданатын бағдарламаларды анықтауға көмектеседі.[14] Бағдарлама кодының әртүрлі бөліктерін қолданатын сынақ жағдайлары, кейінірек мамандандырылған диагностикалық бағдарламалар үшін кіріс ретінде қолданыла алады. Фузуацияны орындау кезінде процесс белгіленген уақыт ішінде шықпаған кезде іліп қалуды анықтауға болады және егер сигналдарды өңдеуші процесті өлтіреді.

Анықталмаған кірісті тестіленген бағдарламаға стандартты енгізу арқылы немесе процестің командалық жолында көрсетілген кіріс файлы ретінде беруге болады. Желілік бағдарламаларды тоқтату қазіргі уақытта тікелей қолдауға ие емес, дегенмен кейбір жағдайларда бұл мәселені шешудің нақты мүмкіндіктері бар.[15]

Өнімділік ерекшеліктері

Қиындықтардың бірі американдық бұлыңғыр лоп секундына жүздеген процестің тиімді уылдырық шашуын шешуге тура келді. Кез-келген процесті нөлден бастаған алғашқы қозғалтқыштан басқа, американдық бұлыңғыр лоп қатты тәуелді болатын стандартты қозғалтқышты ұсынады шанышқы жүйелік қоңырау.[16] Мұны LLVM кейінге қалдырылған форксервер режимін немесе осыған ұқсас тұрақты режимді пайдалану арқылы жеделдетуге болады, бірақ бұл тексерілген бағдарламаны өзгертуге тура келеді.[17] Сондай-ақ, американдық бұлыңғыр лоп сол бағдарламаны желі арқылы анықтауға қолдау көрсетеді.

Пайдаланушы интерфейсі

американдық бұлыңғыр лоп ерекшеліктері түрлі-түсті командалық интерфейс нақты уақыт режиміндегі фузустық процесс туралы статистиканы көрсетеді. Әр түрлі параметрлер командалық жол опцияларымен немесе іске қосылуы мүмкін қоршаған ортаның айнымалылары. Бұдан басқа, бағдарламалар файлдардағы жұмыс уақытының статистикасын машинада оқылатын форматта оқи алады.

Коммуналдық бағдарламалар

Қосымша ретінде afl-fuzz және екілік аспапта қолдануға болатын құралдар, американдық бұлыңғыр лоп Fuzzing процесін бақылауға арналған утилиталық бағдарламалардың ерекшеліктері. Одан басқа, бар afl-cmin және afl-tmin, оны сынақ корпусын азайту үшін қолдануға болады. Бұл сынақ жағдайлары кезінде пайда болған кезде пайдалы болуы мүмкін afl-fuzz басқа фузерлер қолданатын еді.

Әдебиеттер тізімі

  1. ^ «Шығарылымдар - google / AFL». Алынған 7 қазан 2019 - арқылы GitHub.
  2. ^ «Кеңесші-2015-03-17». x.org.
  3. ^ «NVD - Толығырақ». nist.gov.
  4. ^ «NVD - Толығырақ». nist.gov.
  5. ^ «NVD - Толығырақ». nist.gov.
  6. ^ «CVE - CVE-2014-6278». mitre.org.
  7. ^ «CVE - CVE-2014-8637». mitre.org.
  8. ^ «Американдық Fuzzy Lop көмегімен серверді қалай анықтауға болады». Тез.
  9. ^ «CVE - CVE-2015-5477». mitre.org.
  10. ^ «[Хабарландыру] Qt жобасының қауіпсіздігі бойынша кеңес - Qt кескін пішімін өңдеудегі бірнеше осалдықтар». qt-project.org.
  11. ^ «SQLite қалай тексеріледі # 4.1.1. SQL Fuzz американдық Fuzzy Lop Fuzzer пайдалану». sqlite.org.
  12. ^ Залевский, Михал (2015-02-27). «Afl-fuzz логотипі». afl-users | Google топтары. Алынған 2019-07-25.
  13. ^ «Екіұдайлық стратегиялар: не жұмыс істейді, не істемейді». lcamtuf.blogspot.com.
  14. ^ «SQLite-те қателерді табу, қарапайым әдіс». lcamtuf.blogspot.com.
  15. ^ Технион. «Fuzzing nginx - afl-fuzz көмегімен осалдықтарды аулау». lolware.net.
  16. ^ «Кездейсоқ бағдарламаларды орындаусыз фузинг ()». lcamtuf.blogspot.com.
  17. ^ «Афл-фуздың аз танымал ерекшеліктері». lcamtuf блогы. 20 мамыр 2015 ж. Алынған 27 ақпан 2020.

Әрі қарай оқу