IGL: Embedded C++ Subset + WASM‑runtime для контролируемого исполнения на MCU

Два компонента: IGL‑Converter (фронтенд для C и C++‑подобного поднабора: AST/NAST, security‑профиль, IR/MMIO) и IGL‑RV‑emb (Draft/Alpha runtime для запуска WebAssembly‑модулей в sandbox на ARM Cortex‑M и RISC‑V). Фокус - предсказуемая память, ограничения выполнения и трассируемый доступ к периферии.

🛡️

Статус: v0.1 Draft/Alpha. Поддержка языка/фич и уровень защитных механизмов зависят от профиля, бэкенда и целевой платформы.

IGL Ecosystem

Экосистема для работы с embedded‑кодом в строгом профиле: парсинг и семантика C/C++‑подобного поднабора, статические проверки и понижение в IR с явными MMIO‑операциями, а также целевой runtime (включая WASM). Статус: v0.1 Draft/Alpha.

Ключевые компоненты:

IGL‑Converter - фронтенд/конвертер для embedded‑кода (C и C++‑подобный subset), который строит AST/NAST, выполняет семантические проверки и применяет правила security‑профиля, после чего понижает программу в промежуточное представление (IR) и целевые форматы. Цель - предсказуемое поведение, сильная диагностика и контролируемый доступ к MMIO в рамках заданных политик.

Подход (v0.1):

1. Единый пайплайн: preprocess → parse/AST → semantic → NAST → security profile → IR/MMIO → targets/runtime.

2. Профилированная безопасность: запреты и проверки (например, без исключений и без динамической памяти; опциональные runtime checks).

3. Мультитаргетинг: генерация C и WebAssembly возможна для поддерживаемого поднабора и выбранного бэкенда.

  • IGL‑Converter: preprocess → AST → semantic → NAST → security profile → IR/MMIO → target generators (например, WASM/runtime, C)

Препроцессор

  • Макросы;
  • Условная компиляция;
  • Диагностика и предсказуемая обработка (часть “макро‑трюков” может быть ограничена в v0.1).

Парсер

  • Лексический анализ;
  • Построение AST;
  • Области видимости и разрешение имён (в рамках поднабора).

Семантика и анализ

  • Проверки типов и корректности конструкций;
  • Анализ достижимости/инициализации (по возможностям v0.1);
  • Правила security‑профиля и диагностические сообщения.

Транслятор IR

  • Промежуточное представление (IR);
  • Сохранение метаданных;
  • Аннотации безопасности и MMIO‑метки (где применимо).

Оптимизатор

  • Устранение мёртвого кода;
  • Оптимизация выражений;
  • Преобразования, совместимые с профилем и сохранением семантики.

Генераторы

  • C код (при наличии соответствующего бэкенда);
  • WebAssembly (целевой формат);
  • Другие форматы - по мере реализации.

  • IGL-RV-emb: Защищенная среда выполнения для безопасного выполнения WebAssembly кода на микроконтроллерах с архитектурой ARM Cortex-M и RISC-V. IGL-RV-emb - это «цифровой телохранитель» для ваших устройств.
  • Политики исполнения:

    1. Ограничения времени/итераций (fuel), контроль доступных возможностей (allowlist) - по конфигурации.

    2. Возможность встроить проверку аутентичности модулей (например, подписи) - если включено в интеграции/сборку.

    Особенности:

    1. no‑std/без ОС — по целевому дизайну.

    2. Требования по памяти/flash зависят от конфигурации runtime и набора поддерживаемых WASM‑фич (цифры фиксируются на целевом MCU в пилоте).

    3. Внедрение этого решения не требует замены железа - работает на существующих микроконтроллерах.

Основные компоненты IGL-RV-emb:

  • WASM декодер с поддержкой базовых инструкций;
  • No-std - работает без стандартной библиотеки;
  • Статическое выделение памяти - без heap;
  • Sandbox для безопасного выполнения кода;
  • HAL абстракция для работы с железом;

Функции безопасности IGL-RV-emb:

  • Белый список разрешенных инструкций;
  • Стек-машина с защитой от переполнения;
  • Ограничение времени выполнения (fuel);
  • Проверка цифровых подписей;
  • Защита от отладчиков;

Выгоды применения IGL Eco:

Контролируемое выполнение и управляемая поверхность атаки

  • Security‑профиль для embedded‑кода: запрет опасных возможностей (например, исключений, динамической памяти, рекурсии) и предсказуемая модель выполнения.
  • Трассируемый доступ к периферии: MMIO‑операции могут быть явными и ограниченными политикой (allowlist/sandbox), что облегчает аудит.
  • Runtime‑контроль: ограничение времени/циклов (fuel) и проверки целостности исполнения - в зависимости от конфигурации и платформы.

