Компиляторные технологии


Инновации

Собственные технологии

SharpChecker. Инструмент статического анализа для поиска ошибок в исходном коде программ на языке С#

SharpChecker – это платформа статического анализа программ на языке C#, ориентированная на поиск ошибок. Инструмент содержит как непосредственный анализатор кода, так и готовые компоненты для внедрения в производственный цикл разработки ПО. Это позволяет использовать технологию не только программистам для исправления ошибок в разрабатываемом проекте, но также их руководителям в качестве ещё одной динамической метрики, хорошо характеризующей качество продукта.

Облачная инфраструктура поддержки жизненного цикла операционной системы Tizen

ИСП РАН предоставляет облачную инфраструктуру поддержки жизненного цикла операционной системы Tizen.Ru. Данная инфраструктура позволяет организовать процесс совместной разработки компонентов операционной системы, автоматизировать регулярную сборку и тестирование образов ОС, а также облегчает ее адаптацию для новых платформ и устройств.

Динамическая компиляция SQL-запросов для СУБД

В рамках данного проекта был разработан метод динамической компиляции запросов с применением альтернативной модели выполнения запроса в СУБД. Также был разработан метод автоматической трансляции исходного кода PostgreSQL во внутреннее представление LLVM IR для использования в динамическом компиляторе, что позволило использовать один и тот же исходный код как для JIT-компилятора, так и для имеющегося интерпретатора.

LLV8: экспериментальный компилятор третьего уровня для JavaScript-движка V8

LLV8 – экспериментальный динамический (just-in-time) компилятор, задуманный в качестве третьего уровня компиляции и выполнения программ для популярного JavaScript-движка V8. В сравнении с имеющимися в V8 двумя уровнями, упор делается на максимальную эффективность производимого им машинного кода для пользовательской программы. Для этого используется LLVM MCJIT – набор библиотек для оптимизации программ и генерации кода на лету.

BinSide: статический анализатор бинарного кода

BinSide – платформа обнаружения дефектов в программе методами статического анализа исполняемого кода. Необходима, когда нет доступа к исходному коду (например, при анализе закрытых библиотек).

Поддержка переноса вычислений на акселераторы NVIDIA в реализации OpenMP 4 в компиляторе GCC

Начиная с версии 4.0, стандарт OpenMP, предоставляющий набор расширений-прагм для написания параллельных программ, содержит поддержку для переноса части вычислений из основной программы на специализированные акселераторы, которые обычно имеют отдельную оперативную память и оптимизированную для массивно-параллельных расчетов архитектуру. Для поддержки всего многообразия функциональности OpenMP на NVIDIA-акселераторах была портирована библиотека libgomp, добавлена новая модель кодогенерации для архитектуры NVPTX в GCC, и добавлены новые стратегии преобразования OpenMP SIMD-прагм для SIMT-архитектур.

Casr: инструмент формирования отчётов об ошибках

Casr – это инструмент, позволяющий автоматически формировать отчёты об аварийных завершениях, возникающих во время эксплуатации и тестирования ПО, на основе анализа coredump файлов в ОС Linux. В отчётах содержатся сведения о степени критичности аварийного завершения, а также дополнительная информация, которая помогает установить его причины.

Система анализа сетевого трафика Protosphere

Protosphere – система глубокого анализа сетевого трафика (DPI). Может встраиваться как компонент в системы мониторинга, классификации, защиты от вторжений и утечек информации. Регистрирует несоответствия между реализацией протокола и фактическим трафиком. Позволяет быстро добавлять поддержку новых (в том числе закрытых) протоколов благодаря универсальности внутреннего представления.

Статический анализатор Svace

Svace – необходимый инструмент жизненного цикла разработки безопасного ПО, основной статический анализатор компании Samsung. Обнаруживает более 50 классов критических ошибок в исходном коде. Поддерживает языки C, C++, C#, Java, Kotlin и Go. Включён в Единый реестр российского ПО (№4047).

Безопасный компилятор

Безопасный компилятор предотвращает появление уязвимостей в программе при выполнении агрессивных оптимизаций кода (например, в результате использования конструкций, проявляющих неопределённое поведение). Минимально ограничивает выполняемые оптимизации, что позволяет избежать значительного падения производительности по сравнению с полным отключением оптимизаций.

Блесна: инструмент динамического анализа помеченных данных

Блесна – специализированный инструмент, предназначенный для поиска утечек в памяти чувствительных данных, таких как пользовательские пароли и ключи шифрования. Применим для анализа всего программного стека от загрузчика до прикладного ПО.

ИСП Обфускатор

ИСП Обфускатор — комплекс технологий по противодействию массовой эксплуатации уязвимостей, возникающих в результате ошибок или закладок. Если злоумышленник смог атаковать одно из устройств с одинаковым ПО, остальные останутся под защитой благодаря изменениям, внесённым в код.

Платформа для анализа программ на основе эмулятора QEMU

Платформа ИСП РАН для анализа программ построена на базе открытого эмулятора QEMU, который используется при необходимости кроссплатформенной разработки. Поддерживает механизмы обратной отладки и интроспекции, а также режим полносистемной эмуляции для отладки низкоуровневого ПО.

Среда анализа бинарного кода

Уникальный промышленный инструмент для анализа свойств бинарного кода. Позволяет работать с кодом различных целевых процессорных архитектур. Не требует наличия отладочной информации и исходных текстов. Применим для анализа всего программного стека от загрузчика до прикладного ПО. Включена в Единый реестр российского ПО (№5323).

Инструмент динамического символьного выполнения Sydr

Sydr – инструмент автоматической генерации тестов для сложных программных систем с целью увеличения покрытия кода и обнаружения ошибок. Cтроит математическую модель программы, позволяя фаззеру открывать новые пути выполнения, которые сложно обнаружить классическими методами генетических мутаций. Разработанные методы развивают технологию символьного выполнения, представленную в созданных ранее в ИСП РАН инструментах Avalanche и Anxiety. В отличие от аналогичных открытых инструментов, Sydr проверяет результаты своей работы на корректность и определяет, действительно ли сгенерированные входные данные приводят к инвертированию целевых переходов.

Решения на базе свободного ПО и собственных разработок ИСП РАН для организации облачных сред, предоставляющих инфраструктурные ресурсы по запросу

Использование облачной инфраструктуры позволяет сэкономить машинное время и время разработчиков за счет оптимизации использования ресурсов и сокращения времени на создание и настройку систем. Например, для Веб-сервисов с большим числом пользователей, нагрузка может радикально меняться в зависимости от времени суток, времени года и событий. За счет эластичной балансировки ресурсов в облачных средах можно сэкономить огромное количество ресурсов. Облачная инфраструктура ИСП РАН состоит из нескольких частей, основанных на наиболее перспективных системах, предоставляющих функции виртуализации и надежного хранения.

Прочие технологии

ИСП Crusher: комплекс динамического анализа программ

ИСП Crusher – программный комплекс, комбинирующий несколько методов динамического анализа. Состоит из двух инструментов: ИСП Fuzzer для проведения фаззинг-тестирования и Sydr, отвечающий за автоматическую генерацию тестов для сложных программных систем. В ближайшее время в комплекс планируется включить ещё одну технологию ИСП РАН: BinSide. ИСП Crusher позволяет построить процесс разработки в соответствии с ГОСТ Р 56939-2016 и «Методикой выявления уязвимостей и недекларированных возможностей в программном обеспечении» ФСТЭК России.