История о том как semgrep лицензию поменяли

История о том как semgrep лицензию поменяли

Владимир Карманов и Александр Мареев

Что такое Semgrep и кто им пользуется

Semgrep — «семантический grep» для кода. Инструмент статического анализа (SAST), который ищет уязвимости по шаблонам, написанным «как обычный код», работая с собственным шаблонным сопоставлением AST.

На 23 июня 2025 г. репозиторий https://github.com/semgrep/semgrep имеет ≈ 11,9 k ⭐ и 700+ форков, а сам README перечисляет компании-пользователи (GitLab, Dropbox, Slack, Figma, Shopify и др.).

Хронология событий

13 декабря 2024 Пост в блоге “Important updates to Semgrep OSS”.

Одновременно Semgrep объявил, что OSS-версия теперь называется Semgrep Community Edition (CE). Лицензия движка осталась LGPL 2.1. А все правила, созданные Semgrep Inc., переведены на новую Semgrep Rules License v1.0 с Commons Clause, запрещающую их использование в конкурирующих SaaS-сервисах (grace-period до 31 января 2025). Также несколько экспериментальных функций и метаданных JSON/SARIF стали доступны лишь в коммерческой Pro версии.

январь 2025 Часть вендоров (Amplify, Jit, Aikido и др.) объявляют форк Opengrep.

Мотивация — закрепить полностью open-source модель и вернуть «отключённый» функционал.

январь 2025 Выходят публикации-разборы

Josh Grossman и Crash Override подчёркивают, что движок Semgrep не закрыли; вопросы вызывает новая лицензия для правил и требование логина для ряда фич.

Ключевой факт: исходный код движка Semgrep по-прежнему LGPL 2.1. — это формально сохраняет его open-source статус. Однако ключевые изменения коснулись лицензии на официальные правила, что уже сейчас осложняет использование Semgrep CE как встроенного компонента в вендорский продукт — ограничения касаются распространения правил в конкурирующих облачных сервисах. При этом возникают опасения, что Semgrep может со временем превратиться из полноценного open-source проекта в типичный Community Edition — с ограниченным доступом к функциональности и без гарантированного доступа к исходникам всего набора компонентов.

Что именно «ушло за paywall»

  • Подсчёт LOC, fingerprinting, ignore-tracking, метапеременные ($AUTHOR, $FILENAME) — теперь требует авторизации.
  • Часть полей SARIF/JSON (служебная телеметрия).
  • Экспериментальные фичи (multilanguage scan, data-flow V2).

Реакция сообщества

  1. Дискуссии на Reddit / LinkedIn. Спор «open-core vs open-source» еще раз поднял извечную тему о прекрасном для AppSec-рынка — зависимость от вендора.
  2. DeepSource на этих новостях ускорили разработку сканера Globstar и в январе выпустили первую версию;
  3. Появился форк Opengrep, на него мы обратили особое внимание, об этом далее.

Opengrep

В результате всего вышеперечисленного родился Opengrep — независимый форк Semgrep CE, который финансируют девять AppSec-вендоров (Aikido, Amplify, Arnica, Endor Labs, Jit, Kodem, Legit, Mobb и Orca). Проект сохраняет 100% открытость и старую лицензию правил. Цель команды — передать движок в нейтральное сообщество и исключить ситуацию, когда один вендор может все изменить.

Отличия Opengrep от Semgrep

Мы в свою очередь успели протестировать Opengrep еще в апреле и вот результаты:

  • Opengrep и его правила распространяются под лицензией LGPL-2.1, что предоставляет возможность использования стандартных правил в контексте SaaS и внутреннего тестирования других компаний, в отличие от Semgrep после изменения своей лицензии
  • Убранные из SARIF поля fingerprint и metavars были возвращены
  • Локальный playground
  • Репозиторий с комьюнити правилами

Стоит отметить, что в оригинальном проекте Semgrep, по данным публичного roadmap большая часть усилий команды сосредоточена на разработке платной версии движка — Semgrep Pro engine, доступ к которой находится за пэйволлом.

Playground

Web-playground Semgrep поддерживает live-share и rule-builder; локальный Opengrep-playground пока без этих функций в остальном среда для тестирования правил по функционалу совпадает с оригиналом от Semgrep. 

Полезные флаги

--dump-ast
If --dump-ast, shows AST of the input file or passed expression and then exit (can use --json).

--error
Exit 1 if there are findings. Useful for CI and scripts.

--json
Output results in Opengrep's JSON format.

-q, --quiet
Only output findings.

--sarif
Output results in SARIF format.

--test
Run test suite.

--test-ignore-todo
If --test-ignore-todo, ignores rules marked as '#todoruleid:' in test files.

--text
Output results in text format.

--output-enclosing-context
that can be added to the scan command, adding information about the surrounding context of the matched fragments of code, such as the innermost function and/or class in which the match occurs. This is only available for json output, so the --jsonflag must also be passed, and it's an experimental feature so it also requires --experimental.

Замеченные недостатки в сканировании

  •  Не видит кроссфайловые обращения (это обещают добавить в ближайшем будущем)
  •  Не отслеживает реальный граф вызовов
  •  Не справляется с непрямыми вызовами

Какие планы в сообществе на Opengrep

Сообщество проводит открытые roadmap сессии для определения приоритетов на ближайший цикл разработки. Так по итогам открытого голосования участников сообщества и вовлечённых компаний сформировался следующий набор задач:

Сегодня Opengrep уже закрывает ключевой функционал Semgrep CE для CI, а дорожная карта проекта обещает то, чего в CE можно больше не ждать.

Лицензия любого «открытого» инструмента — такой же риск, как и его баги, поэтому к ней нужно относиться как к зависимости, которую могут внезапно поменять. Хоть проекты под защитой фондов (ASF, CNCF) меняют лицензию крайне редко, история с Semgrep, продуктами Hashicorp и ElasticSearch показала, что одним утром работающий инструмент может превратиться в экстренный аудит лицензий и миграции на форки. 

Вывод простой: прежде чем встраивать open-source решения в свой процесс, заранее продумайте, что будете делать, если завтра его условия использования изменятся. Закладывайте «план Б»: готовый Helm-chart/контейнер с форком, чек-лист миграции и резервный бюджет на случай если нет альтернатив — тогда перемена лицензии станет лишь операционной задачей, а не пожаром.

Забавный факт — сообщество Opengrep считает трудозатраты в футболках

Ссылки на источники

Semgrep

Opengrep

Globstar от DeepSource


Report Page