Што е Fuzzing?

Што е замаглување

Вовед: Што е Fuzzing?

Во 2014 година, кинески хакери хакирани во здравствените системи на заедницата, профитабилен синџир на болници во САД и украл податоци на 4.5 милиони пациенти. Хакерите ја искористија грешката наречена Heartbleed која беше откриена во библиотеката за криптографија OpenSSL неколку месеци пред хакирањето.

Heartbleed е пример за класа на вектори за напад кои им овозможуваат на напаѓачите да пристапат до целта со испраќање на неформирани барања доволно валидни за да поминат прелиминарни проверки. Додека професионалците кои работат на различни делови од апликацијата даваат се од себе за да ја осигураат нејзината безбедност, невозможно е да се помисли на сите аголни футроли што би можеле да ја скршат апликацијата или да ја направат ранлива за време на развојот.

Тука доаѓа „заматувањето“.

Што е збунувачки напад?

Fuzzing, fuzz testing, или fuzzing attack, е автоматизирана техника за тестирање на софтверот што се користи за внесување случајни, неочекувани или невалидни податоци (наречени fuzz) во програма. Програмата се следи за невообичаени или неочекувани однесувања како што се прелевање на баферот, паѓања, протекување на меморијата, виси на нишки и прекршувања на пристапот за читање/запишување. Алатката за замаглување или fuzzer потоа се користи за да се открие причината за необичното однесување.

Fuzzing се заснова на претпоставката дека сите системи содржат грешки кои чекаат да бидат откриени и може да им се даде доволно време и ресурси за да го сторат тоа. Повеќето системи имаат многу добри парсери или спречување на валидација на влезови компјутерски криминалци од искористување на какви било хипотетички грешки во програмата. Сепак, како што споменавме погоре, покривањето на сите аголни случаи за време на развојот е тешко.

Fuzzers се користат на програми кои примаат структуриран влез или имаат некаква граница на доверба. На пример, програма што прифаќа PDF-датотеки ќе има одредена валидација за да се осигура дека датотеката има екстензија .pdf и парсер за обработка на PDF-датотеката.

Ефективниот fuzzer може да генерира доволно валидни влезови за да ги помине овие граници, но сепак доволно невалидни за да предизвикаат неочекувано однесување подалеку од програмата. Ова е важно затоа што самото тоа што можете да ги поминете валидациите не значи многу ако не се предизвика дополнителна штета.

Fuzzers откриваат вектори за напад многу слични на и вклучуваат слични на SQL вбризгување, скриптирање меѓу страници, прелевање на баферот и напади на одбивање на услугата. Сите овие напади се резултат на внесување на неочекувани, невалидни или случајни податоци во системот. 

 

Видови Fuzzers

Fuzzers може да се класифицираат врз основа на некои карактеристики:

  1. Нападни цели
  2. Метод на создавање Fuzz
  3. Свесност за влезната структура
  4. Свесност за структурата на програмата

1. Нападни цели

Оваа класификација се заснова на видот на платформата за тестирање на fuzzer. Fuzzers најчесто се користат со мрежни протоколи и софтверски апликации. Секоја платформа има одреден тип на влез што ги прима, и затоа бара различни типови fuzzers.

На пример, кога се работи со апликации, сите обиди за замаглување се случуваат на различните влезни канали на апликацијата, како што се корисничкиот интерфејс, терминалот на командната линија, формуларите/внесувањата на текст и подигањата на датотеки. Значи, сите влезови генерирани од fuzzer треба да одговараат на овие канали.

Fuzzers кои се занимаваат со комуникациски протоколи треба да се справат со пакети. Fuzzers насочени кон оваа платформа може да генерираат фалсификувани пакети, па дури и да дејствуваат како прокси за да ги менуваат пресретнатите пакети и да ги репродуцираат.

2. Метод на создавање Fuzz

Fuzzers, исто така, може да се класифицираат врз основа на тоа како тие создаваат податоци за заматување. Историски гледано, fuzzers создавале fuzz со генерирање случајни податоци од нула. Така првично го правеше професорот Бартон Милер, иницијаторот на оваа техника. Овој тип на фузер се нарекува а fuzzer базиран на генерации.

Сепак, иако теоретски може да се генерираат податоци што ќе ја заобиколат границата на доверба, ќе биде потребно значително време и ресурси за да се направи тоа. Затоа овој метод обично се користи за системи со едноставни влезни структури.

