Najpogosteje uporabljen delček kode Java v Stack Overflow vsebuje napako

Java

Študija, objavljena leta Oktober 2018 v reviji Empirical Software Engineering akademika Sebastiana Baltesa in Stephana Diehla je razkril, da je delček kode v odgovor na vprašanje Stack Overflow septembra 2010 avtor Andreas Lundblad, Razvijalec Java v podjetju Palantir, je najpogosteje uporabljen delček kode Java na platformi skupnosti.

Vendar pa v prispevku prejšnji teden, Lundblad je pojasnil, da je koda napačna in da napačno pretvarja število bajtov v berljivih oblikah. Zadevna koda je zbrala več kot tisoč priporočil, vključena pa je bila tudi v številne projekte, v skladiščih na GitHubu pa jo najdemo približno 7 tisočkrat.

Omeniti velja, da uporabniki napake niso našli ki so to kodo uporabljali pri svojih projektih, ampak prvotni avtor nasveta.

Upoštevana koda je pretvorila velikost bajta v berljivo obliko, na primer pretvorila v "110.6 kB" ali "108.0 KiB". Koda je bila predlagana kot različica predhodno predlaganega nasveta, optimiziranega z uporabo logaritmov, v katerem je bila vrednost določena z delitvijo začetne vrednosti v ciklu z «10 18, 10 15, 10 12, 10 19, 10 6, 10 3 in 10 0 ″ , tudi če je delilec večji od prvotne vrednosti v bajtih.

Zaradi netočnih izračunov v optimizirani različici (dolg preliv vrednosti), rezultat obdelave zelo velikega števila (eksabajti) niso ustrezali resničnosti.

Lundblad je pojasnil, da koda vsebuje trivialno napako pretvorbe, ki je povzročila le nekoliko netočne ocene velikosti datoteke. Kljub temu se ocenjuje, da bi bilo veliko slabše od tega.

Koda je lahko vsebovala varnostno ranljivost, na primer. V tem primeru bi trajali meseci ali leta, da bi popravili vse ranljive aplikacije in uporabnike izpostavili napadom.

Na težavo je poskušal opozoriti tudi avtor nasveta uporabljati primere brez sklicevanja na vir in brez navedbe licence.

»Na skupnih sejah, ki vključujejo več človeških kodirnikov, smo ročno ocenili vsak del kode glede varnostnih ranljivosti v skladu z navodili CWE (Common Weakness Enumeration).

Od 72,483 skeniranih delčkov kode, uporabljenih v vsaj enem projektu, ki ga gosti GitHub, smo našli skupaj 69 ranljivih delčkov kode, razvrščenih v 29 vrst. Številni preučeni delčki kode še niso popravljeni, "so v svojem poročilu zapisali raziskovalci.

69 ranljivih delčkov kode najdeno na Stack Overflow ponovno uporabljena v skupno 2859 projektih GitHub. Da bi izboljšali kakovost delčkov kode v skupni rabi na Stack Overflow, so razvili razširitev brskalnika, ki uporabnikom Stack Overflow omogoča iskanje ranljivosti v delčkih, ko jih naložijo na platformo.

Kljub opozorilom raziskovalcev pa razvijalci še vedno kopirajo kodo Stack Overflow v svoje projekte, ne da bi opravili analizo.

Ashkan Sami, izredni profesor za IT, inženiring in informacijska tehnologija na univerzi Shiraz v Iranu, je dejal

»Raziskava je bila poskus, da se preveri, kako se napačna koda preseli iz Stack Overflow v GitHub. V bistvu smo poskušali pokazati, da lahko uporaba kode za prelivanje skladb, ne da bi jo natančno pogledali, povzroči ranljivosti aplikacij, «je dejal Sami. Študija se sklicuje tudi na akademski članek iz leta 2017.

V skladu s tem člankom je bilo v 1161 milijona aplikacij za Android, ki so na voljo v Googlu Play, uporabljenih 1.3 delcev negotove kode, objavljene v storitvi Stack Overflow.

Poleg prejšnje študije 46% razvijalcev, ki so uporabili kodo StackOverflow brez navedbe avtorja, 75% ni vedelo, da je koda licencirana pod CC BY-SA, in 67% ni vedelo, da to pomeni potrebo po dodeljevanju.

Po podatkih iz drugih študij uporaba vzorčne kode ni povezana samo s tveganjem napak v kodi, temveč tudi z ranljivostmi.

Na primer, po analizi 72483 vzorcev kode C ++ na StackOverflow so raziskovalci ugotovili resne ranljivosti v 69 vzorcih (kar je 0.09%), vključenih na seznam najbolj priljubljenih priporočil.

vir: https://programming.guide


Pustite svoj komentar

Vaš e-naslov ne bo objavljen. Obvezna polja so označena z *

*

*

  1. Za podatke odgovoren: Miguel Ángel Gatón
  2. Namen podatkov: Nadzor neželene pošte, upravljanje komentarjev.
  3. Legitimacija: Vaše soglasje
  4. Sporočanje podatkov: Podatki se ne bodo posredovali tretjim osebam, razen po zakonski obveznosti.
  5. Shranjevanje podatkov: Zbirka podatkov, ki jo gosti Occentus Networks (EU)
  6. Pravice: Kadar koli lahko omejite, obnovite in izbrišete svoje podatke.