Наиболее часто используемый фрагмент кода Java в Stack Overflow содержит ошибку

Java

Исследование, опубликованное в Октябрь 2018 в журнале Empirical Software Engineering академиков Себастьяна Балтеса и Стефана Диля показал, что фрагмент кода, представленный в ответ на вопрос от Stack Overflow в сентябре 2010 г., Андреас Лундблад, Java-разработчик в Palantir, это наиболее широко используемый фрагмент кода Java на платформе сообщества.

Тем не менее, в сообщении на прошлой неделе, Лундблад объяснил, что код был ошибочным и что он неправильно преобразовывал количество байтов. в удобочитаемых форматах. Рассматриваемый код накопил более тысячи рекомендаций, а также был включен во многие проекты и находится в репозиториях на GitHub примерно 7 тысяч раз.

Примечательно, что ошибка не была обнаружена пользователями кто использовал этот код в своих проектах, но оригинальным автором подсказки.

Рассматриваемый код преобразовал размер байта в читаемую форму, например 110592 преобразовал в «110.6 КБ» или «108.0 КБ». Код был предложен как вариант ранее предложенного совета, оптимизированный с помощью логарифмов, в котором значение определялось путем деления начального значения в цикле на «10 18, 10 15, 10 12, 10 19, 10 6, 10 3 и 10 0 ″ , даже если делитель больше исходного значения в байтах.

Из-за неточных расчетов в оптимизированной версии (длинное переполнение значения), результат обработки очень больших чисел (эксабайт) не соответствует действительности.

Лундблад объяснил, что код содержал тривиальную ошибку преобразования, которая приводила лишь к немного неточным оценкам размера файла. Тем не менее, по оценкам, все было бы намного хуже.

Код мог содержать уязвимость безопасности, например. Если бы это было так, на восстановление всех уязвимых приложений потребовались бы месяцы или годы, подвергая пользователей атакам.

Автор совета тоже постарался обратить внимание на проблему использовать примеры без ссылки на источник и без указания лицензии.

«В совместных сеансах с участием нескольких человек-кодировщиков мы вручную оценивали каждый фрагмент кода на наличие уязвимостей в соответствии с инструкциями CWE (Common Weakness Enumeration).

Из 72,483 69 отсканированных фрагментов кода, использованных как минимум в одном проекте, размещенном на GitHub, мы обнаружили в общей сложности 29 фрагментов уязвимого кода, разделенных на XNUMX типов. Многие из изученных фрагментов кода еще не исправлены », - отмечают исследователи в своем отчете.

69 уязвимых фрагментов кода найдено в Stack Overflow повторно использовано в 2859 проектах GitHub. Чтобы улучшить качество общих фрагментов кода в Stack Overflow, они разработали расширение для браузера, которое позволяет пользователям Stack Overflow искать уязвимости в фрагментах, когда они загружают их на платформу.

Однако, несмотря на предостережения исследователей, разработчики по-прежнему копируют код Stack Overflow в свои проекты, не выполняя анализа.

Ашкан Сами, доцент кафедры информационных технологий, инженерные и информационные технологии в Университете Шираз в Иране, сказал, что

«Исследование было попыткой изучить, как ошибочный код переносится из Stack Overflow на GitHub. По сути, мы пытались показать, что использование кода Stack Overflow без пристального изучения может привести к уязвимостям приложений », - сказал Сами. В исследовании также упоминается академическая статья 2017 года.

Согласно этой статье, 1161 небезопасный фрагмент кода, опубликованный на Stack Overflow, использовался в 1.3 млн приложений Android, доступных в Google Play.

В дополнение к предыдущему исследованию 46% разработчиков, которые использовали код StackOverflow без указания автора, 75% не знали, что код лицензирован согласно CC BY-SA, и 67% не знали, что это подразумевает необходимость указания авторства.

Согласно данным других исследований, использование примера кода связано не только с риском появления ошибок в коде, но и с уязвимостями.

Например, проанализировав 72483 69 образца кода C ++ на StackOverflow, исследователи выявили серьезные уязвимости в 0.09 образцах (что составляет XNUMX%), включенных в список самых популярных рекомендаций.

источник: https://programming.guide


Содержание статьи соответствует нашим принципам редакционная этика. Чтобы сообщить об ошибке, нажмите здесь.

Будьте первым, чтобы комментировать

Оставьте свой комментарий

Ваш электронный адрес не будет опубликован. Обязательные для заполнения поля помечены *

*

*

  1. Ответственный за данные: Мигель Анхель Гатон
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.