Ошибки в JavaScript, PHP, Python оставляют в ПО «дыры», от которых нельзя избавиться

11 дек 2017 18:40 #64292 от ICT
Проблема интерпретаторов В популярных высокоуровневых языках программирования содержатся уязвимости, которые ставят под угрозу любые приложения, написанные на них. Даже те, чья безопасность неоднократно проверена. Об этом заявил, выступая на конференции Black Hat Europe 2017 эксперт по информационной безопасности IOActive Фернандо Арнабольди (Fernando Arnaboldi). Арнабольди исследовал функциональность нескольких наиболее популярных таких языков: JavaScript, Perl, PHP, Python и Ruby, тех, которые чаще всего используются для создания веб-приложений. Для выявления уязвимостей он применял методику автоматического тестирования ПО под названием «фаззинг», которая заключается в передаче приложению на вход неправильных, неожиданных или случайных данных. Предметом интереса являются падения и зависания, нарушения внутренней логики и проверок в коде приложения, утечки памяти, вызванные такими данными на входе. Специально для тестирования языков и их компиляторов, Арнабольди разработал специализированный расширенный фреймворк XDiFF, с помощью которого тестируется сама структура языков. Исследованию подверглись языки JavaScript (трансляторы v8, ChakraCore, Spidermonkey, NodeJS, Node), PHP (трансляторы PHP и HHVM), Ruby (Ruby, JRuby), Perl (Perl, ActivePerl) и Python (CPython, PyPy, Jython). «Перед исполнением фаззер генерирует все возможные варианты тестирования, производя перестановки между функциями и вариантами полезной нагрузки. Тест единовременно сопоставлял одну функцию языка с разными такими вариантами», - говорится в исследовании, опубликованном Арнабольди. http://filearchive.cnews.ru/img/news/2017/12/11/python600.jpg"> В интерпретаторах JavaScript, Perl, PHP, Python и Ruby присутствуют уязвимости, передаваемые ими в создаваемое ПО Нахождение интересных уязвимостей целиком и полностью зависит от правильного ввода, - пояснил исследователь. - Для данного тестирования использовались менее тридцати примитивных величин (число, буква и т.д.), скомбинированные со специальными примерами полезной нагрузки так, чтобы можно было определить, когда ПО пытается получить доступ к внешним ресурсам. Незадокументированные функции и имена констант В результате исследования Арнабольди обнаружил следующие проблемы. В Python содержатся незадокументированные методы и переменные локальной среды, которые можно использовать для выполнения команд на уровне операционной системы. В Perl содержится функция typemaps, способная выполнить код eval(). NodeJS выдаёт ошибки, частично раскрывающие содержание файла. JRuby загружает и выполняет посторонний код на функции, которая этого не предполагает. Имена констант PHP можно использовать для удалённого выполнения команд. По мнению Арнабольди, эти уязвимости стали следствием ошибок разработчиков или их попыток упростить написание ПО. Уязвимости в итоге оказывают влияние на обычные приложения, парсинг которых осуществляют перечисленные компилятор; и именно компиляторы и должны быть исправлены. Исследователь также отметил, что даже самые безопасные приложения, созданные с помощью этих языков и компиляторов, могут быть уязвимы. «Разработчики ПО могут непредумышленно внедрить код в приложение, который затем будет использован не так, как предполагали сами авторы приложения. Некоторые варианты его поведения могут представлять серьёзный риск для безопасности приложений, даже если их разработка велась в полном соответствии с нормами безопасности», - заявил Арнабольди. С ним согласен [b]Олег Галушкин[/b], эксперт по информационной безопасности компании SEC Consult Services. «Несомненно, если строить крепкий дом на бракованном фундаменте, то он долго не простоит, - заметил эксперт. - Любая система будет надёжной ровно настолько, насколько надёжен самый слабый её компонент. Даже если этот компонент лежит в самом основании».[img]http://filearchive.cnews.ru/img/news/2017/12/11/python600.jpg"> В интерпретаторах JavaScript, Perl, PHP, Python и Ruby
присутствуют уязвимости, передаваемые ими в создаваемое ПО Нахождение интересных уязвимостей целиком и полностью зависит от правильного ввода, - пояснил исследователь. - Для данного тестирования использовались менее тридцати примитивных величин (число, буква и т.д.), скомбинированные со специальными примерами полезной нагрузки так, чтобы можно было определить, когда ПО пытается получить доступ к внешним ресурсам. Незадокументированные функции и имена констант В результате исследования Арнабольди обнаружил следующие проблемы. В Python содержатся незадокументированные методы и переменные локальной среды, которые можно использовать для выполнения команд на уровне операционной системы. В Perl содержится функция typemaps, способная выполнить код eval(). NodeJS выдаёт ошибки, частично раскрывающие содержание файла. JRuby загружает и выполняет посторонний код на функции, которая этого не предполагает. Имена констант PHP можно использовать для удалённого выполнения команд. По мнению Арнабольди, эти уязвимости стали следствием ошибок разработчиков или их попыток упростить написание ПО. Уязвимости в итоге оказывают влияние на обычные приложения, парсинг которых осуществляют перечисленные компилятор; и именно компиляторы и должны быть исправлены. Исследователь также отметил, что даже самые безопасные приложения, созданные с помощью этих языков и компиляторов, могут быть уязвимы. «Разработчики ПО могут непредумышленно внедрить код в приложение, который затем будет использован не так, как предполагали сами авторы приложения. Некоторые варианты его поведения могут представлять серьёзный риск для безопасности приложений, даже если их разработка велась в полном соответствии с нормами безопасности», - заявил Арнабольди. С ним согласен Олег Галушкин, эксперт по информационной безопасности компании SEC Consult Services. «Несомненно, если строить крепкий дом на бракованном фундаменте, то он долго не простоит, - заметил эксперт. - Любая система будет надёжной ровно настолько, насколько надёжен самый слабый её компонент. Даже если этот компонент лежит в самом основании».


  • Сообщений: 103416

  • Пол: Не указан
  • Дата рождения: Неизвестно
  • Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

    Похожие статьи

    ТемаРелевантностьДата
    Ошибки в Java и Python позволяют взламывать фаерволлы16.34Среда, 22 февраля 2017
    Преступники оставляют абонентов Ростелекома без связи9.95Пятница, 12 февраля 2016
    Intel отзывает все свои фитнес-часы. Они оставляют ожоги на руках9.64Четверг, 04 августа 2016
    "Стимулсофт" анонсировала генератор отчетов для JavaScript9.03Вторник, 28 июля 2015
    Вышел генератор отчетов для JavaScript — Stimulsoft Reports.JS8.93Среда, 14 октября 2015
    Новый язык для веб-разработки объединил возможности HTML, CSS и JavaScript8.83Пятница, 26 декабря 2014
    GeekBrains начинает готовить JavaScript-разработчиков полного цикла8.83Среда, 07 февраля 2018
    AnyChart открыла код JavaScript библиотек для визуализации данных в рамках релиза 7.13.08.74Четверг, 02 марта 2017
    «Программируй будущее»: Триколор и GS Labs приглашают разработчиков JavaScript приложений8.74Вторник, 26 апреля 2022
    «Доктор Веб» исследовал бэкдор, написанный на Python8.64Вторник, 17 октября 2017

    Мы в соц. сетях