Steka pārpildes visbiežāk izmantotajā Java koda fragmentā ir kļūda

Java

Gadā publicēts pētījums 2018. gada oktobris žurnālā Empirical Software Engineering akadēmiķu Sebastiana Baltesa un Stefana Dīla autori atklāja, ka koda fragments ir nodrošināts atbilde uz jautājumu no Steka pārpilde 2010. gada septembrī, autors: Andreas Lundblad, Java izstrādātājs Palantir, Tas ir visplašāk izmantotais Java koda fragments kopienas platformā.

Tomēr, ziņu pagājušajā nedēļā, Lundblads paskaidroja, ka kods bija kļūdains un ka tas nepareizi konvertēja baitu skaitu cilvēkiem lasāmos formātos. Attiecīgais kods ir uzkrājis vairāk nekā tūkstoš ieteikumu, un tas ir iekļauts arī daudzos projektos, un GitHub krātuvēs tas atrodas aptuveni 7 tūkstošus reižu.

Tas ir ievērības cienīgs lietotāji kļūdu neatrada kuri izmantoja šo kodu savos projektos, bet sākotnējais padoma autors.

Aplūkotais kods konvertēja baita lielumu lasāmā formā, piemēram, 110592 pārveidoja par "110.6 kB" vai "108.0 KiB". Kods tika piedāvāts kā iepriekš piedāvātā ieteikuma variants, kas optimizēts, izmantojot logaritmus, kurā vērtību noteica, sākotnējo vērtību ciklā dalot ar «10 18, 10 15, 10 12, 10 19, 10 6, 10 3 un 10 0 " , pat ja dalītājs ir lielāks par sākotnējo vērtību baitos.

Sakarā ar neprecīziem aprēķiniem optimizētajā versijā (gara vērtības pārpilde), ļoti liela skaita apstrādes rezultāts (eksabaiti) neatbilda realitātei.

Lundblads paskaidroja, ka kodā bija nenozīmīga pārveidošanas kļūda, kuras rezultātā tika aprēķināti tikai nedaudz neprecīzi faila lielumi. Tomēr tiek lēsts, ka tas būtu bijis daudz sliktāk.

Kodā varēja būt drošības ievainojamība, piemēram. Ja tas tā būtu, visu neaizsargāto lietojumprogrammu labošana būtu prasījusi mēnešus vai gadus, pakļaujot lietotājus uzbrukumiem.

Arī padoma autore mēģināja pievērst uzmanību problēmai izmantot piemērus bez atsauces uz avotu un nenorādot licenci.

“Sadarbības sesijās, kurās piedalījās vairāki cilvēku kodētāji, mēs katru koda daļu manuāli novērtējām attiecībā uz drošības ievainojamību saskaņā ar CWE (Common Weakness Enumeration) instrukcijām.

No 72,483 69 skenētajiem koda fragmentiem, kas izmantoti vismaz vienā GitHub mitinātajā projektā, mēs atradām kopumā 29 neaizsargātus koda fragmentus, kas klasificēti XNUMX veidos. Daudzi no pētītajiem koda fragmentiem vēl nav izlaboti, "pētnieki teica savā ziņojumā.

69 neaizsargātie koda fragmenti atrasts Stack Overflow atkārtoti izmantots kopumā 2859 GitHub projektos. Lai uzlabotu Stack Overflow koplietojamo koda fragmentu kvalitāti, viņi ir izstrādājuši pārlūka paplašinājumu, kas ļauj Stack Overflow lietotājiem meklēt fragmentos esošās ievainojamības, lejupielādējot tos platformā.

Tomēr, neskatoties uz pētnieku izteikumiem, izstrādātāji savos projektos joprojām kopē Stack Overflow kodu, neveicot analīzi.

Ashkan Sami, IT asociētais profesors, inženierzinātnes un informācijas tehnoloģijas Širaza universitātē Irānā

"Pētījums bija mēģinājums pārbaudīt, kā kļūdains kods tiek migrēts no Stack Overflow uz GitHub. Būtībā tas, ko mēs esam mēģinājuši parādīt, ir tas, ka Stack Overflow koda izmantošana, rūpīgi to nepārbaudot, var izraisīt lietojumprogrammu ievainojamību, ”sacīja Sami. Pētījums attiecas arī uz akadēmisku rakstu no 2017. gada.

Saskaņā ar šo rakstu vietnē Stack Overflow ievietotie 1161 nedrošie koda fragmenti tika izmantoti 1.3 miljonos Android lietotņu, kas pieejamas pakalpojumā Google Play.

Papildus iepriekšējam pētījumam 46% izstrādātāju, kuri izmantoja StackOverflow kodu, nenorādot autoru, 75% nezināja, ka kods ir licencēts saskaņā ar CC BY-SA, un 67% nezināja, ka tas nozīmē nepieciešamību attiecinājums.

Saskaņā ar citu pētījumu datiem koda parauga izmantošana ir saistīta ne tikai ar kļūdu risku kodā, bet arī ar ievainojamībām.

Piemēram, pēc 72483 69 C ++ kodu paraugu analīzes vietnē StackOverflow pētnieki atklāja nopietnas ievainojamības 0.09 izlasēs (kas ir XNUMX%), kas iekļautas populārāko ieteikumu sarakstā.

Fuente: https://programming.guide


Esi pirmais, kas komentārus

Atstājiet savu komentāru

Jūsu e-pasta adrese netiks publicēta. Obligātie lauki ir atzīmēti ar *

*

*

  1. Atbildīgais par datiem: Migels Ángels Gatóns
  2. Datu mērķis: SPAM kontrole, komentāru pārvaldība.
  3. Legitimācija: jūsu piekrišana
  4. Datu paziņošana: Dati netiks paziņoti trešām personām, izņemot juridiskus pienākumus.
  5. Datu glabāšana: datu bāze, ko mitina Occentus Networks (ES)
  6. Tiesības: jebkurā laikā varat ierobežot, atjaunot un dzēst savu informāciju.