Что я ищу в чужом скилле за пять минут?

Скилл - это папка с текстовым файлом. Звучит безобидно. Внутри может лежать питоновский скрипт, который запустится у вас на машине с вашими правами.

Я ставлю их пачками, поэтому проверка у меня механическая. Пять минут на набор, шесть проверок.

1) curl или wget, у которых вывод уходит в шелл. Это удалённое исполнение кода в чистом виде: содержимое чужого сервера выполняется у вас без единого вопроса.

2) eval и exec в питоне, child_process в ноде.

3) сетевые вызовы в скриптах. Смотрю не факт вызова, а адрес. Запрос к анализируемому сайту - нормально. Запрос к серверу автора скилла - это ваши данные на чужой машине.

4) обращения к ssh-ключам, файлам с учётками, связке ключей.

5) домены в бинарниках и скриптах. Все, которые не объясняются задачей.

6) инъекции в самом markdown - «игнорируй предыдущие инструкции» и подобное.

А теперь то, ради чего этот пост. Срабатывание проверки не равно угрозе, и это отличает проверку от паранойи.

В наборе на 33 тысячи звёзд я нашёл всё сразу: curl в шелл, eval, и адрес 169.254.169.254 - это метаданные облака, классическая цель атаки. Выглядит как приговор.

Разобрал каждое. curl в шелл - в их собственном установщике, который я не запускаю, и как пример угрозы внутри скилла-аудитора. eval - в детекторе опасных паттернов, он этой строкой их и ищет. Адрес облака - в чеклистах OWASP у скиллов для пентеста.

Ни одного реального срабатывания. Набор чистый.

Если бы я остановился на выводе grep, я бы выбросил хороший инструмент. Если бы не проверял вовсе - однажды поставил бы плохой.

Как вы проверяете то, что ставите себе в рабочее окружение?

Что я ищу в чужом скилле за пять минут? | Сетка — социальная сеть от hh.ru