Може ли изкуственият интелект да ви каже за уязвимостите на програмата? Може би, но може да не искате да влагате цялата си вяра в това, което се казва.
Тестването за проникване е тест за сигурност, който включва използване на уязвимости за откриване на други уязвимости в системата и изпълнение на зловреден код. Тези тестове са особено важни за защита срещу извличане на данни и предотвратяване на злоупотреби със сигурността.
Тестовете за проникване включват няколко техники, използвани за тестване на сигурността на мрежата. Тези техники включват сканиране на мрежата, защитни стени, системи за наблюдение и изкуствен интелект. Изкуственият интелект може да анализира тестове за сигурност, използвайки технологии, разработени за разкриване на мрежови уязвимости.
AI може да ви позволи да постигнете по-всеобхватни и ефективни резултати със специални алгоритми, предназначени за използване при тестове за проникване и автоматично изпълнявани тестове за сигурност.
Ползи от използването на AI за тестване за проникване
Днес бързото развитие на технологиите и непрекъснато нарастващите нужди на потребителите от сигурност разкриха необходимостта от използване на AI технологии в тестовете за сигурност. Използването на AI за подобряване на сигурността осигурява много по-бързи и по-ефективни резултати, елиминирайки необходимостта от отнемаща време работна сила за извършване на често персонализирани и сложни тестове за сигурност. AI помага за откриване на уязвимости възможно най-скоро. Той може също да извършва уникални и сложни тестове за сигурност, което улеснява откриването на уязвимости.
AI изглежда доста успешен, особено когато става въпрос за откриване и блокиране на атака. За да се обучи изкуствен интелект, са необходими много големи масиви от данни. Приложение с голям уеб трафик е благодетел в това отношение. Защото можете да накарате всеки входящ трафик да изглежда като набор от данни, който AI да използва. По този начин имате AI, който може да чете и анализирайте трафика на уеб приложения и откриване на заплахи. Това е един от най-простите примери, които могат да бъдат дадени.
Освен това може предварително да открие не само уеб трафик, но и много злонамерен софтуер за вашето приложение или устройство. Този метод вече е започнал да се използва от много защитни стени.
В допълнение към всичко това човешката грешка е един от най-големите проблеми в киберсигурността. Незначителна уязвимост на кода, която остава незабелязана, може да доведе до големи необратими проблеми със сигурността. Някои плъгини, които сканират за уязвимости в кода, се появиха с развитието на AI и те предупреждават разработчиците за такива проблеми. Досега те са показали известен успех в предотвратяването на човешки грешки.
В допълнение, времето за реакция, показано срещу заплаха, също е много важно. Когато е атакуван, отнема време за откриване на атаката, планиране на пътя за защита и стартиране на защитни системи. Но AI е много полезен в това отношение.
Ограничения на AI в киберсигурността
Използването на AI за целите на киберсигурността изисква идентифициране и анализиране на злонамерени, чисти и потенциално опасни приложения. Дори ако използвате много големи набори от данни, за да обучите алгоритъм, никога не можете да сте сигурни в резултата. В резултат на това не е безопасно да разчитате изцяло на машини и AI. Необходимо е да се поддържа AI технология с човешка намеса.
Някои производители на инструменти за сигурност твърдят, че решенията, задвижвани от машинно обучение, могат да анализират всеки екземпляр. Според производителите тези инструменти могат да откриват злонамерен софтуер само с помощта на математически средства. Това обаче едва ли е възможно.
Разбиването на кода на Енигма от Алън Тюринг по време на Втората световна война е много добър пример за това. Дори една перфектна машина не може да реши дали неизвестен вход може да причини нежелано поведение в бъдеще. Това доказателство може да се приложи в много различни области, включително киберсигурността.
Друго сериозно ограничение на приложенията за машинно обучение в киберсигурността е скрито в границите на моделите с изкуствен интелект. Например, машините са станали достатъчно умни, за да победят хората на шах.
Но шахът има определени правила. Шахматните двигатели не се отклоняват от тези правила. Що се отнася до киберсигурността, нападателите често нямат правила. Постоянно променящата се природа на цифровия пейзаж прави невъзможно създаването на защитно решение, което може да открие и блокира всички бъдещи заплахи.
Анализ на изходния код с ChatGPT
ChatGPT, разработен от OpenAI, навлезе сериозно в живота ни в много области. Както можеш задайте няколко въпроса и разговаряйте с ChatGPT, също така се опитва да ви помогне при проблеми с програмирането и софтуера. ChatGPT дори се опитва да направи анализ на изходния код, ако го погледнете от гледна точка на киберсигурността. Но ChatGPT все още е в начален стадий и ще отнеме известно време, за да започне да работи.
За да видите това по-добре, нека тестваме силата на ChatGPT. Например, по-долу е даден прост JavaScript код, който създава XSS уязвимост. Нека попитаме ChatGPT за този код и той да ни каже за евентуални уязвимости.
документ.write("Текущ URL адрес: " + документ.baseURI);
ChatGPT спомена ан XSS уязвимост в отговор. Това е доста добро начало. Но изходните кодове никога не са толкова прости. Така че нека се опитаме да направим примера малко по-сложен.
По-долу ще видите код, изготвен на езика за програмиране C. Този C код принадлежи на уязвимо приложение. Дори беше използван изцяло в приложение от реалния свят. Ако искате, можете да разгледате уязвимостите на изходния код в реалния свят, които Сонар, пуснат през 2022 г.
въглен *loggerPath *cmd;
невалиденrotateLog(){
въгленlogOld[PATH_MAX], logNew[PATH_MAX], клеймо за време[0x100];
време_t t;
време(&t);
strftime (времево клеймо, sizeof (времево клеймо), "%FT%T", gmtime(&t));
snprintf (logOld, sizeof (logOld), "%s/../logs/global.log", loggerPath);
snprintf (logNew, sizeof (logNew), "%s/../logs/global-%s.log", loggerPath, времево клеймо);
excl("/bin/cp", "/bin/cp", "-а", "--", logOld, logNew, НУЛА);
}вътросновен(вътр argc, въглен **argv){
if (argc != 2) {
printf("Използване: /opt/logger/bin/loggerctl \n");
връщане1;
}ако (setuid(0) == -1) връщане1;
ако (seteuid(0) == -1) връщане1;въглен *изпълним път = argv[0];
loggerPath = dirname (изпълним път);
cmd = argv[1];
ако (!strcmp (cmd, "завъртане")) rotateLog();
друго listCommands();
връщане0;
}
Уязвимостта тук е, че нападателят може да прави промени в някои файлове без администраторски привилегии. Нека видим как ChatGPT ще отговори на тази уязвимост в сигурността.
Основният проблем в този код е setuid, потребителско име (uid) и действителен потребителски идентификатор (euid). Въпреки това, без да навлизаме в твърде много технически подробности, основният момент, на който трябва да обърнете внимание, е следният ChatGPT не можа да открие тази тънка част. Може да разбере, че има проблем, но за съжаление не може да стигне до корена на проблема.
Чрез тези примери сте виждали реакции към различни езици за програмиране и уязвимости. Ако кодът е наистина прост и има очевидна дупка в сигурността, ChatGPT може да ви помогне. Но не трябва да разчитате изцяло на ChatGPT за анализ на изходния код, тестове за проникване и други анализи на сигурността.
Бъдещето на тестери за проникване
Изкуственият интелект ще бъде важна част от работата на тестерите за проникване в бъдеще. Например, тестерите за проникване няма да отделят време за ръчно откриване на злонамерена дейност и ще могат да извършват автоматично сканиране за сигурност.
AI също ще помогне за откриване и предприемане на действия срещу нови и по-сложни техники за атака за тестване за проникване. Но AI все още е като дете, което играе в парка и се нуждае от съвет от възрастен. В близко бъдеще експертите по киберсигурност и тестерите за проникване няма да останат лесно без работа.