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


Текущие проекты

Исследование и разработка методов поиска ошибок на основе метода поиска клонов кода

Начало проекта – 2018 год. Заказчик - РФФИ.

Цель данного проекта – разработка методов и создание инструментов поиска ошибок в исходном и бинарном коде программ с использованием результатов, полученных по итогам предыдущего проекта «Исследование и разработка методов поиска повторного использования фрагментов кода (клонов)».

ИСП Обфускатор. Технология запутывания кода для защиты от эксплуатации уязвимостей

ИСП Обфускатор базируется на результатах долгосрочных исследований, проводимых в ИСП РАН с 2002 года. Технология прошла путь от фундаментальных исследований до внедрения в реальные промышленные разработки. За это время было опубликовано большое количество публикаций по теме запутывания программного кода и защищено две диссертационные работы. ИСП Обфускатор реализован на базе двух компиляторных инфраструктур (LLVM и GCC).

Статический анализатор Svace. Промышленный поиск критических ошибок в безопасном цикле разработки программ

Институтом системного программирования РАН разработан инструмент статического анализа Svace, удовлетворяющий всем требованиям для анализатора промышленного качества. Инструмент Svace поддерживает языки программирования C/C++, Java, C# (C# может также предоставляться как отдельный инструмент), операционные системы Linux, Windows, а также анализ программ, собираемых на платформах Intel x86/x86-64 Linux/Windows, ARM/ARM64. Для языков C/C++ поддерживаются популярные компиляторы ОС Linux/Windows и множество компиляторов для встраиваемых систем.

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

Платформа для анализа программ на основе эмулятора QEMU Среди эмуляторов с открытым исходным кодом QEMU занимает особое место, поскольку в практике промышленного программирования именно ему отдают предпочтение, когда требуется вести кросс-разработку (различные процессорные архитектуры целевого устройства и компьютера, на котором ведется разработка). На основе Qemu крупные IT-компании, такие как Google и Samsung, разрабатывают специализированные эмуляторы для мобильных устройств. Qemu в режиме полносистемной эмуляции поддерживает более 10 семейств процессоров, в число которых входят x86, PowerPC, Sparc, MIPS, ARM.

ProtoSphere. Программная инфраструктура для проведения углубленного анализа сетевого трафика с возможностью разбора заголовков произвольного стека протоколов

В настоящее время задача анализа сетевого трафика приобретает все большую актуальность: этому способствует как развитие и внедрение новых сетевых технологий (VoIP, P2P, потоковое видео), так и появление большого количества протоколов прикладного уровня, использующихся новыми сетевыми приложениями. В зависимости от конкретной системы, использующей анализ, и решаемой задачи применяется либо анализ на потоке (онлайн), либо анализ записанных сетевых трасс (оффлайн).

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

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

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

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

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

Бинарный статический анализ необходим в тех случаях, когда нет доступа к исходному коду, например, при анализе библиотек. Статический анализатор бинарного кода разрабатывается на основе фреймворка BinNavi. Для удобства пользователя анализатор интегрирован в IDA PRO. Поддерживается анализ бинарных файлов и библиотек архитектур x86, x64, ARM, PowerPC и MIPS.

Завершенные проекты

Исследование и разработка программной инфраструктуры для глубокого анализа сетевого трафика.

Начало проекта – 2015 год. Окончание проекта - 2018 год. Заказчик - РФФИ.

Задача анализа сетевого трафика приобретает все большую актуальность в связи с развитием и внедрением новых сетевых технологий, увеличением объема данных (в том числе, конфиденциальных), передаваемых по сети (аудио-, видеосвязь, обмен сообщениями), а также выпуском большого количества приложений с собственными закрытыми протоколами передачи данных. Существующие инструменты, как правило, не позволяют проанализировать протоколы прикладного уровня (отсутствуют механизмы анализа восстановленных потоков данных) и предоставляют функциональность для анализа лишь наиболее распространенных протоколов. Для передачи конфиденциальной информации (сообщения, видеосвязь, персональные данные пользователей) по сети требуется высокий уровень безопасности.

Исследование и разработка методов поиска повторного использования фрагментов кода (клонов).

Начало проекта – 2015 год. Окончание проекта - 2018 год. Заказчик - РФФИ.

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

Обработка больших потоков данных.

Начало проекта – 2014 год. Окончание проекта - 2016 год. Заказчик - РФФИ.

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

Статический анализ исходного кода программ для их понимания.

Начало проекта – 2014 год. Окончание проекта - 2016 год. Заказчик - РФФИ.

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

Разработка комплекса научно-технических решений предназначенных для хранения и обработки сверхбольших объемов данных в задачах механики сплошной среды.

Начало проекта – 2014 год. Окончание проекта - 2016 год. Заказчик - Министерство образования и науки.

Проект направлен на решение задачи обработки больших объемов данных, возникающих при численном решении задач механики сплошной среды.

Алгоритмы оптимизации размещения виртуальных машин в модели облачных вычислений SaaS.

Начало проекта – 2014 год. Окончание проекта - 2016 год.

Основной целью проекта является создание программных средств, позволяющих повысить эффективность использования вычислительных ресурсов в облачной инфраструктуре. Полученные результаты применяются в системе UniHUB для размещения приложений на виртуальных машинах под управлением OpenStack.

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

Начало проекта – 2014 год. Окончание проекта - 2017 год. Заказчик - РФФИ.

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

