2013-04-10 5 views
4

Я ищу автоматический способ проверить все драгоценные камни, используемые на моем сайте на основе синатры, для получения доступных обновлений безопасности. Существует ли такая вещь?Как я могу убедиться, что мои драгоценные камни безопасны?

Мое принципиальное отношение к обновлениям: если оно не сломано, не пытайтесь его исправить. Но если я уязвим, я хочу знать об этом. Только применяя обновления безопасности, я сохраняю минимальное количество потенциальных изменений.

Предыстория: Большая часть моей предыдущей работы была в Drupal. В этом сообществе разработчики могут пометить свои выпуски модулей как устранение проблем безопасности. Это означает, что мой сайт или мои инструменты CLI могут запрашивать данные выпуска для модулей, используемых на текущем веб-сайте, чтобы узнать, доступны ли обновления для системы безопасности и уведомить меня.

+1

[CodeClimate] (https://codeclimate.com/) может помочь, поскольку он также проводит обзоры безопасности. Но я не знаю, что он рассмотрит ваши версии с драгоценными камнями. –

ответ

1

Установите bundle-audit gem с rubysec на github. Запускайте его периодически/регулярно. Он бесплатный, обновляется через библиотеку CVE известных угроз безопасности, а в отчетах, которые в вашем проекте имеются обновления, есть обновления.

+0

Я больше не работаю с Ruby, за исключением небольших скриптов, где эта проблема не является критичной, однако я посмотрел ссылку на github page yo и, похоже, именно то, что я хотел, когда я изначально задавал этот вопрос. Он также выглядит активным, поэтому я так изменил это на принятый ответ. Спасибо, что воскресил этот вопрос. – crantok

6

Насколько я знаю, нет окончательного способа автоматизировать это. В Ruby gems нет понятия о знаке, указывающем, что это обновления для системы безопасности и т. Д. Большинство поддерживающих драгоценных камней довольно хороши в том, что они соблюдают соглашение о размере major.minor.patch для номеров версий. Главными препятствиями являются API-взлом, незначительная добавленная функциональность, но обратно совместимая, а исправление - для исправлений или очень незначительных изменений. В этом нет ничего, и некоторые драгоценные камни даже не используют номера версии из трех частей. Рельсы сами по себе являются особенно вопиющими об отсутствии здесь; Недостатки рельсов Rails повсеместно несовместимы, нарушая изменения. Тем не менее, исправления рельсов, как правило, являются исправлениями безопасности.

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

gem 'foo', '~> 2.2.0' 

... будет установить последний уровень патча версию 2.2.x из (например, вы можете получить 2.2.12, но не 2.3.0).

См. the Rubygems docs для получения дополнительной информации о версиях (используется Bundler) и о том, как быть консервативным («пессимистичным» в их терминологии). Также см. Их numbering guidelines. Опять же, имейте в виду, что они не строго соблюдаются, и когда Rails сам предоставляет такой ужасный пример нарушения конвенции, другие авторы драгоценных камней не всегда поступают правильно.

+0

Спасибо, это очень полезно. У меня действительно сложилось впечатление, что небольшая версия релиза должна разорвать существующую кодовую базу, что вызвало удивление, почему основные/второстепенные были необходимы. Это делает меня очень благодарным за систему выпуска Drupal, хотя это тоже не идеально. – crantok

2

Существует сайт под названием Gemnasium. Он проверяет, являются ли драгоценные камни, которые вы используете, новейшими, и если есть какие-либо проблемы с безопасностью, он отправит вам электронное письмо.

+0

Спасибо. Если бы я использовал GitHub для своих клиентских сайтов, тогда это было бы круто. Я фактически использую BitBucket из-за его неограниченных частных репозиториев. Тем не менее, [FAQ страница] (https: // gemnasium.com/questions) превратили меня в 'bundle outdated' и [RubyGems webhooks] (http://guides.rubygems.org/rubygems-org-api/#webhook), оба из которых я хочу посмотреть. – crantok

+0

Службы клиентов Gemnasium ответили на мою электронную почту, спрашивая о том, как они определяют статус безопасности. Учитывая отсутствие флага security_patch в файлах gemspec, их система звучит так же хорошо, как и получается. Теперь я подумываю о возвращении в GitHub. – crantok

3

Если вы используете Bundler с вашим проектом, вы можете проверить, используете ли вы последние версии драгоценных камней с bundle outdated. Чтобы узнать, имеет ли известная уязвимость используемая вами версия драгоценного камня, вы можете использовать драгоценный камень bundler-audit или, альтернативно, драгоценный камень holepicker. Существует также услуга под названием Gemnasium, которая может отслеживать ваши драгоценные камни для вас и уведомлять вас о том, когда камень обновлен или имеет проблему безопасности.

+1

Блестящий! Именно то, что я искал. Спасибо. – crantok

+0

Пожалуйста, подумайте о том, чтобы принять мой ответ в качестве лучшего ответа. Это лучшая практика для других, которые находят эту страницу позже] (http://meta.stackexchange.com/questions/93969/is-changing-the-accepted-answer-frowned-upon). Спасибо. – weston

+0

Я обязательно это рассмотрю, но я буду чувствовать себя обманчивым, если я это сделаю сейчас. К тому времени, как вы ответили, моя работа снова исчезла из Руби, поэтому я никогда не оценивал инструменты, о которых вы говорили. Я проверил Gemnasium более подробно, но это было из-за ответа hauleth ниже. – crantok

Смежные вопросы