Выпущен корректирующий релиз языка программирования Ruby 2.4.2, в котором устранены четыре уязвимости: CVE-2017-14064 - утечка произвольных областей памяти процесса при обработке JSON-данных, в которых присутствует символ с нулевым кодом; CVE-2017-14033 - крах при расшифровке специально оформленного контента из-за обращения за пределы границы буфера в коде OpenSSL::ASN1; CVE-2017-10784 - возможность подстановки escape-последовательностей в поле с именем пользователя при Basic-аутентификации в компоненте WEBrick (в лог могут быть добавлены escape-последовательности, которые будут обработаны при просмотре этого лога в терминале); CVE-2017-0898 - возможность утечки содержимого областей памяти процесса через манипуляции с опциями форматирования строки в методе sprintf из состава модуля Kernel.
В Rubygems, системе управления пакетами для приложений на языке Ruby, устранено несколько уязвимостей. Проблемы устранены в RubyGems 2.6.13 и пока не исправлены в релизах Ruby 2.2.7, 2.3.4 и 2.4.1. Всем пользователям рекомендуется обновить RubyGems (gem update --system) или установить патчи. Среди исправленных уязвимостей: Уязвимость в инсталляторе, позволяющая при установке специально оформленного пакета переписать произвольные файлы в системе; Уязвимость, связанная с применением escape-последовательностей; Возможность подмены результата DNS-запроса; DoS-уязвимость в реализации команды "query".
Представлен релиз Ruby 2.4, динамического объектно-ориентированного языка программирования, отличающегося высокой эффективностью разработки программ и вобравшего в себя лучшие черты Perl, Java, Python, Smalltalk, Eiffel, Ada и Lisp. Код проекта распространяется под лицензиями BSD ("2-clause BSDL") и "Ruby", которая ссылается на последний вариант лицензии GPL и полностью совместима с GPLv3. Ruby 2.4 является четвёртым значительным выпуском, подготовленным в рамках нового планового процесса разработки, подразумевающего отведение года на подготовку функциональных улучшений и формирование каждые 2-3 месяца корректирующих выпусков. Основные улучшения: Переработана реализация хэш-таблиц (st_table), внесены улучшения связанные с переходом на использование открытой адресации для борьбы с коллизиями и применением упорядоченных массивов вместо списков с двойным связыванием. В среднем новая реализация обеспечивает 50% ускорения работы с хэшами; Добавлена возможность binding.irb для запуска REPL-сеансов по
В рамках проекта Crystal развивается новый язык программирования, разработчики которого намерены создать язык удобный как Ruby при разработке, но быстрый как Си при выполнении приложений. Код компилятора написан на языке Crystal и распространяется под лицензией Apache 2.0. Синтаксис Crystal очень близок к языку Ruby (без переработки выполняются некоторые ruby-программы), но разработчики не ставят целью обеспечение полной совместимости. В языке применяется статическая проверка типов, но без необходимости явного указания типов переменных и аргументов методов в коде. Программы на Crystal компилируются в исполняемые файлы, с вычислением макросов и генерацией кода во время компиляции. С производительностью не всё однозначно: на текущей альфа-стадии развития в одних тестах Crystal опережает Ruby в 40 раз, но в отдельных тестах в 4-5 раз проигрывает по скорости выполнения. В программах на языке Crystal допускается подключение биндингов, написанных на языке Си. Распараллеливание выполнения кода осуществляется
Состоялся релиз MVC (Model-View-Controller) web-фреймворка Ruby on Rails 5.0. В состав Rails 5.0 включен новый фреймворк Action Cable для применения WebSockets в Rails, значительно упрощающий создание таких приложений как чаты и системы уведомления. Фреймворк предоставляет интегрированное решение для управления соединениями, канальный слой для выполнения операций на стороне сервера и JavaScript-слой для организации взаимодействия на стороне клиента. В том числе предоставляются возможности доступа к Active Record и доменной модели PORO из обработчиков WebSockets. Для обеспечения отрисовки шаблонов вне контроллеров (например, для использования серверных шаблонов для формирования ответов WebSocket) представлена система ActionController::Renderer. При разработке Action Cable выполняется в основном процессе приложения, а в готовом продукте может быть вынесен в отдельный процесс. Вторым важным новшеством является появление режима API, включаемого при создании каркаса проекта с флагом "--api". В отличие от
Опубликованы результаты эксперимента по использованию методов тайпсквоттинга для распространения вредоносного ПО в репозиториях модулей для языков программирования Python, Node.JS и Ruby. Метод основан на том, что популярные репозитории модулей для разработчиков позволяют любому желающему разместить свою библиотеку, не проверяя при этом её содержимое и допуская выполнение произвольного кода в момент установки. В том числе репозитории допускают загрузку библиотек, имена которых почти полностью совпадает с названием других популярных библиотек. Расчёт делается на то, что пользователь допустит опечатку при наборе имени или не заметит различий выбирая модуль из списка. Забегая вперёд можно сказать, что метод позволил получить контроль над более чем 17 тысячами хостов и на 8 тысячах систем выполнить код с правами администратора. Для оценки эффективности метода в репозиториях PyPI (Python), Npmjs.com (Node.js) и rubygems.org (Ruby) было размещено 214 подставных пакетов, имена для которых были выбраны в
В Rubygems.org, популярном репозиторий модулей для приложений на языке Ruby, выявлена серьёзная проблема безопасности, позволявшая атакующим заменить некоторые gem-файлы на серверах проекта. Для исключения наличия в репозитории подставных файлов была проведена проверка всех файлов, загруженных после 8 февраля 2015 года. Проверка не выявила вредоносной активности. Проблема затрагивает пакеты, в имени которых присутствует символ тире (например, "test-unit"). Неавторизированный пользователь мог заменить подобные gem-файлы на собственные варианты. Суть проблемы сводится к тому, что имена файлов разбирались как "имя_пакета-версия", что приводило к проблемам при наличии тире в имени пакета. 2 апреля разработчики RubyGems внесли исправление блокирующее работу присланного им эксплоита, после чего выявили ещё одну уязвимость, которая была устранена 4 апреля. Так как подменённые файлы не соответствуют размещённой для оригинальных пакетов контрольной сумме sha256, разработчики смогли исключить наличие скрытой
Представлен релиз Ruby 2.3, динамического объектно-ориентированного языка программирования, отличающегося высокой эффективностью разработки программ и вобравшего в себя лучшие черты Perl, Java, Python, Smalltalk, Eiffel, Ada и Lisp. Код проекта распространяется под лицензиями BSD ("2-clause BSDL") и "Ruby", которая ссылается на последний вариант лицензии GPL и полностью совместима с GPLv3. Ruby 2.3 является третьим значительным выпуском, подготовленным в рамках нового планового процесса разработки, подразумевающего отведение года на подготовку функциональных улучшений и формирование каждые 2-3 месяца корректирующих выпусков. В скором времени ожидается выпуск фреймворка Rails 5.0, первая бета-версия которого вышла неделю назад. Основные улучшения: Реализована новая экспериментальная прагма frozen-string-literal, а также связанная с ней опций "--enable/--disable=frozen-string-literal", позволяющие заморозить состояние строковых литералов в исходных текстах. Также добавлен новый отладочный режим
Доступны корректирующие выпуски языка программирования Ruby, в которых представлена порция исправлений ошибок и оптимизаций, при сохранении полной совместимости. Наиболее важным исправлением является устранение уязвимости (CVE-2015-1855) в расширении OpenSSL, вызванной неверной трактовкой RFC при проверке имени хоста для интернационализированных имён доменов (заданная в сертификате маска может сработать для закодированной последовательности символов национального алфавита в доменах с префиксом "xn--").
Представлен релиз языка программирования Ruby 2.2.1, в котором представлена порция исправлений ошибок и оптимизаций, при сохранении полной совместимости с выпуском 2.2.0. Из наиболее важных исправлений отмечается решение проблем со сборкой и устранение утечки памяти в сборщике мусора для объектов типа Symbol. Одновременно проект празднует 22 года с момента своего основания. Напомним, что номер версии Ruby теперь определяться в формате MAJOR.MINOR.TEENY.PATCH, где значение MAJOR увеличивается при значительных нарушениях обратной совместимости. Новые MINOR-выпуски формируются раз в год, при этом в данных выпусках допускается нарушение обратной совместимости API. В TEENY-выпусках, которые выходят раз в 2-3 месяца, устраняются ошибки и уязвимости при полном сохранении совместимости API. Значение PATCH отражает число коммитов с момента прошлого минорного выпуска.