Разработка инструментов программирования гетерогенных вычислительных систем эксафлопсного класса.

Начало проекта – 2013 год. Окончание проекта - 2016 год. Заказчик - РФФИ.

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

Реализация потенциала суперкомпьютеров для масштабируемого численного моделирования задач газо- и гидродинамики в индустриальных приложениях с использованием свободного программного обеспечения.

Начало проекта – 2013 год. Окончание проекта - 2013 год. Заказчик - Министерство образования и науки.

Проект был направлен на создание научно-технического задела в области прямого численного моделирования турбулентности и метода крупных вихрей, а также на поиск путей наиболее эффективного использования суперкомпьютера в индустриальных приложениях. В рамках проекта было разработано программное обеспечение, реализующее алгоритмы, используемые для численного моделирования задач газо- и гидродинамики в индустриальных приложениях на основе свободного программного пакета OpenFOAM. На основе программного обеспечения разработана методика использования суперкомпьютера для численного моделирования задач газо- и гидродинамики в индустриальных приложениях.

Исследование и разработка методов, обеспечивающих возможность автоматического обнаружения логических ошибок и шаблонов неэффективного поведения в параллельных приложениях и их реализации в web-среде в виде программного комплекса.

Начало проекта – 2013 год. Окончание проекта - 2013 год. Заказчик - Министерство образования и науки.

Проект был направлен на создание научно-технического задела в области создания программных инструментов для поддержки процесса разработки параллельных приложений, гибкой и масштабируемой платформы для интеграции инструментальных средств управления вычислительными ресурсами суперкомпьютерного центра. В рамках данной работы был разработан метод обнаружения неэффективного использования коммуникационных шаблонов, логических и семантических ошибок в параллельных приложениях. Были разработаны и реализованы инструментальные средства для автоматизированного выявления ошибок в параллельных программах, написанных на языке C/C++ или Fortran с использованием библиотеки MPI , на языке UPC.

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

Начало проекта – 2013 год. Окончание проекта - 2013 год. Заказчик - Министерство образования и науки.

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

Разработка программно-аппаратной платформы «виртуальный суперкомпьютер», обеспечивающей использование суперкомпьютеров на основе технологий виртуализации.

Начало проекта – 2012 год. Окончание проекта - 2013 год. Заказчик - Министерство образования и науки.

В рамках работ по контракту разработан программный комплекс «виртуальный суперкомпьютер». Программный комплекс разработан в модели свободного ПО и основан на компонентах с открытым исходным кодом.

Исследование и разработка прототипа инструмента анализа исполняемого кода программ для обнаружения ошибок.

Начало проекта – 2012 год. Окончание проекта - 2013 год.

Данный проект посвящен разработке программных инструментов, в автоматизированном режиме ищущих набор входных данных, на котором реализуется ошибка анализируемой программы. Инструменты рассчитаны на поиск ошибок в бинарном коде программ, осуществляющих взаимодействие по сети.

Исследование и разработка методов восстановления формата данных.

Начало проекта – 2011 год. Окончание проекта - 2013 год. Заказчик - РФФИ.

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

Высокоуровневые модели параллельных вычислений и их библиотеки поддержки времени выполнения.

Начало проекта – 2011 год. Окончание проекта - 2012 год. Заказчик - Министерство образования и науки.

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

Проектирование и разработка web-ориентированного производственно-исследовательского центра, ориентированного на решение задач анализа программ.

Начало проекта – 2011 год. Окончание проекта - 2012 год. Заказчик - Министерство образования и науки.

В рамках проекта был разработан прототип web-центра, ориентированного на решение задач анализа программ на базе разрабатываемых в ИСП РАН программных компонент технологической платформы UniHUB, вычислительной инфраструктуры программы «Университетский кластер» и открытого пакета анализа программ Avalanche.

Проведение исследований и создание научно-технического задела по созданию вычислительной платформы с набором средств разработки (API) для проведения автоматизированных инженерных расчетов больших задач аэрогидродинамики на суперкомпьютерах петафлопного кл

Начало проекта – 2011 год. Окончание проекта - 2012 год. Заказчик - Министерство образования и науки.

Проект был направлен на создание экспериментальной платформы для численного моделирования на базе вычислительного комплекса OpenFOAM для гетерогенных вычислительных систем с графическими ускорителями, путем применения технологий CUDA для перенесения наиболее ресурсоемких вычислений на графический ускоритель и организации взаимодействия центрального процессора и ускорителя.

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

Начало проекта – 2011 год. Окончание проекта - 2013 год. Заказчик - РФФИ.

При построении системы компиляции для языков общего назначения, учитывающей специфические особенности целевой аппаратуры и наиболее вероятный сценарий использования, необходимо применять методы динамической и адаптивной оптимизации. Исследование таких методов удобно проводить в компиляторной инфраструктуре LLVM.

Организация доступа к распределенным ресурсам от уровня инфраструктуры до уровня приложения как к Web-сервису.

Начало проекта – 2010 год. Окончание проекта - 2012 год. Заказчик - Министерство образования и науки.

В процессе выполнения работы, были решены задачи исследования методов доступа к высокопроизводительным ресурсам, а также разработки экспериментального образца единой аппаратно-программной платформы, обеспечивающей доступ к высокопроизводительным ресурсам, как к Web сервисам.