Быстрее внедрение практик безопасности в разработку

  • Часть проверок автоматизируется в сборке: правила профиля + опциональные checks (bounds/div‑by‑zero/инициализация) - по настройкам.
  • Сильная диагностика: ошибки локализуются ближе к месту возникновения, меньше времени на отладку регрессий.
  • Подходит для постепенного внедрения: можно начать с критичных модулей и расширять покрытие.

Доверие и комплаенс-подготовка

  • Проверяемые свойства: ограничения ресурсов, правила профиля, контроль MMIO, воспроизводимые результаты сборки.
  • Упрощает внутренний аудит и подготовку к требованиям безопасности и сертификации (итог зависит от стандарта и процесса оценки).
  • Полезно для industrial/enterprise/IoT, где важны контролируемость и предсказуемость поведения устройства.

Интеграция без “замены всего”

  • Целевые MCU: ARM Cortex‑M и RISC‑V (покрытие и требования зависят от конкретного чипа и конфигурации).
  • Converter отвечает за анализ/понижение и аннотации, runtime - за sandbox и политики исполнения.
  • Встраивается как шаг в CI/CD и не требует изменения привычного workflow, если проект укладывается в поддерживаемый поднабор.

Как это работает?

IGL-Converter

Фронтенд и конвейер проверок для embedded‑кода

  • Парсит C и C++‑подобный поднабор, строит AST/NAST и выполняет семантические проверки.
  • Применяет security‑профиль и формирует IR с аннотациями (включая MMIO‑метки, где применимо).
  • Генерирует целевые артефакты (например, WASM/runtime или C) - в зависимости от бэкенда и профиля.

IGL-RV-emb

Draft/Alpha WASM‑runtime для микроконтроллеров

  • Запускает WASM‑модули в sandbox на MCU (ARM Cortex‑M, RISC‑V) с политиками исполнения и ограничением ресурсов.
  • Поддерживает fuel‑лимиты, контроль стека/памяти и allowlist возможностей (по конфигурации).
  • Требования к памяти и покрытие WASM‑инструкций зависят от версии runtime и целевой платформы.

Примечание: IGL v0.1 - Draft/Alpha. Security‑профили и sandbox снижают риски, но итоговая защищённость зависит от конфигурации, целевого MCU, цепочки поставки и принятой модели угроз.

Почему выбирают IGL‑ECO

Снижение затрат

на внедрение и сопровождение практик безопасности (зависит от проекта)

Время интеграции

в сборку/CI/CD как шаг пайплайна (оценка зависит от покрытия и профиля)

Память runtime

требования зависят от конфигурации WASM‑фич, sandbox и целевого MCU

Накладные расходы

по производительности - зависят от включённых проверок и лимитов

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

Что вы получаете на выходе

IGL - это “glass‑box” пайплайн: помимо целевого артефакта вы получаете воспроизводимые отчёты и промежуточные стадии, чтобы понимать что произошло и почему.

Отчёт по профилю

  • report.md - PASS/FAIL и краткие причины
  • security.json - какие правила применены, что запрещено/разрешено
  • Локальные ссылки на места в коде и на правило профиля

Трасса MMIO

  • mmio.json - какие регионы/регистры затронуты (allowlist)
  • Пометки доступа к периферии на IR‑уровне (где применимо)
  • Fail при доступе вне политики (если включено)

Промежуточные стадии

  • ast.txt, nast.txt - дерево и нормализованная форма
  • ir.txt - промежуточное представление
  • “Explain mode” для ключевых решений компиляции (по настройке)

Целевые артефакты

  • module.wasm - артефакт для runtime
  • output.c / другие форматы - при наличии бэкенда
  • repro.zip - воспроизводимый пакет для бага/аудита (опционально)

Примечание: IGL v0.1 - Draft/Alpha. Набор файлов и покрытие стадий зависят от выбранного профиля и бэкенда.

Типовые сценарии использования

Не “магия безопасности”, а инженерные сценарии, где важны предсказуемость, ограничения и наблюдаемость.

Обновляемая логика на MCU

  • Поставляете функциональность как модуль (например, WASM) вместо полной перепрошивки.
  • Runtime применяет политики исполнения: sandbox, fuel, allowlist возможностей.
  • Опционально: проверка подписи/аутентичности модулей (если включено в интеграции).

Контроль доступа к периферии

  • Декларируете, к каким MMIO‑регионам модуль может обращаться.
  • Получаете отчёт и трассу MMIO; попытки доступа вне политики могут приводить к fail.
  • Упрощает аудит “кто трогает железо” и уменьшает скрытые зависимости.

