Как проверить безопасность большого пакета в git-репо?

9

Я специально смотрю на emacs helm , который имеет следующие свойства:

  • он имеет тысячи коммитов
  • в основном поддерживается одним пользователем
  • у сопровождающего нет других профилей (социальные сети и т. д.), которые я смог найти в нескольких поисках
  • активно поддерживается (сегодня)

Поскольку я собираюсь установить произвольный код на свой компьютер для использования в моем текстовом редакторе, я хотел проверить, прошел ли он какой-либо процесс проверки. Я хотел бы сказать «ну, это с открытым исходным кодом», но я действительно далек от способности elisp самостоятельно проверять весь код. Я хотел бы предположить, что другие в сообществе рассмотрели это, но один, вероятно, ложный, и два - это самые последние коммиты. Есть ли другие стратегии, которые мне не хватает?

Для записи вектор прост: «открытый исходный код» не имеет большого значения, если участник работает с одноразовой учетной записью, или если нет процесса проверки.

djechlin
источник
6
« Подтвердить » это большое слово. В обычном смысле этого слова, я думаю, ответ: «Вы не (вы не можете)». Вы можете следить за разработкой библиотеки и проверять цифровые подписи и тому подобное, но я не верю и не уверен в этом.
Дрю
3
Хороший вопрос. FWIW, код, который поставляется с Emacs, рассматривается (через список рассылки emacs-diffs), но если какой-то участник добавит дыру в безопасности, я уверен, что он сможет сделать это незамеченным. Конечно, я был бы удивлен, если бы в Emacs все же не было много больших дыр в безопасности, так что я не уверен, насколько это может быть проблемой. Поэтому я думаю, что для того, чтобы получить более уверенный ответ, нужно сосредоточиться на конкретных простых угрозах (например, должно быть достаточно легко проверить, выполняет ли код какое-то не скрытое наблюдение).
Стефан
2
Сопровождающий активен на Emacs Devel в течение многих лет, которые могут быть проверены с помощью поиска, так это некоторая гарантия: lists.gnu.org/archive/cgi-bin/...
Том
1
@ Стефан, я думал только о выборочной проверке. С моей точки зрения, mapatomsможно было бы поставить в «опасную» группу вместе с start-process, evalи funcall. Конечно, могут быть некоторые ложные срабатывания, но если пакет не использует ни одну из этих функций, он может быть помечен как безопасный с большой уверенностью.
abo-abo
1
Вам нужно добавить новый make-process, а также call-process, dbus-<foo>, make-network-stream, а затем vc-do-command, vc-git-command.... А если поставить evalи funcallв «опасной» категории, то большинство / все пакеты опасны.
Стефан

Ответы:

7

Краткий ответ: если вы не читаете код самостоятельно, вы берете на себя много доверия. Сказав, что доверять проекту, полученному из вышестоящего SCM, немного безопаснее, чем тот, который был получен непосредственно из Emacs Wiki, например. Однако, в сущности, вы доверяете автору пакета, чтобы он не превращал зло и не злоупотреблял возможностью запускать произвольный код в рамках вашей сессии Emacs.

Есть некоторые вещи, которые могут заставить вас чувствовать себя в большей безопасности:

  • Придерживайтесь популярных пакетов

Хотя популярные пакеты не получают автоматически больше информации о том, что у них больше пользователей, вероятность того, что вредоносное поведение будет обнаружено до того, как оно затронет вас, возрастет.

  • Посмотрите на метрику кода

На github вы можете получить довольно хорошее представление об истории вклада проектов. Даже если основной автор делает большинство коммитов с широким кругом авторов, он показывает, что есть другие люди, активно заинтересованные в стабильности и эффективности кода.

  • Предпочитаю GNU ELPA и MELPA Стабильно для репозиториев, отслеживающих заголовки (MELPA) или разрешающих непроверенные представления (Мармелад)

Хотя жизнь на переднем крае имеет определенную привлекательность для тех, кто хочет новейшие блестящие функции, это означает, что вы, возможно, будете первыми, кто примет последний коммит в вашу среду. Даже если он не злонамеренный, вы вполне можете получить пакет в состоянии нестабильности, в то время как «официальный» выпуск будет, по крайней мере, иметь своего рода краткий обзор. Например, пакеты GNU ELPA будут переданы только тем пользователям emacs-devel, которые имеют права коммитов.

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

stsquad
источник
1
Мармелад - плохой архив, когда дело доходит до «доверия». Это позволяет любому загружать любые пакеты под любым именем, без проверки или проверки. И это не совсем в хорошем состоянии (просто посмотрите на количество открытых вопросов).
lunaryorn
@lunaryorn: хорошая мысль, я исправлю ответ.
Stsquad
@lunaryorn MELPA имеет еще больше открытых вопросов, чем хранилище elmarmalade, поэтому я сомневаюсь, что это полезный показатель.
васамаса
@stsquad Единственное, что дает вам MELPA Stable, - это помеченные релизы, которые в любом случае оказались бы в MELPA, поэтому я не понимаю, как это безопаснее, чем использовать Marmalade.
васамаса
1
@wasamasa Извините, мой комментарий был сформулирован плохо. Число не говорит много, конечно, но открытые вопросы , которые говорят: Существует нулевая реакция на новых вопросах , никаких замечаний, даже не ярлыки или заданий. Мармелад фактически мертв.
lunaryorn