Slack, платформа для командного общения и совместной работы, открыла исходный код своего внутреннего инструмента Hakana — тайп-чекера, который компания разрабатывала для собственных нужд. Шаг вписывается в общий тренд: всё больше проприетарного софта переходит в open source.
Что такое Hakana
Hakana — это инструмент статического анализа для языка программирования Hack. Он построен на базе Psalm и написан на Rust. Проще говоря, Hakana выполняет проверку типов в коде на Hack, прогоняя его через несколько аналитических методов.
Сейчас Slack использует Hakana для поиска проблем в собственном коде на Hack — компания перешла на этот язык с PHP ещё в 2016 году, сославшись на ряд несоответствий и неудобств последнего.
Возможности инструмента
Среди заявленных возможностей Hakana:
- обнаружение неиспользуемых функций и приватных методов;
- выявление неиспользуемых присваиваний внутри замыканий;
- поиск невозможных и избыточных проверок типов;
- предупреждения о потенциальных SQL-инъекциях и межсайтовом скриптинге (XSS);
- предотвращение некорректного использования внутренних API Slack (через плагин-хуки).
В Slack также рассказали о дополнительных сценариях применения инструмента: с его помощью в компании автоматизируют типобезопасные миграции API (тоже через плагин-хуки) и массово удаляют неиспользуемые функции. По словам разработчиков, благодаря Rust такие миграции по всей кодовой базе выполняются достаточно быстро.
Кроме того, Hakana отслеживает, как данные перемещаются между функциями в кодовой базе, и пытается проверить, не попадают ли данные, потенциально контролируемые злоумышленником, туда, где им быть не следует. У инструмента есть и веб-версия, доступная прямо в браузере через WASM — это стало возможным именно благодаря тому, что Hakana написан на Rust.
Почему Slack открыла код
Компания назвала несколько причин такого решения. Во-первых, более широкое сообщество разработчиков может помочь в развитии инструмента, особенно в части анализа безопасности. Во-вторых, это способ «отдать долг» проекту Psalm, на котором построена Hakana. В-третьих, в Slack рассчитывают, что компании с крупными кодовыми базами на PHP смогут форкнуть и доработать Hakana под свои нужды.
Стоит отметить, что язык Hack используют лишь немногие компании — из-за «высокой стоимости переключения»: переход с PHP на Hack требует значительных изменений серверной инфраструктуры.
Подробности о технической реализации Hakana можно найти в анонсирующем блоге Slack.
Источник: It's FOSS.