Maven: проблемы безопасности в репозитории и pluginRepositories определены в pom? - PullRequest
2 голосов
/ 22 сентября 2011

Представьте себе текущую ситуацию:

Вы разработчик и хотите участвовать в новом (с открытым исходным кодом) проекте. Проект можно построить разными способами - одним из них является Maven.

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

  1. Доступ к репозиториям Maven [plugin-] по умолчанию осуществляется через http - через атаку «Человек посередине», кто-то может отправить вам управляемые пакеты. В случае перехвата плагина-хранилища это может привести к тому, что внедренный код будет выполнен как часть процесса сборки

  2. В файл pom.xml вы можете добавить сторонние репозитории и плагины-репозитории. Если злоумышленнику удастся добавить свой собственный плагин-репозиторий в проект, то pom.xml (например, проекта с открытым исходным кодом) и другие могут быть атакованы этими плагинами. В случае сторонних репозиториев я не уверен - может ли репозиторий, определенный в проекте, pom.xml переопределить репозитории, определенные на уровне пользователя или системы?

С моей точки зрения, это серьезные проблемы с безопасностью - или есть описание ошибки?

Если у меня есть проект на основе Maven - как я могу убедиться, что запуск Maven безопасен? Есть ли список хранилищ, которые заслуживают доверия (содержат только код, который не вредит компьютеру, на котором он выполняется)?

1 Ответ

2 голосов
/ 22 сентября 2011

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

В большинстве случаев используется репозиторий Maven Central, который находится под контролем Sonatype (какнасколько я знаю).Это означает иметь доступ к этим машинам и изменять содержимое самого репозитория или просто вводить некоторый контент, который может быть не таким простым на основе контрольных сумм, но, конечно, это не делает его невозможным.Кроме того, если вы загружаете артефакты из Интернета, у вас активен современный антивирусный сканер, который сначала контролирует все, прежде чем он будет помещен на ваш жесткий диск.Это, конечно, не на 100% безопасно.

Переходя ко второй части: если вы используете проект, который определяет репозитории внутри POM, это не "Best Practice" ... Хорошо ... давайте предположим, что это,Так что вы будете использовать этот «зараженный» проект pom.Но как это включить в проект?Это означает, что злоумышленник должен иметь доступ к проекту, что означает, что он долгое время находился в совместном доступе к проекту.Более того, другие участники проекта пересмотрели бы коммит ... так что это не было бы так просто, но, конечно, не невозможно.

Исходя из того, что я написал ранее, как кто-то может дать гарантию, что репозиторийсодержит только «безопасные» артефакты?Кто должен контролировать / проверять это?И сколько времени потребуется, чтобы получить артефакт в этом хранилище?

Итак, простой ответ: нет, использование Maven не на 100% безопасно, но если немного подумать о том, что интернет также не на 100% безопасен.По моему мнению, риск через Интернет намного выше, чем из репозитория Maven, но, конечно, мы должны это игнорировать.

Единственное возможное решение для этого - использовать менеджер репозитория, который является единственным источником, из которогоБудут загружены артефакты, что означает настроить файл settings.xml для использования только этого.И очень важно, чтобы вы контролировали каждый артефакт, который помещается в этот репозиторий, и выполняли некоторые проверки «безопасности» на них.Но кто будет этим заниматься, и у кого есть время / деньги / ресурсы для таких вещей?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...