Het meest gebruikte Java-codefragment op Stack Overflow bevat een fout

Java

Een studie gepubliceerd in Oktober van 2018 in het tijdschrift Empirical Software Engineering door geleerden Sebastian Baltes en Stephan Diehl onthulde dat een codefragment in antwoord op een vraag van Stack Overflow in september 2010 door Andreas Lundblad, Java developer bij Palantir, het is het meest gebruikte Java-codefragment op het communityplatform.

Echter vorige week in een bericht, Lundblad legde uit dat de code defect was en dat het het aantal bytes onjuist converteerde in door mensen leesbare formaten. De code in kwestie heeft meer dan duizend aanbevelingen verzameld en is ook in veel projecten opgenomen en staat ongeveer 7 duizend keer in repositories op GitHub.

het is opmerkelijk dat de fout is niet gevonden door gebruikers die deze code in hun projecten hebben gebruikt, maar door de oorspronkelijke auteur van de tip.

De beschouwde code converteerde de bytegrootte in leesbare vorm, bijvoorbeeld 110592 geconverteerd naar "110.6 kB" of "108.0 KiB". De code werd voorgesteld als een variant van het eerder voorgestelde advies, geoptimaliseerd met behulp van logaritmen, waarbij de waarde werd bepaald door de beginwaarde in een lus te delen door «10 18, 10 15, 10 12, 10 19, 10 6, 10 3 en 10 0 ″ , zelfs als de deler groter is dan de oorspronkelijke waarde in bytes.

Vanwege onnauwkeurige berekeningen in de geoptimaliseerde versie (lange waarde overflow), het resultaat van het verwerken van zeer grote aantallen (exabytes) kwamen niet overeen met de werkelijkheid.

Lundblad legde uit dat de code een triviale conversiefout bevatte die alleen resulteerde in enigszins onnauwkeurige schattingen van de bestandsgrootte. Dat gezegd hebbende, wordt geschat dat het veel erger zou zijn geweest dan dat.

De code bevat mogelijk een beveiligingsprobleem, bijvoorbeeld. Als dat het geval was, zou het maanden of jaren hebben geduurd om alle kwetsbare applicaties te repareren en gebruikers bloot te stellen aan aanvallen.

De auteur van het advies probeerde ook de aandacht op het probleem te vestigen om voorbeelden te gebruiken zonder verwijzing naar de bron en zonder specificatie van een licentie.

“In samenwerkingssessies waarbij meerdere menselijke codeerders betrokken waren, hebben we elk stukje code handmatig beoordeeld op beveiligingsproblemen volgens de CWE-instructies (Common Weakness Enumeration).

Van de 72,483 gescande codefragmenten die in ten minste één door GitHub gehost project zijn gebruikt, hebben we in totaal 69 kwetsbare codefragmenten gevonden die in 29 typen zijn ingedeeld. Veel van de bestudeerde codefragmenten zijn nog niet opgelost ", aldus de onderzoekers in hun rapport.

De 69 kwetsbare codefragmenten gevonden op Stack Overflow hergebruikt in in totaal 2859 GitHub-projecten. Om de kwaliteit van de gedeelde codefragmenten op Stack Overflow te verbeteren, hebben ze een browserextensie ontwikkeld waarmee Stack Overflow-gebruikers naar kwetsbaarheden in de fragmenten kunnen zoeken wanneer ze deze naar het platform downloaden.

Ondanks de voorbehouden van de onderzoekers, kopiëren ontwikkelaars de Stack Overflow-code echter nog steeds naar hun projecten zonder een analyse uit te voeren.

Ashkan Sami, universitair hoofddocent IT, engineering en informatietechnologie aan de Shiraz University in Iran, zei dat

“Het onderzoek was een poging om te onderzoeken hoe foutieve code wordt gemigreerd van Stack Overflow naar GitHub. Wat we in feite hebben geprobeerd aan te tonen, is dat het gebruik van Stack Overflow-code zonder er goed naar te kijken kan leiden tot kwetsbaarheden in applicaties, ”zei Sami. De studie verwijst ook naar een wetenschappelijk artikel uit 2017.

Volgens dit artikel zijn 1161 onveilige codefragmenten die op Stack Overflow zijn gepost, gebruikt in 1.3 miljoen Android-apps die beschikbaar zijn op Google Play.

Naast een eerdere studie wist 46% van de ontwikkelaars die StackOverflow-code gebruikten zonder de auteur te specificeren, 75% niet dat de code gelicentieerd is onder CC BY-SA en 67% wist niet dat dit de noodzaak van attributie impliceert.

Volgens gegevens uit andere onderzoeken wordt het gebruik van de voorbeeldcode niet alleen geassocieerd met het risico op bugs in de code, maar ook met kwetsbaarheden.

Na analyse van 72483 C ++ - codevoorbeelden op StackOverflow, identificeerden de onderzoekers bijvoorbeeld ernstige kwetsbaarheden in 69 voorbeelden (dat is 0.09%), opgenomen in de lijst met de meest populaire aanbevelingen.

bron: https://programming.guide


Laat je reactie achter

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *

*

*

  1. Verantwoordelijk voor de gegevens: Miguel Ángel Gatón
  2. Doel van de gegevens: Controle SPAM, commentaarbeheer.
  3. Legitimatie: uw toestemming
  4. Mededeling van de gegevens: De gegevens worden niet aan derden meegedeeld, behalve op grond van wettelijke verplichting.
  5. Gegevensopslag: database gehost door Occentus Networks (EU)
  6. Rechten: u kunt uw gegevens op elk moment beperken, herstellen en verwijderen.