SAST для 1С: зачем анализировать код конфигурации на уязвимости
Static Application Security Testing — стандартная практика в разработке ПО. Для 1С такой инструмент долгое время отсутствовал. Рассказываем, что именно ищет SAST в коде конфигурации и почему это важно.
SAST (Static Application Security Testing) — это анализ исходного кода без его выполнения. Инструмент читает код, ищет паттерны, характерные для уязвимостей, и сообщает о находках до того, как код попадёт в продуктив.
Для большинства языков программирования SAST-инструменты существуют давно: SonarQube, Checkmarx, Semgrep. Для языка 1С такого инструмента долгое время не было.
Почему SAST для 1С — отдельная задача
Язык 1С:Предприятие имеет специфику, которая делает анализ нетривиальным:
- •Двуязычность: код пишется на русском или английском, конструкции эквивалентны
- •Метаданные как часть кода: права доступа, формы, реквизиты — всё это влияет на безопасность
- •Специфичные уязвимости: инъекции в языке запросов 1С отличаются от SQL-инъекций в классическом понимании
- •Закрытый формат: конфигурация хранится в бинарном формате .cf/.cfu, требует декомпиляции
Что ищет SAST в коде 1С
SQL-инъекции через язык запросов
Конкатенация строк при построении запросов — классическая уязвимость. В 1С она выглядит так:
ТекстЗапроса = "ВЫБРАТЬ * ИЗ Справочник.Номенклатура ГДЕ Наименование = """ + ВходнойПараметр + """";
Если ВходнойПараметр содержит управляющие символы — запрос можно модифицировать.
Хардкод учётных данных
Пароли, токены, ключи API, строки подключения — всё это нередко встречается прямо в коде:
СтрокаПодключения = "Server=db-server;Database=mydb;User=sa;Password=P@ssw0rd";
Небезопасное использование Execute и Eval
Выполнение динамически сформированного кода открывает возможность для инъекций:
Выполнить(КодИзВнешнегоИсточника);
Небезопасная передача данных
Использование HTTP вместо HTTPS в обращениях к внешним сервисам, отключение проверки сертификатов.
Запись в произвольные пути файловой системы
Операции с файлами без проверки пути могут привести к записи в системные директории или перезаписи важных файлов.
Как это работает в ВанСек
Процесс анализа:
- •Загружается файл конфигурации (.cf или .cfu) или устанавливается подключение к серверу
- •ВанСек декомпилирует объекты и извлекает исходный код всех модулей
- •Движок правил прогоняет код через набор детекторов
- •Каждая находка получает уровень критичности и описание
Правила написаны на YAML и поддаются кастомизации. Если в вашей компании есть корпоративные стандарты разработки — их можно формализовать в правила и включить в анализ.
Когда запускать SAST
Оптимальная практика — регулярный анализ: после каждого релиза конфигурации или по расписанию (еженедельно). Это позволяет отслеживать появление новых уязвимостей и не накапливать технический долг по безопасности.
Первый запуск на давно эксплуатируемой системе обычно даёт значительное количество находок — это нормально. Важно не испугаться объёма, а расставить приоритеты и устранять планомерно.
Проверьте свою систему 1С
Запустите пилот — получите отчёт о реальных уязвимостях в вашей конфигурации.
Связаться