Cel mai utilizat fragment de cod Java pe Stack Overflow conține o eroare

Java

Un studiu publicat în Octombrie 2018 în revista Empirical Software Engineering de către cadrele universitare Sebastian Baltes și Stephan Diehl a dezvăluit că un fragment de cod furnizat în răspuns la o întrebare Stack Overflow în septembrie 2010 de Andreas Lundblad, Dezvoltator Java la Palantir, este cel mai folosit fragment de cod Java pe platforma comunității.

Sin embargo, Într-o postare de săptămâna trecută, Lundblad a explicat că codul era defect și că convertea incorect numărul de octeți în formate care pot fi citite de om. Codul în cauză a acumulat peste o mie de recomandări și a fost inclus și în multe proiecte și se găsește în depozitele de pe GitHub de aproximativ 7 mii de ori.

Este de remarcat faptul că eroarea nu a fost găsită de utilizatori care au folosit acest cod în proiectele lor, ci de autorul original al sfatului.

Codul considerat a convertit dimensiunea octetului într-o formă care poate fi citită, de exemplu 110592 convertit în „110.6 kB” sau „108.0 KiB”. Codul a fost propus ca o variantă a sfatului propus anterior, optimizat folosind logaritmi, în care valoarea a fost determinată prin împărțirea valorii inițiale într-o buclă la "10 18, 10 15, 10 12, 10 19, 10 6, 10 3 și 10 0″ , până când divizorul este mai mare decât valoarea inițială în octeți.

Din cauza calculelor inexacte în versiunea optimizată (depășire de valoare lungă), rezultatul prelucrării unor numere foarte mari (exaocteți) nu corespundeau realității.

Lundblad a explicat că codul conținea o eroare trivială de conversie care a dus doar la estimări ușor inexacte ale dimensiunii fișierului. Acestea fiind spuse, se estimează că ar fi fost mult mai rău decât atât.

Codul ar fi putut conține o vulnerabilitate de securitate, De exemplu. Dacă ar fi fost cazul, ar fi durat luni sau ani pentru a corecta toate aplicațiile vulnerabile, ceea ce ar fi expus utilizatorii la atacuri.

Autorul sfatului a încercat și el să atragă atenția asupra problemei să folosească exemple fără referire la sursă și fără a specifica o licență.

„În sesiunile de colaborare care au implicat mai mulți codori umani, am evaluat manual vulnerabilitățile de securitate ale fiecărui fragment de cod conform instrucțiunilor CWE (Common Weakness Enumeration).

Din cele 72,483 de fragmente de cod examinate utilizate în cel puțin un proiect găzduit pe GitHub, am găsit un total de 69 de fragmente de cod vulnerabile clasificate în 29 de tipuri. Multe dintre fragmentele de cod studiate nu sunt încă remediate”, au spus cercetătorii în raportul lor.

Cele 69 de fragmente de cod vulnerabile găsit pe Stack Overflow au fost reutilizate într-un total de 2859 de proiecte GitHub. Pentru a îmbunătăți calitatea fragmentelor de cod partajate pe Stack Overflow, au dezvoltat o extensie de browser care permite utilizatorilor Stack Overflow să caute vulnerabilități în fragmente atunci când le descarcă pe platformă.

Cu toate acestea, în ciuda avertismentelor cercetătorilor, dezvoltatorii încă copiază codul Stack Overflow în proiectele lor fără analiză.

Ashkan Sami, profesor asociat de IT, inginerie și tehnologia informației la Universitatea Shiraz din Iran, a spus că

„Investigația a fost o încercare de a examina modul în care codul spart migrează de la Stack Overflow la GitHub. „Practic, ceea ce am încercat să arătăm este că utilizarea codului Stack Overflow fără a-l examina cu atenție poate duce la vulnerabilități în aplicații”, a spus Sami. Studiul se referă și la un articol academic din 2017.

Potrivit acestui articol, 1161 de fragmente de cod nesigure postate pe Stack Overflow au fost folosite în 1.3 milioane de aplicații Android disponibile pe Google Play.

Pe lângă un studiu anterior, 46% dintre dezvoltatorii care au folosit codul StackOverflow fără a specifica autorul, 75% nu știau că codul este licențiat sub CC BY-SA și 67% nu știau că acest lucru implică necesitatea atribuirii.

Potrivit datelor din alte studii, utilizarea codului eșantion nu este asociată doar cu riscul de erori în cod, ci și cu vulnerabilități.

De exemplu, după ce au analizat 72483 exemple de cod C++ pe StackOverflow, cercetătorii au identificat vulnerabilități grave în 69 de exemple (care este 0.09%), incluse în lista celor mai populare recomandări.

Fuente: https://programming.guide


Lasă comentariul tău

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

*

*

  1. Responsabil pentru date: Miguel Ángel Gatón
  2. Scopul datelor: Control SPAM, gestionarea comentariilor.
  3. Legitimare: consimțământul dvs.
  4. Comunicarea datelor: datele nu vor fi comunicate terților decât prin obligație legală.
  5. Stocarea datelor: bază de date găzduită de Occentus Networks (UE)
  6. Drepturi: în orice moment vă puteți limita, recupera și șterge informațiile.