Može li vam umjetna inteligencija reći o ranjivostima programa? Možda, ali možda ne želite potpuno vjerovati onome što piše.

Penetracijsko testiranje je sigurnosni test koji uključuje korištenje ranjivosti za otkrivanje drugih ranjivosti u sustavu i izvršavanje zlonamjernog koda. Ovi testovi su posebno važni za zaštitu od rudarenja podataka i sprječavanje sigurnosnih iskorištavanja.

Penetracijski testovi uključuju nekoliko tehnika koje se koriste za testiranje sigurnosti mreže. Te tehnike uključuju skeniranje mreže, vatrozidove, sustave sigurnosnog nadzora i umjetnu inteligenciju. Umjetna inteligencija može analizirati sigurnosne testove koristeći tehnologije razvijene za otkrivanje mrežnih ranjivosti.

AI vam može omogućiti postizanje sveobuhvatnijih i učinkovitijih rezultata s posebnim algoritmima dizajniranim za upotrebu u testovima prodora i automatski izvršenim sigurnosnim testovima.

Prednosti korištenja umjetne inteligencije za testiranje prodora

Današnji brzi razvoj tehnologije i sve veće sigurnosne potrebe korisnika otkrile su nužnost korištenja AI tehnologija u sigurnosnim testovima. Korištenje umjetne inteligencije za poboljšanje sigurnosti daje puno brže i učinkovitije rezultate, eliminirajući potrebu za radnom snagom koja oduzima puno vremena za izvođenje često prilagođenih i složenih sigurnosnih testova. AI pomaže u otkrivanju ranjivosti što je prije moguće. Također može izvoditi jedinstvene i složene sigurnosne testove, olakšavajući otkrivanje ranjivosti.

instagram viewer

Čini se da je umjetna inteligencija prilično uspješna, posebno kada je u pitanju otkrivanje i blokiranje napada. Za treniranje umjetne inteligencije potrebni su vrlo veliki skupovi podataka. Aplikacija s velikim prometom na webu dobra je u tom pogledu. Zato što možete učiniti da svaki dolazni promet izgleda kao skup podataka za korištenje umjetnom inteligencijom. Dakle, imate AI koji može čitati i analizira promet web aplikacije i otkriti prijetnje. Ovo je jedan od najjednostavnijih primjera koji se mogu dati.

Također može unaprijed detektirati ne samo internetski promet, već i mnogo zlonamjernog softvera za vašu aplikaciju ili uređaj. Ovu metodu već su počeli koristiti mnogi vatrozidi.

Uz sve navedeno, ljudska pogreška je jedan od najvećih problema u kibernetičkoj sigurnosti. Manja ranjivost koda koja prođe nezapaženo može dovesti do velikih nepovratnih sigurnosnih problema. Neki dodaci koji traže ranjivosti u kodu pojavili su se s razvojem umjetne inteligencije i upozoravaju programere na takve probleme. Do sada su pokazali određeni uspjeh u sprječavanju ljudskih pogrešaka.

Osim toga, vrlo je važno i prikazano vrijeme odgovora na prijetnju. Kada je napadnut, potrebno je vrijeme da se otkrije napad, isplanira put obrane i pokrenu obrambeni sustavi. Ali AI je od velike pomoći u tom pogledu.

Ograničenja umjetne inteligencije u kibernetičkoj sigurnosti

Korištenje umjetne inteligencije u svrhu kibernetičke sigurnosti zahtijeva prepoznavanje i analizu zlonamjernih, čistih i potencijalno nesigurnih aplikacija. Čak i ako koristite vrlo velike skupove podataka za treniranje algoritma, nikada ne možete biti sigurni u rezultat. Kao rezultat toga, nije sigurno u potpunosti se oslanjati na strojeve i AI. Nužno je podržavati AI tehnologiju uz ljudsku intervenciju.

Neki proizvođači sigurnosnih alata tvrde da rješenja koja se pokreću strojnim učenjem mogu analizirati svaku instancu. Prema proizvođačima, ovi alati mogu otkriti zlonamjerni softver samo matematičkim sredstvima. Međutim, to je teško moguće.

Alan Turingovo razbijanje šifre Enigme tijekom Drugog svjetskog rata vrlo je dobar primjer za to. Čak ni savršen stroj ne može odlučiti može li nepoznati unos uzrokovati neželjeno ponašanje u budućnosti. Ovi dokazi mogu se primijeniti na mnoga različita područja, uključujući kibernetičku sigurnost.

Još jedno ozbiljno ograničenje aplikacija strojnog učenja u kibernetičkoj sigurnosti krije se unutar granica modela umjetne inteligencije. Na primjer, strojevi su postali dovoljno pametni da pobijede ljude u šahu.

