Najczęściej używany fragment kodu Java w witrynie Stack Overflow zawiera błąd

Java

Badanie opublikowane w Października 2018 r w magazynie Empirical Software Engineering przez naukowców Sebastiana Baltesa i Stephana Diehla ujawnił, że fragment kodu dostarczony w odpowiedź na pytanie od Przepełnienie stosu we wrześniu 2010 r., Autor: Andreas Lundblad, Programista Java w Palantir, jest to najczęściej używany fragment kodu Java na platformie społecznościowej.

Jednak w poście z zeszłego tygodnia, Lundblad wyjaśnił, że kod był wadliwy i nieprawidłowo konwertował liczbę bajtów w formatach czytelnych dla człowieka. Kod, o którym mowa, zgromadził ponad tysiąc rekomendacji, a także został uwzględniony w wielu projektach i znajduje się w repozytoriach na GitHub około 7 tysięcy razy.

Warto zauważyć, że błąd nie został znaleziony przez użytkowników którzy używali tego kodu w swoich projektach, ale przez oryginalnego autora wskazówki.

Rozważany kod przekonwertował rozmiar bajtu na czytelną formę, na przykład 110592 przekonwertowany na „110.6 kB” lub „108.0 KB”. Kod został zaproponowany jako wariant wcześniej zaproponowanej porady, zoptymalizowany za pomocą logarytmów, w których wartość została określona przez podzielenie początkowej wartości w pętli przez «10 18, 10 15, 10 12, 10 19, 10 6, 10 3 i 10 0 ″ , nawet jeśli dzielnik jest większy niż oryginalna wartość w bajtach.

Z powodu niedokładnych obliczeń w zoptymalizowanej wersji (przepełnienie długiej wartości), wynik przetwarzania bardzo dużych liczb (eksabajtów) nie odpowiadały rzeczywistości.

Lundblad wyjaśnił, że kod zawiera trywialny błąd konwersji, który skutkuje jedynie nieznacznie niedokładnymi szacunkami rozmiaru pliku. To powiedziawszy, szacuje się, że byłoby znacznie gorzej.

Kod mógł zawierać lukę w zabezpieczeniach, na przykład. Gdyby tak było, naprawa wszystkich podatnych aplikacji zajęłaby miesiące lub lata, narażając użytkowników na ataki.

Autor porady starał się również zwrócić uwagę na problem używać przykładów bez odniesienia do źródła i bez określania licencji.

„Podczas wspólnych sesji z udziałem wielu ludzkich koderów ręcznie ocenialiśmy każdy fragment kodu pod kątem luk w zabezpieczeniach zgodnie z instrukcjami CWE (Common Weakness Enumeration).

Spośród 72,483 69 przeskanowanych fragmentów kodu użytych w co najmniej jednym projekcie hostowanym na GitHub znaleźliśmy łącznie 29 fragmentów kodu z lukami, które podzielono na XNUMX typów. Wiele z badanych fragmentów kodu nie zostało jeszcze naprawionych ”- stwierdzili naukowcy w swoim raporcie.

69 wrażliwych fragmentów kodu znaleziono na Stack Overflow ponownie wykorzystane w 2859 projektach GitHub. Aby poprawić jakość udostępnianych fragmentów kodu w Stack Overflow, opracowali rozszerzenie przeglądarki, które umożliwia użytkownikom Stack Overflow wyszukiwanie luk w tych fragmentach podczas pobierania ich na platformę.

Jednak pomimo zastrzeżeń badaczy programiści nadal kopiują kod Stack Overflow do swoich projektów bez przeprowadzania analizy.

Ashkan Sami, profesor nadzwyczajny informatyki, inżynieria i technologie informacyjne na Uniwersytecie Shiraz w Iranie, powiedział to

„Badanie było próbą zbadania, w jaki sposób błędny kod jest migrowany ze Stack Overflow do GitHub. Zasadniczo próbowaliśmy pokazać, że używanie kodu przepełnienia stosu bez dokładnego przyjrzenia się mu może prowadzić do luk w zabezpieczeniach aplikacji ”- powiedział Sami. W opracowaniu nawiązano również do artykułu naukowego z 2017 roku.

Zgodnie z tym artykułem 1161 niezabezpieczonych fragmentów kodu opublikowanych w Stack Overflow zostało wykorzystanych w 1.3 miliona aplikacji na Androida dostępnych w Google Play.

Oprócz wcześniejszego badania 46% programistów, którzy używali kodu StackOverflow bez podania autora, 75% nie wiedziało, że kod jest licencjonowany na podstawie licencji CC BY-SA, a 67% nie wiedziało, że oznacza to potrzebę uznania autorstwa.

Według danych z innych badań użycie przykładowego kodu wiąże się nie tylko z ryzykiem błędów w kodzie, ale także z podatnościami.

Na przykład, po przeanalizowaniu 72483 69 próbek kodu C ++ na StackOverflow, badacze zidentyfikowali poważne luki w 0.09 próbkach (co stanowi XNUMX%), znajdujących się na liście najpopularniejszych zaleceń.

źródło: https://programming.guide


Zostaw swój komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*

*

  1. Odpowiedzialny za dane: Miguel Ángel Gatón
  2. Cel danych: kontrola spamu, zarządzanie komentarzami.
  3. Legitymacja: Twoja zgoda
  4. Przekazywanie danych: Dane nie będą przekazywane stronom trzecim, z wyjątkiem obowiązku prawnego.
  5. Przechowywanie danych: baza danych hostowana przez Occentus Networks (UE)
  6. Prawa: w dowolnym momencie możesz ograniczyć, odzyskać i usunąć swoje dane.