Corrigindo o exemplo de Rails

am_correcao-1_abertura

A partir dos arquivos de manifesto no repositório, o GitHub consegue relacionar as dependências do projeto e, no caso dos módulos do RubyGems ou npm, verificar na  lista vulnerabilidades conhecidas do MITRE se as versões em uso apresentam alguma vulnerabilidade.

E como eu sei disto? Foi justamente foi o que ocorreu com a Agenda Mequetrefe, com uma notificação do GitHub sobre a existência de possíveis vulnerabilidades em componentes utilizados pela aplicação.

Os avisos de segurança

am_correcao-1_dependencias

Para a lista completa das vulnerabilidades, vá em InsightsDependency Graph, lá é possível visualizar todas as dependências do projeto — obtidas a partir do conteúdo dos arquivos “Gemfile” e “Gemfile.lock” — e também aquelas que possuem alerta de vulnerabilidade (em vermelho rosa).

No caso da AM todos os alertas de vulnerabilidade se relacionavam a componentes específicos do próprio Rails, ou seja, bastaria descobrir qual versão resolveria todas as vulnerabilidades, neste caso a 4.2.7.

Editando o “Gemfile”

Basicamente basta editar o arquivo “Gemfile” alterando o número da versão para aquele que se deseja utilizar:

source 'https://rubygems.org'

# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '4.2.7'
...

Daí usar o bundle para atualizar os arquivos da aplicação.

$ bundle update
Fetching gem metadata from https://rubygems.org/..........
Fetching version metadata from https://rubygems.org/..
Fetching dependency metadata from https://rubygems.org/.
Resolving dependencies...
Fetching rake 12.3.0 (was 11.1.2)
...
Fetching rails 4.2.7 (was 4.1.10)
Installing rails 4.2.7 (was 4.1.10)
Fetching sass-rails 4.0.5
Installing sass-rails 4.0.5
Bundle updated!

Aqui, dependendo da situação, ocorrerá a atualização em cascata de outros módulos.

Verificando a nova versão

Como estava trabalhando em um repositório recém clonado, achei prudente fazer também a migração da base de dados.

$ rake db:migrate
== 20160419182710 CreateContacts: migrating =========================
-- create_table(:contacts)
 -> 0.0031s
== 20160419182710 CreateContacts: migrated (0.0036s) ================

== 20160515181849 AddEmailToContacts: migrating =====================
-- add_column(:contacts, :email, :string)
 -> 0.0017s
== 20160515181849 AddEmailToContacts: migrated (0.0022s) ============

Daí executar o servidor.

$ rails server -b0.0.0.0
=> Booting WEBrick
=> Rails 4.2.7 application starting in development on http://0.0.0.0:
3000
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server
[2018-03-17 19:49:54] INFO WEBrick 1.3.1
[2018-03-17 19:49:54] INFO ruby 2.3.3 (2016-11-21) [x86_64-linux-gnu]
[2018-03-17 19:49:54] INFO WEBrick::HTTPServer#start: pid=19517
port=3000

E daí abrir o navegador web para verificar se a aplicação (ainda) está funcionando corretamente! 🙂

Finalizando

am_correcao-1_contato

Felizmente a diferença entre as versões não era muito grande e a atualização funcionou sem a necessidade de outras alterações no código e depois foi atualizar o repositório no GitHub para que o alerta desaparece (ao menos por enquanto)… 🙂

Bônus : Acrescentei ao repositório um “Vagrantfile” para criar um máquina virtual ambiente de desenvolvimento específico para executar a AM.

Anúncios