Софтуерните уязвимости са сериозен проблем в киберсигурността. Те позволяват да бъдат атакувани софтуерни продукти и когато тези продукти са свързани към иначе защитени мрежи, те могат да осигурят входна точка за хакери.

Всички професионални софтуерни продукти са щателно тествани преди пускането им. За съжаление, уязвимостите все още са често срещано явление. Един от начините да откриете допълнителни уязвимости е да използвате техника за тестване на софтуер, известна като fuzzing.

И така, какво е размиване и как работи?

Какво е Fzzing?

Fuzzing е автоматизирана техника за тестване на софтуер, която се опитва да намери уязвимости с помощта на произволни входове.

Софтуерът често се държи непредвидимо, когато потребителят въведе вход, различен от това, което е поискано. Размиването е практиката да се въвеждат големи количества неочаквани входове и да се записва какво се случва. Идеята е, че след това потребителят може да наблюдава софтуера и да определи дали има или не уязвимости.

Fuzzing се използва за тестване на софтуерни продукти и от специалисти по сигурността, за да се определи дали мрежата е защитена. Използва се и от хакери, които практикуват fuzzing, за да намерят уязвимости, които те самите могат да използват.

instagram viewer

Уязвимостите, открити чрез размиване, варират значително. Неочакван вход може да доведе до просто срив на софтуера. Но може също да върне лична информация или да позволи на потребителя да получи достъп до части от софтуера, които иначе биха били извън ограниченията.

Какви са предимствата на Fuzing?

Fuzzing е само един от многото начини, по които софтуерните продукти могат да бъдат тествани за уязвимости. Популярен е, защото:

  • Фазингът е напълно автоматизиран. След като е настроена fuzzing програма, тя може да продължи да търси уязвимости без човешка помощ.
  • Fuzzing може да открие уязвимости, които други техники за тестване на софтуер не откриват. Поради това често се използва в допълнение към ръчните техники.
  • Фазингът често се използва от хакери за намиране на уязвимости от нулев ден. Използването на същите техники като хакерите позволява на разработчиците да открият уязвимости от нулев ден, преди да го направят.

Как работи Fuzing?

Инструментът, използван за размиване, обикновено има три компонента. Често ги наричат ​​поет, куриер и оракул.

Поетът

Поетът стартира процеса и е отговорен за генерирането на тестов случай. Тестовият случай е дълъг списък от потенциални входове.

Куриерът

Куриерът вмъква всички произволни входове в целевия софтуер. Fuzzers са проектирани да правят това автоматично, позволявайки на големи количества входове да бъдат тествани в насипно състояние.

Оракулът

Оракулът проверява дали някой от входовете кара софтуера да прави нещо различно от това, за което е предназначен. Ако размиването се извършва за законни цели, поведението може да бъде възпроизведено и коригирано. Или ако fuzzing се извършва от хакер и неочакваното поведение е полезно, то може да се използва за злонамерени цели.

Как нападателите използват Fuzing?

Fuzzing е популярна техника сред хакерите, защото им позволява да намират уязвимости в софтуера без достъп до изходния код. Тъй като размиването е автоматизирано, то също е лесно за изпълнение. Ако хакер открие уязвимост, той може да успее да извърши следните атаки.

DDoS атаки

Ако fuzzing открие, че определени входове изискват дълго време за обработка, тази информация може да се използва за стартиране на DDoS атака. DDoS атака включва изпращане на толкова много заявки към система, че тя спира да функционира. Fuzzing позволява заявките да бъдат пригодени така, че да изискват най-много системни ресурси за отговор.

SQL инжекция

Атака с SQL инжекция е когато злонамерени SQL изрази се изпращат към приложение. Ако тези изявления не са добре дезинфекцирани, те могат да позволят на нападателя да взаимодейства с базата данни. Това може да им позволи да откраднат данни или да ги променят. Fuzzing е ефективен инструмент за опити за големи количества SQL изрази и определяне дали има положителен отговор.

Препълване на буфера

Атака за препълване на буфер е когато към буфера на програмата се добавят повече данни, отколкото може да обработи. В този сценарий е възможно хакер да накара тази програма да изпълни зловреден код. Това може да се използва за кражба на данни или за получаване на неоторизиран достъп. Fuzzing се използва за намиране на входове, които могат да причинят препълване на буфера.

Видове размиване

Инструментите за размиване могат да бъдат класифицирани въз основа на това как се генерират тестови случаи и колко много се знае за системата.

Тъп срещу Умен

Тъпото размиване просто добавя големи количества произволни входове. Той не избира входове, които е най-вероятно да бъдат приети от приложението. Това го прави по-лесно за внедряване, без да знаете нищо за софтуера; но също така е много неефективна, тъй като повечето входове ще бъдат отхвърлени.

Интелигентното размиване генерира входни данни, които приложението вероятно ще приеме. Изисква потребителят да разбере какъв входен формат е приемлив и след това да генерира големи количества входове в този формат. Интелигентното размиване изисква повече усилия и познания за продукта за прилагане, но е значително по-ефективно.

Мутационен vs. Поколенчески

Мутационните fuzzer приемат вход, който преди това е бил приет, и правят малки промени в него. Това позволява да се генерират входни данни, които е вероятно да бъдат приети без познаване на приетия формат.

Поколенията fuzzer създават изцяло нови входни данни въз основа на това, което е известно за приетия формат.

Бяла кутия срещу Черна кутия

Използва се размиване на черна кутия без никаква информация за приложението, което се тества. Той е по-малко ефективен от размиването на бяла кутия, но може да се приложи към всяко приложение без достъп до изходния код. Това го прави популярен сред хакерите.

Размиването на бялата кутия използва информация за приложението, което се тества, за да създаде входни данни, които е най-вероятно да бъдат приети и да доведат до уязвимости. Използва се предимно от разработчиците на софтуер, защото е по-ефективен от размиването на черна кутия.

Fuzzing е мощен метод за тестване на софтуер, който се използва от разработчици на софтуер, специалисти по сигурността и хакери. Изисква минимални усилия за внедряване и е в състояние да открие уязвимости, които другите техники за тестване на софтуер не правят.

Това е особено важно от гледна точка на сигурността, тъй като често се използва за откриване на уязвимости от нулев ден. Тези уязвимости могат да бъдат открити и коригирани от специалисти по сигурността, или открити и експлоатирани от хакери.