Najčešće korišten isječak Java koda na Stack Overflow-u sadrži grešku

Java

Studija objavljena u Oktobar 2018 u časopisu Empirical Software Engineering akademika Sebastiana Baltesa i Stephana Diehla je otkrio da je isječak koda naveden u odgovor na pitanje od Prelivanje steka u septembru 2010., Andreas Lundblad, Java programer u Palantiru, To je najčešće korišten isječak Java koda na platformi zajednice.

Međutim, u postu prošle sedmice, Lundblad je objasnio da je kôd neispravan i da je pogrešno pretvorio broj bajtova u čitljivim formatima. Dotični kôd prikupio je preko hiljadu preporuka, a također je uključen u mnoge projekte, a u spremištima na GitHubu nalazi se otprilike 7 hiljada puta.

Značajno je to korisnici nisu pronašli grešku koji su koristili ovaj kod u svojim projektima, već originalni autor savjeta.

Kôd koji se smatra pretvorio je veličinu bajta u čitljiv oblik, na primjer pretvorio u 110592 "110.6 kB" ili "108.0 KiB". Kôd je predložen kao varijanta prethodno predloženog savjeta, optimiziranog pomoću logaritama, u kojem je vrijednost određena dijeljenjem početne vrijednosti u ciklusu sa «10 18, 10 15, 10 12, 10 19, 10 6, 10 3 i 10 0 ″ , čak i dok je djelitelj veći od izvorne vrijednosti u bajtovima.

Zbog netačnih proračuna u optimiziranoj verziji (dugo prelijevanje vrijednosti), rezultat obrade vrlo velikog broja (eksabajti) nisu odgovarali stvarnosti.

Lundblad je objasnio da kôd sadrži trivijalnu grešku konverzije koja je rezultirala samo netačnim procjenama veličine datoteke. S tim u vezi, procjenjuje se da bi to bilo puno gore od toga.

Kod je mogao sadržavati sigurnosnu ranjivost, na primjer. Da je to slučaj, trebali bi mjeseci ili godine da poprave sve ranjive aplikacije, izlažući korisnike napadima.

Autor savjeta također je pokušao skrenuti pažnju na problem koristiti primjere bez pozivanja na izvor i bez navođenja licence.

„U zajedničkim sesijama koje uključuju više ljudskih kodera ručno smo procijenili svaki dio koda na sigurnosne ranjivosti prema uputama CWE (Common Weakness Enumeration).

Od 72,483 skeniranih isječaka koda korištenih u najmanje jednom projektu koji hostira GitHub, pronašli smo ukupno 69 ranjivih isječaka koda klasificiranih u 29 tipova. Mnogi proučeni isječci koda još nisu ispravljeni ", rekli su istraživači u svom izvještaju.

69 ranjivih isječaka koda pronađeno na Stack Overflow ponovno korištena u ukupno 2859 GitHub projekata. Da bi poboljšali kvalitet dijeljenih isječaka koda na Stack Overflow-u, razvili su proširenje preglednika koje korisnicima Stack Overflow-a omogućuju traženje ranjivosti u isječcima kada ih preuzmu na platformu.

Međutim, uprkos napomenama istraživača, programeri i dalje kopiraju Stack Overflow kôd u svoje projekte bez izvođenja analize.

Ashkan Sami, vanredni profesor informatike, inženjering i informaciona tehnologija sa Univerziteta Shiraz u Iranu, rekao je to

„Istraživanje je pokušalo ispitati kako neispravan kod migrira iz Stack Overflow-a u GitHub. U osnovi, ono što smo pokušali pokazati je da korištenje koda Stack Overflow-a bez pažljivog promatranja može dovesti do ranjivosti aplikacija “, rekao je Sami. Studija se takođe poziva na akademski članak iz 2017. godine.

Prema ovom članku, 1161 isječka nesigurnih kodova objavljenih na Stack Overflowu korišteno je u 1.3 miliona Android aplikacija dostupnih na Google Playu.

Pored prethodne studije, 46% programera koji su koristili StackOverflow kôd bez navođenja autora, 75% nije znalo da je kôd licenciran pod CC BY-SA, a 67% nije znalo da to implicira potrebu atribucije.

Prema podacima iz drugih studija, upotreba uzorka koda povezana je ne samo sa rizikom od grešaka u kodu, već i sa ranjivostima.

Na primjer, nakon analize 72483 uzoraka C ++ koda na StackOverflow-u, istraživači su identificirali ozbiljne ranjivosti u 69 uzoraka (što je 0.09%), uključenih na listu najpopularnijih preporuka.

Izvor: https://programming.guide


Ostavite komentar

Vaša e-mail adresa neće biti objavljena. Obavezna polja su označena sa *

*

*

  1. Za podatke odgovoran: Miguel Ángel Gatón
  2. Svrha podataka: Kontrola neželjene pošte, upravljanje komentarima.
  3. Legitimacija: Vaš pristanak
  4. Komunikacija podataka: Podaci se neće dostavljati trećim stranama, osim po zakonskoj obavezi.
  5. Pohrana podataka: Baza podataka koju hostuje Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.