Ali šah ima određena pravila. Šahovski motori ne odstupaju od ovih pravila. Kada je u pitanju kibernetička sigurnost, napadači često nemaju pravila. Stalno promjenjiva priroda digitalnog krajolika onemogućuje stvaranje zaštitnog rješenja koje može otkriti i blokirati sve buduće prijetnje.

Analiza izvornog koda s ChatGPT-om

ChatGPT, koji je razvio OpenAI, ozbiljno je ušao u naše živote na mnogim područjima. Kao što možete postavite pitanja i razgovarajte s ChatGPT-om, također vam pokušava pomoći u problemima s programiranjem i softverom. ChatGPT čak pokušava napraviti analizu izvornog koda, ako na to gledate iz perspektive kibernetičke sigurnosti. Ali ChatGPT je još uvijek u povojima i trebat će neko vrijeme da se pokrene.

Da bismo ovo bolje vidjeli, testirajmo snagu ChatGPT-a. Na primjer, ispod je jednostavan JavaScript kôd koji stvara XSS ranjivost. Pitajmo ChatGPT o ovom kodu i neka nam kaže o svim ranjivostima.

dokument.pisati("Trenutačni URL: " + dokument.baseURI);

ChatGPT je spomenuo an XSS ranjivost odgovarajući na. Ovo je prilično dobar početak. Ali izvorni kodovi nikad nisu tako jednostavni. Pa pokušajmo malo zakomplicirati primjer.

Ispod ćete vidjeti kod pripremljen u C programskom jeziku. Ovaj C kod pripada ranjivoj aplikaciji. Čak je u potpunosti korišten u stvarnoj aplikaciji. Ako želite, možete ispitati ranjivosti izvornog koda u stvarnom svijetu koje Sonar objavljen 2022.

char *loggerPath *cmd;

poništitirotateLog(){
charlogStari[PATH_MAX], logNovi[PATH_MAX], vremenska oznaka[0x100];
vrijeme_t t;
vrijeme(&t);
strftime (vremenska oznaka, sizeof (vremenska oznaka), "%FT%T", gmtime(&t));
snprintf (logOld, sizeof (logOld), "%s/../logs/global.log", loggerPath);
snprintf (logNew, sizeof (logNew), "%s/../logs/global-%s.log", loggerPath, vremenska oznaka);
excl("/bin/cp", "/bin/cp", "-a", "--", logStari, logNovi, NULL);
}

intglavni(int argc, char **argv){
if (argc != 2) {
printf("Upotreba: /opt/logger/bin/loggerctl \n");
povratak1;
}

ako (setuid(0) == -1) povratak1;
ako (seteuid(0) == -1) povratak1;

char *executablePath = argv[0];
loggerPath = dirname (executablePath);
cmd = argv[1];

ako (!strcmp (cmd, "rotirati")) rotateLog();
drugo listaNaredbe();
povratak0;
}

Ranjivost je u tome što napadač može mijenjati neke datoteke bez administrativnih privilegija. Pogledajmo kako će ChatGPT odgovoriti na ovu sigurnosnu ranjivost.

Glavni problem u ovom kodu je setuid, korisnički ID (uid), i efektivni korisnički ID (euid). Međutim, ne ulazeći u previše tehničkih detalja, glavna točka na koju biste trebali obratiti pozornost je sljedeća ChatGPT nije mogao otkriti ovaj tanki dio. Može shvatiti da postoji problem, ali nažalost ne može doći do korijena problema.

Kroz ove primjere vidjeli ste reakcije na različite programske jezike i ranjivosti. Ako je kod stvarno jednostavan i ima očitu sigurnosnu rupu, ChatGPT vam može pomoći. Ali ne biste se trebali u potpunosti oslanjati na ChatGPT za analizu izvornog koda, testiranje prodora i druge sigurnosne analize.

Budućnost testera penetracije

Umjetna inteligencija bit će važan dio rada testera penetracije u budućnosti. Na primjer, ispitivači penetracije neće morati odvojiti vrijeme za ručno otkrivanje zlonamjerne aktivnosti i moći će automatski izvršiti sigurnosna skeniranja.

AI će također pomoći u otkrivanju i poduzimanju mjera protiv novih i složenijih tehnika napada za testiranje penetracije. Ali AI je još uvijek poput djeteta koje se igra u parku i treba mu savjet odrasle osobe. U bliskoj budućnosti stručnjaci za kibernetičku sigurnost i ispitivači penetracije neće lako ostati bez posla.