Embedded C++ subset под строгий профиль

  • Стабильный разбор и диагностика embedded‑паттернов (HAL, драйверы, протоколы) в рамках поднабора.
  • Запреты и ограничения профиля: без исключений/heap/рекурсии, bounded loops или fuel‑политика.
  • Воспроизводимые отчёты для code review и контроля рисков изменений.

Разбор “странных багов” и регрессий

  • Промежуточные стадии AST → NAST → IR помогают быстро локализовать источник проблемы.
  • Explain‑логи показывают решения пайплайна (“почему так типизировалось”, “почему запретил профиль”).
  • Repro‑bundle упрощает передачу проблемы между командами.

Explain mode

Режим “почему так”: для ключевых решений пайплайна IGL может выдавать объяснения и точки принятия решений, а не только конечный результат.

Decision points

  • Почему конструкция распознана как declaration/expression
  • Почему выбран тип/приведение (в рамках модели типов)
  • Почему правило профиля сработало (и где)

Stage diff

  • Что изменилось после нормализации (NAST)
  • Что изменилось после понижения в IR/MMIO
  • Какие оптимизации применены и почему они безопасны

Модель угроз и границы

Мы продаём контролируемость и воспроизводимые проверки. Итоговая защищённость зависит от конфигурации, платформы и процесса разработки.

IGL помогает:

• ограничивать опасные возможности языка через профиль;

• снижать риск классов runtime‑ошибок (в зависимости от включённых checks и политики выполнения);

• делать доступ к MMIO наблюдаемым и управляемым;

• получать “evidence” для внутренних проверок и подготовки к сертификации.

IGL не заменяет:

• аппаратные меры (secure boot, защита ключей, debug lock, fault‑injection устойчивость);

• процесс secure development lifecycle и тестирование;

• формальную сертификацию (это отдельный процесс).

Статус: v0.1 Draft/Alpha. Набор поддерживаемых конструкций и WASM‑фич развивается; ограничения бэкенда могут влиять на применимость.

Где применим IGL Eco

Там, где важно контролируемое выполнение на MCU, ограничение ресурсов и аудируемый доступ к периферии/MMIO. Ниже - типовые домены применения (примерные сценарии зависят от проекта и модели угроз).

Промышленная автоматизация и IIoT

  • Контролируемое выполнение модулей на PLC/контроллерах и сенсорах.
  • Ограничение “опасных” возможностей кода через профиль.
  • Политики доступа к периферии (MMIO allowlist) и аудит критичных операций.

Энергетика и Smart Grid

  • Умные счётчики, реле, удалённые станции: ограничение ресурсов и контроль исполнения.
  • Снижение рисков несанкционированного поведения прошивки за счёт профиля и sandbox.
  • Наблюдаемость выполнения и предсказуемые политики обновлений (в зависимости от интеграции).

Транспорт и инфраструктура

  • Контроллеры, датчики, узлы связи: изоляция модулей и лимиты выполнения.
  • Упрощение внутреннего аудита и анализа инцидентов за счёт воспроизводимых проверок сборки.
  • Контроль доступа к критичным интерфейсам устройства.
>

Телеком и сетевые устройства

  • Роутеры/шлюзы/базовые станции: безопасные модули с политиками исполнения.
  • Снижение рисков runtime‑ошибок (в зависимости от включённых проверок).
  • Разделение доверенной части и исполняемых модулей.

Медицина и приборостроение

  • Приборы и периферия: строгие ограничения выполнения и предсказуемое поведение.
  • Поддержка практик безопасной разработки (профили, проверки, аудитируемые артефакты).
  • Применимость зависит от требований регулятора и процесса сертификации.

Edge‑вычисления и устройства с ML

  • Запуск изолированных модулей (в т.ч. рядом с ML‑инференсом) с лимитами по времени/памяти.
  • Контроль взаимодействий модуля с железом через HAL/host‑ABI политики.
  • Удобно для сценариев “плагинов” и обновляемой логики.

Aerospace/Defense

  • Контролируемое выполнение и ограничение ресурсов на борту.
  • Трассируемые взаимодействия с периферией и строгие профили.
  • Подходит для задач, где важны аудит и предсказуемость (конкретные меры зависят от среды и требований).

Безопасность и контроль доступа

  • Контроллеры СКУД, камеры, датчики: изоляция модулей и политики выполнения.
  • Снижение рисков нештатного поведения прошивки при обновлениях.
  • Возможность встраивать проверки аутентичности модулей (если включено в интеграции).

Важно: IGL не является универсальной защитой. Эффект зависит от модели угроз, конфигурации профиля и платформы.

Хотите проверить IGL на вашем коде?

Сделаем пилот: прогоним один модуль через IGL‑Converter, покажем диагностику, ограничения профиля и артефакты понижения (IR/WASM).

Если понадобится - поможем посчитать ROI на ваших вводных (объём кода, требования, платформа, уровень проверок).

IoT-консультант ×