Насколько безопасно использование Maven? - PullRequest
39 голосов
/ 17 августа 2011

Каковы риски и возможности или сценарии, в соответствии с которыми кто-либо настраивает маскарады репозиториев maven и / или ip-потоков для предоставления замаскированных библиотечных копий оригинала, но с введением вредоносного или вредоносного кода.

Каковы действияи методы предотвращения таких рисков и возможностей?

Ответы [ 3 ]

26 голосов
/ 17 августа 2011

Я полагаю, что выделенный и находчивый злоумышленник может выполнить атаку MITM и перехватить все запросы к общедоступным репозиториям Maven, осторожно внедряя вредоносный байт-код в артефакты JAR, а затем пересчитывая и предоставляя хэши SHA1.

Для клиента это выглядит как допустимый артефакт: двоичный JAR и SHA1 совпадают и будут одинаковыми, даже если они проверяют альтернативные зеркала.

Полагаю, единственное реальное решение - запросить центральные репозитории для поддержки HTTPS (и верю, что сам TLS не нарушен).

В качестве альтернативы практическим подходом может быть настройка прокси-сервера Maven (Artifactory или Nexus), обслуживаемого по HTTPS для внутренних клиентов. Это уменьшает поверхность атаки и означает, что вам просто нужно защитить линии связи от этого сервера до внешнего мира. Я бы периодически проверял, чтобы JAR-файлы и хэши на прокси-сервере совпадали с JAR-адресами и хэшами на общедоступных зеркалах, используя полностью независимую доверенную сеть.

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

Ну, безопасность в слоях, как они всегда говорят.

7 голосов
/ 17 августа 2011

Я могу вспомнить несколько сценариев, хотя первый не относится к Maven.

  1. Отравление кеша DNS

    Данные DNS, которые вы используете для доступа кстандартные репозитории могут быть отравлены, в результате чего Maven загрузит артефакты из другого репозитория.См. статью в Википедии об отравлении кэша DNS .

  2. Нестандартные репозитории

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

  3. Отравление репозитория

    На основе Руководства Maven по загрузке артефактов в Центральный репозиторий похоже, что центральное хранилище Maven публикует артефакты от утвержденных хостов репозитория, поэтому безопасность артефактов зависит от хоста.Я не знаю подробностей о том, как стать утвержденным хостом репозитория, но с таким небольшим количеством в списке это, вероятно, обременительно.

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

  4. Модификация артефакта во время передачи (человек посередине)

    Maven выполняет автоматическую проверку контрольной суммы для всех артефактов, поэтому злоумышленнику придется изменить артефакт и соответствующие контрольные суммы для внедрения вредоносного кода.Я не знаю, сможете ли вы полностью предотвратить это, но чтобы убедиться, что вы обращаете внимание на контрольные суммы, убедитесь, что ваша политика контрольных сумм не настроена на игнорирование.См. settings doc .

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

4 голосов
/ 17 августа 2011

Если вы используете хорошо известные репозитории (центральный репозиторий maven, репозиторий jboss), вероятность внедрения вредоносного кода очень мала. Для этого компьютерный вирус, ваш интернет-провайдер или интернет-провайдер вашего интернет-провайдера должны связываться с DNS-серверами или изменять маршруты маршрутизации для некоторого набора адресатов. Я думаю, что это довольно маловероятно - то же самое относится не только к репозиториям Maven, но и ко всем интернет-сервисам (электронная почта, http, voip и т. Д.). Более того, тот же риск связан с загрузкой файлов JAR непосредственно с сайтов проектов.
В любом случае, если вы хотите иметь полный контроль, вы можете создать свой собственный репозиторий Maven (http://nexus.sonatype.org/)

В каждом файле, доступном в репозитории, должна быть создана контрольная сумма md5 или sha - таким образом вы можете проверить, действительно ли то, что вы скачали, соответствует вашим ожиданиям. Но - если злоумышленник (вирус) достаточно умен, чтобы перехватить передачу данных и запутаться в файлах JAR, он также будет достаточно умен, чтобы перехватить контрольные суммы md5 / sha. Защита от этого заключается в предоставлении подписей PGP как для контрольных сумм, так и для артефактов - артефакты выпуска, загруженные в центральное хранилище, вынуждены это делать (файлы .asc)

Хорошей идеей является использование Nexus Professional - вы сможете настроить комплект закупок для проверки подписи PGP на сервере открытого ключа при каждой загрузке артефакта. Более подробную информацию о подписи PGP с Maven можно найти здесь:

https://docs.sonatype.org/display/Repository/How+To+Generate+PGP+Signatures+With+Maven

http://www.sonatype.com/people/2012/03/the-first-line-of-defense-checksums-and-pgp-signatures-in-repositories/

...