Ошибки в JavaScript, PHP, Python оставляют в ПО «дыры», от которых нельзя избавиться
11 дек 2017 18:40 #64292
от ICT
ICT создал тему: Ошибки в JavaScript, PHP, Python оставляют в ПО «дыры», от которых нельзя избавиться
Проблема интерпретаторов В популярных высокоуровневых языках программирования содержатся уязвимости, которые ставят под угрозу любые приложения, написанные на них. Даже те, чья безопасность неоднократно проверена. Об этом заявил, выступая на конференции 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. «Несомненно, если строить крепкий дом на бракованном фундаменте, то он долго не простоит, - заметил эксперт. - Любая система будет надёжной ровно настолько, насколько надёжен самый слабый её компонент. Даже если этот компонент лежит в самом основании».
присутствуют уязвимости, передаваемые ими в создаваемое ПО Нахождение интересных уязвимостей целиком и полностью зависит от правильного ввода, - пояснил исследователь. - Для данного тестирования использовались менее тридцати примитивных величин (число, буква и т.д.), скомбинированные со специальными примерами полезной нагрузки так, чтобы можно было определить, когда ПО пытается получить доступ к внешним ресурсам. Незадокументированные функции и имена констант В результате исследования Арнабольди обнаружил следующие проблемы. В Python содержатся незадокументированные методы и переменные локальной среды, которые можно использовать для выполнения команд на уровне операционной системы. В Perl содержится функция typemaps, способная выполнить код eval(). NodeJS выдаёт ошибки, частично раскрывающие содержание файла. JRuby загружает и выполняет посторонний код на функции, которая этого не предполагает. Имена констант PHP можно использовать для удалённого выполнения команд. По мнению Арнабольди, эти уязвимости стали следствием ошибок разработчиков или их попыток упростить написание ПО. Уязвимости в итоге оказывают влияние на обычные приложения, парсинг которых осуществляют перечисленные компилятор; и именно компиляторы и должны быть исправлены. Исследователь также отметил, что даже самые безопасные приложения, созданные с помощью этих языков и компиляторов, могут быть уязвимы. «Разработчики ПО могут непредумышленно внедрить код в приложение, который затем будет использован не так, как предполагали сами авторы приложения. Некоторые варианты его поведения могут представлять серьёзный риск для безопасности приложений, даже если их разработка велась в полном соответствии с нормами безопасности», - заявил Арнабольди. С ним согласен Олег Галушкин, эксперт по информационной безопасности компании SEC Consult Services. «Несомненно, если строить крепкий дом на бракованном фундаменте, то он долго не простоит, - заметил эксперт. - Любая система будет надёжной ровно настолько, насколько надёжен самый слабый её компонент. Даже если этот компонент лежит в самом основании».
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Похожие статьи
Тема | Релевантность | Дата |
---|---|---|
Ошибки в Java и Python позволяют взламывать фаерволлы | 16.35 | Среда, 22 февраля 2017 |
Преступники оставляют абонентов Ростелекома без связи | 9.96 | Пятница, 12 февраля 2016 |
Intel отзывает все свои фитнес-часы. Они оставляют ожоги на руках | 9.64 | Четверг, 04 августа 2016 |
"Стимулсофт" анонсировала генератор отчетов для JavaScript | 9.03 | Вторник, 28 июля 2015 |
Вышел генератор отчетов для JavaScript — Stimulsoft Reports.JS | 8.93 | Среда, 14 октября 2015 |
Новый язык для веб-разработки объединил возможности HTML, CSS и JavaScript | 8.84 | Пятница, 26 декабря 2014 |
GeekBrains начинает готовить JavaScript-разработчиков полного цикла | 8.84 | Среда, 07 февраля 2018 |
AnyChart открыла код JavaScript библиотек для визуализации данных в рамках релиза 7.13.0 | 8.75 | Четверг, 02 марта 2017 |
«Программируй будущее»: Триколор и GS Labs приглашают разработчиков JavaScript приложений | 8.75 | Вторник, 26 апреля 2022 |
«Доктор Веб» исследовал бэкдор, написанный на Python | 8.65 | Вторник, 17 октября 2017 |