Решението за овој проблем е да се мутираат податоци за кои се знае дека се валидни за да се генерираат податоци доволно валидни за да се помине границата на доверба, но сепак доволно невалидни за да предизвикаат проблеми. Добар пример за ова е а DNS fuzzer кој зема име на домен и потоа генерира голема листа на имиња на домени за да открие потенцијално злонамерни домени кои го таргетираат сопственикот на наведениот домен.

Овој пристап е попаметен од претходниот и значително ги стеснува можните пермутации. Fuzzers кои го користат овој метод се нарекуваат fuzzer-базирани на мутации

Постои трет понов метод кој користи генетски алгоритми за да се спојат со оптималните нејасни податоци потребни за искоренување на ранливостите. Работи со постојано рафинирање на неговите нејасни податоци, земајќи ги предвид перформансите на секој тест податок кога се внесуваат во програма. 

Збировите на податоци со најлоши перформанси се отстранети од базенот на податоци, додека најдобрите се мутирани и/или комбинирани. Новата генерација на податоци потоа се користи за повторно fuzz тестирање. Овие fuzzers се наведени како фузери засновани на еволутивни мутации.

3. Свесност за структурата на влезот

Оваа класификација се заснова на тоа дали fuzzer е свесен и активно ја користи влезната структура на програмата при генерирање fuzz податоци. А нем фузер (Fuzzer кој не е свесен за структурата на влезот на програмата) генерира fuzz на главно случаен начин. Ова може да вклучува и генерации и фузери базирани на мутации. 


Доколку се обезбеди fuzzer со влезниот модел на програмата, fuzzer потоа може да се обиде да генерира или мутира податоци така што ќе одговараат на дадениот влезен модел. Овој пристап дополнително ја намалува количината на ресурси потрошени за генерирање невалидни податоци. Таков fuzzer се нарекува a паметен fuzzer.

4. Свесност за структурата на програмата

Fuzzers, исто така, може да се класифицираат врз основа на тоа дали се свесни за внатрешната работа на програмата што ја заматуваат и ја користат таа свест за да помогнат во генерирањето на fuzz податоци. Кога fuzzers се користат за тестирање на програма без да се разбере нејзината внатрешна структура, тоа се нарекува тестирање на црна кутија. 

Fuzz-податоците генерирани за време на тестирањето на црната кутија обично се случајни, освен ако fuzzer е еволутивен fuzzer базиран на мутација, каде што „учи“ со следење на ефектот од неговото заматување и користење на тоа информации да го рафинира својот збир на fuzz податоци.

Тестирањето со бела кутија од друга страна користи модел на внатрешната структура на програмата за да генерира fuzz податоци. Овој пристап му дозволува на fuzzer да стигне до критичните локации во програмата и да ја тестира. 

Популарни алатки за замаглување

Има многу замаглувања алатки таму се користи од тестери за пенкало. Некои од најпопуларните се:

Ограничувања на заматување

Иако Fuzzing е навистина корисна техника за тестирање на пенкало, таа не е без свои грешки. Некои од нив се:

  • Потребно е доста долго време да се кандидира.
  • Падовите и другите неочекувани однесувања откриени за време на тестирањето на програмата со црна кутија може да бидат тешки, ако не и невозможно да се анализираат или дебагираат.
  • Создавањето шаблони за мутации за паметни fuzzer-базирани на мутации може да одземе многу време. Понекогаш, можеби дури и не е можно поради тоа што влезниот модел е сопствен или непознат.

 

Сепак, тоа е прилично корисна и неопходна алатка за секој кој сака да открие грешки пред лошите момци.

Заклучок

Fuzzing е моќна техника за тестирање со пенкало што може да се користи за откривање на пропусти во софтверот. Постојат многу различни типови на fuzzers, а нови fuzzer се развиваат постојано. Иако fuzzing е неверојатно корисна алатка, таа има свои ограничувања. На пример, fuzzers можат да најдат само толку многу пропусти и тие можат да бидат доста интензивни за ресурси. Меѓутоа, ако сакате сами да ја испробате оваа неверојатна техника, имаме а бесплатно DNS Fuzzer API што можете да го користите на нашата платформа. 

Па што чекаш? 

Почнете да се замајувате денес!

Гугл и митот за инкогнито

Гугл и митот за инкогнито

Google и митот за инкогнито На 1 април 2024 година, Google се согласи да ја реши тужбата со уништување на милијарди записи со податоци собрани од режимот Инкогнито.

Прочитај повеќе "