Autori : Uslovi korišćenja Patanamon Thongtanunam Uslovi korišćenja Van-Thuan Pham Krištof Tređe Autori : Uslovi korišćenja Uslovi korišćenja Uslovi korišćenja Van-Thuan Pham Krištof Tređe Table of links Stolici za levo Abstract Abstrakcija 1 Introduction 1 Uvod 2 Background and Related Work 2 Pozadina i povezani radovi Softverska bezbednost Kodiranje slabosti Bezbednost Shift-Left Moderan kod Revizija Code Review za softversku sigurnost Proces rješavanja sigurnosnih pitanja u reviziji koda 3 Motivating Examples 3 Motivirajući primjeri 4 Case Study Design 4 Dizajn studija slučaja Pitanja istraživanja Proučavani projekti Prikupljanje podataka Kodiranje slabosti taksonomija Pregled studija Pristup identifikaciji sigurnosnih pitanja (RQ1) Analiza usklađivanja poznatih ranjivosti (RQ2) Identifikacija procesa rukovanja (RQ3) 5 Preliminary Analysis 5 Preliminarna analiza PA1: Prevalencija komentara kodiranja slabosti PA2: Preliminarna evaluacija našeg pristupa identifikaciji sigurnosnih zabrinutosti 6 Case Study Results 6 Rezultati studije slučaja 7 Discussion 7 Razgovori 8 Threats to Validity 8 Pretnje valjanosti Unutarnja valjanost Izgradnja valjanosti Spoljna valjanost Abstract Abstrakcija Međutim, prepoznavanje sigurnosnih problema rano se potiče kako bi se smanjili latentni negativni učinci na softverske sisteme. Revizija koda je široko korišteni metod koji omogućava programerima da ručno ispituju modificirani kod, uhvatajući sigurnosne probleme tijekom ciklusa razvoja softvera. Međutim, postojeće studije revizije koda često se fokusiraju na poznate ranjivosti, zanemarivanje slabosti kodiranja, što može uvesti stvarne sigurnosne probleme koji su vidljiviji kroz reviziju koda. Praktike praktičnih revizija koda u identifikaciji takvih slabosti kodiranja još nisu u potpunosti istražene. Da bismo bolje razumjeli ovo, proveli smo empirijsku studiju slučaja u dva velika projekta otvorenog koda, OpenSSL i PHP. Na osnovu 135,560 komentara 1 Introduction Softverska bezbednost je važan fokus u procesima razvoja softvera jer obuhvaća kako softverski sistem održava vanjske pretnje (McGraw, 2004). Upravljanje sigurnosnim problemima u softverskim proizvodima je ključno jer latentni sigurnosni problemi, posebno iskorištavajuće ranjivosti, mogu eksponencijalno uticati na krajnje korisnike i zahtijevaju više resursa za rješavanje ako se otkrije u kasnijoj fazi. Pokušavajući ublažiti sigurnosne probleme, programeri su ohrabreni kontinuiranim konceptom pomicanja leđa (Migues, 2021; Weir et al., 2022) da testiraju novi softver što je ranije moguće. U duhu pomicanja levo, brojne organizacije su usvojile modernu reviziju koda, aktivnost Nekoliko studija su istražili prednosti kod pregleda u identifikaciji sigurnosnih problema (Alfadel et al., 2023; Bosu et al., 2014; Di Biase et al., 2016; Edmundson et al., 2013; Paul et al., 2021b). Ipak, sigurnosne probleme koje su proučavali prethodni radovi obično su ograničene tipovima poznatih ranjivosti kao što su SQL Injection i XSS. Posebno, većina proučavanih sigurnosnih problema ograničena je na ranjivosti koje napadači mogu iskoristiti. Budući da se kod pregleda fokusira na identifikaciju i ublažavanje problema kodiranja, pretpostavljamo da kodiranje slabosti, ili greške u kodu, koje mogu potencijalno dovesti do sigurnosnih problema takođe mogu biti pronađene i ublažene To uključuje vrste slabosti kodiranja koje dovode do sigurnosnih problema i postupak rješavanja tih slabosti kodiranja. Osim toga, malo je poznato o tome jesu li sigurnosne zabrinutosti podignute tokom kodiranja usklađene sa slabostima koje je sistem mogao imati u prošlosti. Istraživanje ovih aspekata pomoći bi nam da bolje razumemo nerealizovane prednosti razmatranja slabosti kodiranja tokom kodiranja za rano sprečavanje sigurnosnih problema softvera. Takav uvid može takođe otkriti praznine između trenutne prakse kodiranja i slabosti koje su bile poznate u odgovarajućim sistemima. S jedne strane, softverski timovi mogli bi razviti sigurne politike kodiranja koji bi im omogućili da efikasnije identificiraju i rješavaju sigurnosne probleme tokom procesa kodiranja (Mantyla i Lassenius, 2009 U ovom radu, nastojimo da istražimo slabosti kodiranja koje su podignute tokom kodiranja i da istražimo kako su komentari kodiranja koji su spomenuli slabosti kodiranja bili obrađeni. Proveli smo našu studiju slučaja o OpenSSL-u i PHP-u koji su veliki sustavi otvorenog koda koji su skloni sigurnosnim problemima. Odabrali smo da ispitamo ove pojave u projektima otvorenog koda zbog dostupnosti javno dostupnih skupova podataka, obavezne politike kodiranja i ranijih ranjivosti odabranih projekata. Ova odluka također proizlazi iz opažanja da su rezultati kodiranja kodiranja u zajednicama otvorenog koda, kao što je omjer funkcionalnih nedostataka i nedostataka održavanja koje su identificirali recenzori, ne razlikuju se značajno od onih koji su promatrani u industrijskim Stoga smo sproveli empirijsku studiju radi rješavanja tri istraživačka pitanja: (RQ1) Koje vrste sigurnosnih zabrinutosti povezanih sa slabostima kodiranja često se javljaju u pregledu koda?, (RQ2) Koliko su usklađene povećane sigurnosne zabrinutosti i poznate ranjivosti?, i (RQ3) Kako se sigurnosne zabrinutosti rješavaju u pregledu koda? Da bismo to učinili, primijenili smo poluautomatski pristup na 135,560 komentara kodiranja kako bismo identifikovali komentare kodiranja koji su povezani sa slabostima kodiranja. Zatim smo ručno anotirali tipove slabosti kodiranja za 6,146 komentara kodiranja koji su povezani sa slabostima kodiranja. Koristili smo taksonom zajedničke slabosti – CWE-699 koji pokriva 40 kategori Rezultati studije slučaja pokazuju da su kodne slabosti povezane s 35 od 40 kategorija u CWE-699 bile podignute tijekom procesa kodiranja kodiranja OpenSSL-a i PHP-a (RQ1). Na primjer, komentari o kodiranim slabostima u autentifikaciji, privilegiji i API-ju često su podignuti u oba proučavana projekta. Svaki proučavani projekat također ima jedinstvene slabosti kodiranja podignute tokom kodiranja, npr. direktne sigurnosne prijetnje u OpenSSL-u i validaciji ulaznih podataka u PHP-u. Ovi rezultati ukazuju na to da su različite slabosti kodiranja koje se odnose na sigurnosna pitanja podignute tijekom procesa kodiranja, a različiti softverski projekti imaju različite fokusirane slabosti kodiranja. Poznate slabosti u proučavanim U mnogim slučajevima (39%-41%), programeri su pokušali riješiti probleme. Međutim, otprilike trećina (30%-36%) podignutih slabosti kodiranja bila je priznata samo bez neposrednih popravaka (tj. bez dodatnih promjena kodova u pregledima). Primijetili smo da su neke od priznatih zabrinutosti dogovorene da budu fiksirane u novim odvojenim promjenama kodova (10%-18%) i neke su ostale bez popravka zbog neslaganja oko odgovarajućeg rješenja (18%-20%). Relativno mali deo zabrinutosti podignutih (14%-26%) je razjašnjen i odbačen kroz raspravu. Iz svih scenarija, otkrili smo alarmantne slučajeve (6-9%%) u kojima se pitanja sigurnosti mogu uvesti u kod jer su promjene kodova sa neriješenom rasprav Na temelju rezultata, preporučujemo softverskim projektima da razmotre kategorije slabosti kodiranja (tj. CWE-699) kao smjernice za identifikaciju slabosti kodiranja koje mogu uvesti sigurnosne probleme u pregledima koda. slabosti kodiranja mogu biti prioritetizirane na osnovu značaja, sklonosti i jedinstvenog skupa slabosti kodiranja koji su se pojavili u prethodnim pregledima koda. Naš rad takođe naglašava nedostatak procesa revizije koda u rješavanju sigurnosnih problema (tj. neuspješno fiksnih, neriješenih diskusija i nereagiranih) koji mogu zahtijevati budući rad na rješavanju. Prema najboljem našem znanju, ovaj članak je prvi koji empirički istraži pregled koda u identifikaciji i ublažavanju slabosti kodiranja koje se odnose na sigurnosne probleme, uz poznate ranjivosti, naglašavajući potencijalne prednosti kodiranja za rano sprečavanje potencijalnih sigurnosnih problema. Drugo, predstavili smo novi poluautomatski pristup koji iskorištava domenu specifičan model pre-treniranog ugradnje reči kako bi pronašli potencijalne komentare kodiranja vezane za sigurnosne probleme. Treće, ispitali smo usklađenost između poznatih slabosti u proučavanim sistemima i slabosti kodiranja koje su često podignute tokom procesa kodiranja, naglašavajući nedostatak trenutnih praksi kodiranja da neke važne slabosti kodiranja možda nisu dovoljno razmotrene. Novelty & Contributions: U ovoj studiji smo objavili dodatni materijal1 skriptova za preuzimanje podataka i analizu podataka zajedno sa anotiranim podacima kako bismo olakšali daljnja istraživanja. Data Availability: Odjeljak 2. opisuje pozadinu i istražuje povezani rad. Odjeljak 3. prikazuje primere ranjivosti koje su uzrokovane slabostima kodiranja. Odjeljak 4. objašnjava dizajn studije slučaja. Odjeljak 5. objašnjava početnu metodu analize i rezultat. Odjeljak 6. izvješćuje o rezultatima. Odjeljak 7. raspravlja o implikacijama i prijedlozima. Odjeljak 8. objašnjava prijetnje koje mogu uticati na valjanost ove studije. Paper Organization: Ovaj dokument je dostupan na arhivu pod licencom CC by 4.0 Deed (Attribution 4.0 International). Ovaj papir je pod licencom CC by 4.0 Deed (Attribution 4.0 International). Dostupno u Arhivu Dostupno u Arhivu