Autori : Wachiraphan Čaroenwet Sljedeći Patanamon Thongtanunam Van-Thuan Pham Christoph Treude Autori : Wachiraphan Čaroenwet Sljedeći Patanamon Thongtanunam Van-Thuan Pham Christoph Treude Table of links stolovi lijeve strane Abstract Abstrakcija 1 Introduction 1 Uvod 2 Background and Related Work 2 Pozadina i povezani radovi softverska sigurnost Kodiranje slabosti Sigurnosno lijevo Suvremeni kod Revizija Code Review za sigurnost softvera Proces rješavanja sigurnosnih zabrinutosti u reviziji koda 3 Motivating Examples 3 Motivacijski primjeri 4 Case Study Design 4 Dizajn studija slučaja Istraživačka pitanja Proučavani projekti Prikupljanje podataka Kodiranje slabosti taksonomije Pregled studija Pristup identifikaciji sigurnosnih zabrinutosti (RQ1) Analiza usklađivanja poznatih ranjivosti (RQ2) Identifikacija postupka 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 studija slučaja 7 Discussion 7 Rasprava 8 Threats to Validity 8 Prijetnje valjanosti Unutarnja valjanost Izgradnja valjanosti Vanjska valjanost Abstract Abstrakcija Istraživanje koda je široko korištena metoda koja omogućuje programerima da ručno ispituju modificirani kod, uhvaćajući sigurnosne probleme tijekom ciklusa razvoja softvera. Međutim, postojeće studije ispitivanja koda često se usredotočuju na poznate ranjivosti, zanemarujući slabosti kodiranja, koje mogu uvesti sigurnosne probleme u stvarnom svijetu koji su vidljiviji kroz pregled koda. Prakse ispitivanja koda u utvrđivanju takvih slabosti kodiranja još nisu u potpunosti istražene. Da bismo to bolje razumjeli, proveli smo empirijsku studiju slučaja u dva velika projekta otvorenog izvora, OpenSSL i PHP. Na temelju 135,560 komentara kodiranja, otkrili smo da su preglednici podigli sigurnosne zabrinutosti u 35 od 40 kategorija slabosti kodiranja. 1 Introduction Sigurnost softvera je važan fokus u procesima razvoja softvera jer obuhvaća kako softverski sustav podupire vanjske prijetnje (McGraw, 2004). Upravljanje sigurnosnim problemima u softverskim proizvodima ključno je jer latentna sigurnosna pitanja, osobito iskorištenost ranjivosti, mogu eksponencijalno utjecati 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 promjene lijeve strane (Migues, 2021; Weir et al., 2022) da testiraju novi softver što je prije moguće. U duhu pomicanja lijeve, brojne organizacije su usvojile modernu reviziju koda, aktivnost osiguranja kvalitete Nekoliko je studija ispitalo prednosti provjere koda 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, sigurnosna pitanja koja su proučavali prethodni radovi obično su ograničena vrstama poznatih ranjivosti kao što su SQL Injection i XSS. Osobito, većina proučavanih sigurnosnih problema ograničena je na ranjivosti koje napadači mogu iskoristiti. Budući da se kodiranje kodiranja usredotočuje na identifikaciju i ublažavanje problema kodiranja, pretpostavljamo da kodiranje slabosti, ili greške u kodu, koje mogu potencijalno dovesti do sigurnosnih problema također 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 podnesene tijekom kodiranja usklađene sa slabostima koje je sustav mogao imati u prošlosti. Istraživanje tih aspekata pomoći bi nam da bolje razumijemo nerealizirane prednosti razmatranja slabosti kodiranja tijekom kodiranja za ranu prevenciju sigurnosnih problema softvera. Takav uvid također može otkriti praznine između trenutne prakse kodiranja i slabosti koje su bile poznate u odgovarajućim sustavima. S jedne strane, softverski timovi mogli bi razviti sigurne politike kodiranja koji bi im omogućili da učinkovitije identificiraju i rješavaju sigurnosne probleme tijekom procesa kodiranja (Mantyla i Lassenius, U ovom radu nastojimo istražiti slabosti kodiranja koje su se pojavile tijekom pregleda koda i istražiti 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 ispitati ove pojave u projektima otvorenog koda zbog dostupnosti javno dostupnih skupova podataka, obvezne politike pregleda koda 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živosti koje su identificirali preglednici, ne razlikuju se značajno od onih koji se promatraju u ind Stoga smo proveli empirijsku studiju kako bismo odgovorili na tri istraživačka pitanja: (RQ1) Koje vrste sigurnosnih zabrinutosti povezanih s slabostima kodiranja često se podnose u pregledu koda?, (RQ2) Koliko su usklađene povećane sigurnosne brige i poznate slabosti?, i (RQ3) Kako se sigurnosne brige rješavaju u pregledu koda? Da bismo to učinili, primijenili smo poluautomatski pristup na 135,560 komentara kodiranja kako bismo identificirali kategorije komentara kodiranja koji su povezani s slabostima kodiranja. Zatim smo ručno anotirali vrste slabosti kodiranja za 6,146 komentara kodiranja koji su povezani s slabostima kodiranja. Koristili smo taksonom Opće slabosti – CWE-699 koji pokriva 40 kategorija slab Rezultati studije slučaja pokazuju da su kodiranje slabosti povezane s 35 od 40 kategorija u CWE-699 bile podignute tijekom procesa kodiranja OpenSSL-a i PHP-a (RQ1). Na primjer, komentari o kodiranju slabosti u autentifikaciji, privilegiju i API-ju često su podignuti u oba proučavana projekta. Svaki proučavani projekt također ima jedinstvene kodiranje slabosti podignute tijekom kodiranja, npr. izravne sigurnosne prijetnje u OpenSSL-u i validaciji ulaznih podataka u PHP-u. Ovi rezultati ukazuju na to da su različite kodiranje slabosti koje se odnose na sigurnosna pitanja podignute tijekom procesa kodiranja, a različiti softverski projekti imaju različite fokusirane kodiranje slabosti. Poznate slabosti u proučavanim projektima povez U mnogim slučajevima (39%-41%), programeri su pokušali riješiti probleme. Međutim, otprilike trećina (30%-36%) podignutih slabosti kodiranja priznata je samo bez neposrednih popravaka (tj. bez dodatnih promjena kodiranja u pregledima). Primijetili smo da su neke od priznatih zabrinutosti dogovorene da budu fiksirane u novim odvojenim promjenama kodiranja (10%-18%) i neke su ostale neispravljene zbog neslaganja oko odgovarajućeg rješenja (18%-20%). Relativno mali postotak zabrinutosti podignutih (14%-26%) razjašnjen je 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 kodiranja s neriješenom 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 pregled kodiranja. slabosti kodiranja mogu biti prioritetizirane na temelju važnosti, sklonosti i jedinstvenog skupa slabosti kodiranja koje su se pojavile u prethodnim pregledima kodiranja. Prema najboljem našem znanju, ovaj je članak prvi koji empirički istražuje pregled kodova u identifikaciji i ublažavanju slabosti kodiranja koje se odnose na sigurnosna pitanja, uz poznate ranjivosti, naglašavajući potencijalne prednosti kodiranja za rano sprečavanje potencijalnih sigurnosnih problema. Drugo, predstavili smo novi poluautomatski pristup koji koristi domenu specifičan model unaprijed osposobljenog ugradnje riječi kako bi pronašli potencijalne komentare kodiranja povezane s sigurnosnim problemima. Treće, ispitali smo usklađenost između poznatih slabosti u proučavanim sustavima i slabosti kodiranja koje su se često javljale tijekom procesa kodiranja, naglašavajući nedostatak trenutačnih praksi kodiranja da neke važne slabosti kodiranja možda nisu dovoljno raspravljene. Novelty & Contributions: U ovoj smo studiji objavili dodatni materijal1 skripta za preuzimanje podataka i analizu podataka zajedno s anotiranim podacima kako bi se olakšalo daljnje istraživanje. Data Availability: Odjeljak 2. opisuje pozadinu i istražuje povezani rad. Odjeljak 3. prikazuje primjere 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 utjecati na valjanost ove studije. Paper Organization: Ovaj dokument je dostupan na arhivu pod licencom CC by 4.0 Deed (Attribution 4.0 International). Ovaj dokument je dostupan na arhivu pod licencom CC by 4.0 Deed (Attribution 4.0 International). Dostupno u Arhivu