🛠 Инструменты для выявления вредоносных зависимостей
В последнее время наблюдается кратный рост атак на цепочки поставок. Особенно популярны вектора атак через зависимости: dependency confusion, typosquatting, внедрение вредоносных изменений в исходный код библиотек и т.д.
Для борьбы с такого рода угрозами есть несколько интересных инструментов. О них и поговорим:
1️⃣ Packj — инструмент от Ossillate для поиска потенциально опасных конструкций в пакетах NPM, PyPI и RubyGems. Анализирует метаинформацию с целью выявления рискованных атрибутов. Например, релиз новой версии после длительного перерыва или отсутствие публичного репозитория с исходным кодом. Использует Strace и MalOSS для детектирования подозрительного поведения: наличия техник обфускации кода, генерации нового кода во время выполнения и т.д. Также позволяет осуществлять безопасную установку зависимостей в специальном режиме, который блокирует нелегитимную активность.
2️⃣ OSSGadget — обширный набор из 12 инструментов от Microsoft, каждый из которых решает определенную задачу в рамках анализа open-source библиотек. Самый примечательный среди них — oss-detect-backdoor. Он ищет потенциально вредоносные куски кода внутри исследуемого пакета. Поиск осуществляется с помощью регулярных выражений, посвященных 10 различным предметным областям. Например: obfuscation, dependency confusion, code_execution, data_exfiltration и т.д.
3️⃣ Package Analysis — проект от OpenSSF, который позволяет анализировать поведение зависимостей из NPM, PyPI и RubyGems. Запускает установку и импорт исследуемого пакета в изолированном контейнере, где с помощью утилит Strace и Gopacket формируется лог действий: обращение к файлам, подключение к сетевым адресам, выполнение команд. Все это сохраняется в json формате, что позволяет самостоятельно анализировать результаты и выносить вердикт, является ли исследуемый пакет вредоносным или нет.
4️⃣ Package Hunter — инструмент от Gitlab для обнаружения аномального поведения зависимостей. Поддерживает NPM и RubyGems. Осуществляет установку исследуемого пакета в изолируемой среде и мониторит активность с помощью Falco. В отличие от Package Analysis выявляет конкретные аномалии. Например, доступ к файлам с секретами, установка неразрешенного сетевого соединения, запуск исполняемых файлов из черного списка и т.д. За отслеживание подозрительной активности отвечают специальные правила.
Все указанные инструменты достаточно новые, поэтому могут генерировать большое количество ложно-положительных срабатываний. Тем не менее, их можно настроить под себя, отредактировав конфиругационный файл или соответствующие правила.
#tools #dependencies #malware
В последнее время наблюдается кратный рост атак на цепочки поставок. Особенно популярны вектора атак через зависимости: dependency confusion, typosquatting, внедрение вредоносных изменений в исходный код библиотек и т.д.
Для борьбы с такого рода угрозами есть несколько интересных инструментов. О них и поговорим:
1️⃣ Packj — инструмент от Ossillate для поиска потенциально опасных конструкций в пакетах NPM, PyPI и RubyGems. Анализирует метаинформацию с целью выявления рискованных атрибутов. Например, релиз новой версии после длительного перерыва или отсутствие публичного репозитория с исходным кодом. Использует Strace и MalOSS для детектирования подозрительного поведения: наличия техник обфускации кода, генерации нового кода во время выполнения и т.д. Также позволяет осуществлять безопасную установку зависимостей в специальном режиме, который блокирует нелегитимную активность.
2️⃣ OSSGadget — обширный набор из 12 инструментов от Microsoft, каждый из которых решает определенную задачу в рамках анализа open-source библиотек. Самый примечательный среди них — oss-detect-backdoor. Он ищет потенциально вредоносные куски кода внутри исследуемого пакета. Поиск осуществляется с помощью регулярных выражений, посвященных 10 различным предметным областям. Например: obfuscation, dependency confusion, code_execution, data_exfiltration и т.д.
3️⃣ Package Analysis — проект от OpenSSF, который позволяет анализировать поведение зависимостей из NPM, PyPI и RubyGems. Запускает установку и импорт исследуемого пакета в изолированном контейнере, где с помощью утилит Strace и Gopacket формируется лог действий: обращение к файлам, подключение к сетевым адресам, выполнение команд. Все это сохраняется в json формате, что позволяет самостоятельно анализировать результаты и выносить вердикт, является ли исследуемый пакет вредоносным или нет.
4️⃣ Package Hunter — инструмент от Gitlab для обнаружения аномального поведения зависимостей. Поддерживает NPM и RubyGems. Осуществляет установку исследуемого пакета в изолируемой среде и мониторит активность с помощью Falco. В отличие от Package Analysis выявляет конкретные аномалии. Например, доступ к файлам с секретами, установка неразрешенного сетевого соединения, запуск исполняемых файлов из черного списка и т.д. За отслеживание подозрительной активности отвечают специальные правила.
Все указанные инструменты достаточно новые, поэтому могут генерировать большое количество ложно-положительных срабатываний. Тем не менее, их можно настроить под себя, отредактировав конфиругационный файл или соответствующие правила.
#tools #dependencies #malware
🔥5👍4❤1
💫 Go Vulnerability Management и Govulncheck
Создатели языка Go рассказали о своем новом проекте Go Vulnerability Management и представили govulncheck — утилиту для проверки используемых зависимостей на предмет наличия известных уязвимостей.
В отличие от аналогов она не просто сканирует файл с перечнем всех импортируемых зависимостей, чтобы определить, содержат ли они уязвимости, но и делает дополнительный шаг, проверяя, вызывается уязвимый код или нет. Это позволяет убрать шум из многочисленных нерелеватных уязвимостей и сконцентрироваться на исправлении реальных проблем.
Чтобы реализовать такую киллер-фичу авторам пришлось создать свою собственную базу уязвимостей и организовать процессы таким образом, чтобы для каждой проблемы были отмечены все уязвимые функции.
Ранее такой подход я встречал только у Checkmarx и их инструмента CxSCA (подробнее можно прочитать вот тут). Но теперь эта тема становится все популярнее. Совсем недавно ребята из r2c анонсировали Semgrep Supply Chain с очень похожим функционалом.
Но это все — коммерческие инструменты, а вот govulncheck может использовать абсолютно любой Go разработчик. Это определенно прорыв для всей экосистемы данного языка. Надеюсь, что-то похожее мы скоро увидим и в других экосистемах.
#tools #dependencies #vulnerabilities
Создатели языка Go рассказали о своем новом проекте Go Vulnerability Management и представили govulncheck — утилиту для проверки используемых зависимостей на предмет наличия известных уязвимостей.
В отличие от аналогов она не просто сканирует файл с перечнем всех импортируемых зависимостей, чтобы определить, содержат ли они уязвимости, но и делает дополнительный шаг, проверяя, вызывается уязвимый код или нет. Это позволяет убрать шум из многочисленных нерелеватных уязвимостей и сконцентрироваться на исправлении реальных проблем.
Чтобы реализовать такую киллер-фичу авторам пришлось создать свою собственную базу уязвимостей и организовать процессы таким образом, чтобы для каждой проблемы были отмечены все уязвимые функции.
Ранее такой подход я встречал только у Checkmarx и их инструмента CxSCA (подробнее можно прочитать вот тут). Но теперь эта тема становится все популярнее. Совсем недавно ребята из r2c анонсировали Semgrep Supply Chain с очень похожим функционалом.
Но это все — коммерческие инструменты, а вот govulncheck может использовать абсолютно любой Go разработчик. Это определенно прорыв для всей экосистемы данного языка. Надеюсь, что-то похожее мы скоро увидим и в других экосистемах.
#tools #dependencies #vulnerabilities
👍9🔥3⚡1