Titulo Estágio
Software Libraries Profiler
Áreas de especialidade
Engenharia de Software
Comunicações, Serviços e Infraestruturas
Local do Estágio
Coimbra
Enquadramento
A DOGNÆDIS é uma empresa focada em Segurança de Informação e Cibersegurança, prestando serviços especializados e desenvolvendo tecnologia operativa e táctica.
A 7 de Dezembro de 2017 foram tornados públicos cerca de 146 milhões de registos de informação pessoal, roubados após exploração com sucesso de software da empresa Equifax. Após análise, soube-se que os atacantes tiraram proveito de uma vulnerabilidade conhecida e já à altura corrigida do Apache Struts 2.
A criação de projectos de software, acelerado através da utilização de frameworks e/ou bibliotecas de terceiros é hoje muito comum. No entanto, estas dependências nem sempre são simples, são até frequentes os casos em que uma biblioteca inclui várias outras. Do ponto de vista da manutenção de um produto, é responsabilidade do seu fabricante a manutenção e adequação das mesmas bibliotecas ao longo do seu tempo de vida.
Torna-se por isso crítico, que a evolução das dependências externas de um projecto (que podem chegar às centenas), seja acompanhada em contínuo, num processo que é hoje ainda muito manual. Tal facto, leva a que esta actividade seja negligenciada por muitas organizações.
Atendendo à interligação entre bibliotecas é necessário fazer este levantamento directamente no código fonte da aplicação. Durante esta tarefa deverão também ser levantadas as licenças – quando disponíveis – das dependências em uso, uma vez que poderão ter impacto (por exemplo económicos) para possíveis produtos, dependendo do seu modelo de distribuição/comercialização.
Objetivo
O projeto tem 2 objetivos essenciais:
- Para um dado repositório: identificação das bibliotecas e suas versões e cruzamento da informação com uma base de dados de vulnerabilidades conhecidas, gerando alertas de acordo com as incidências encontradas;
- Para um dado repositório: identificação das licenças das bibliotecas utilizadas e cruzamento da informação com uma blacklist de tipos de licenças, gerando alertas de acordo com as incidências encontradas.
O sistema deverá contemplar (parcial ou totalmente) as seguintes linguagens e funcionalidades:
- Java
Análise do grafo de dependências, bem como as respectivas licenças, em projectos maven, sbt e gradle. O sistema deverá ser integrável com as ferramentas enumeradas, e gerar notificações com 3 mecanismos distintos configuráveis – consola, e-mail e falha fatal;
- PHP
Análise do grafo de dependências, bem como das respectivas licenças, em projectos que utilizem o composer. O sistema deverá ser integrável no processo de execução do composer, e gerar notificações com 3 mecanismos distintos configuráveis – consola, e-mail e falha fatal;
- Python
Análise do grafo de dependências, bem como das respectivas licenças, em projectos que utilizem o pip. Adicionalmente, deverão ser analisadas dependências de sistema (bibliotecas instaladas no ambiente) através de inspecção de código. O sistema deverá gerar notificações com 2 mecanismos distintos – consola e e-mail;
- JavaScript/NodeJS
Análise do grafo de dependências, bem como das respectivas licenças, em projectos que utilizem npm e bower. O sistema deverá ser integrável com Grunt, e gerar notificações com 3 mecanismos distintos configuráveis – consola, e-mail e falha fatal;
- C#
Análise do grafo de dependências, bem como das respectivas licenças, em projectos que utilizem nuget. O sistema deverá ser integrável com msbuild, e gerar notificações com 3 mecanismos distintos configuráveis – consola, e-mail e falha fatal;
- GoLang
Análise do grafo de dependências, bem como das respectivas licenças, em projectos com gomodules. Deverá também ser feita detecção de dependências através de inspecção de código. O sistema deverá ser integrável com gnu make, e gerar notificações com 3 mecanismos distintos configuráveis – consola, e-mail e falha fatal.
Plano de Trabalhos - Semestre 1
Actividade 1 - Levantamento do estado dos trabalhos, tecnologias e abordagens;
Actividade 2 - Especificação de requisitos;
Actividade 3 - Definição de arquitectura e escolhas de tecnologia;
Actividade 4 - Primeira abordagem prática - Linguagem a escolher;
Actividade 5 - (Contínuo) Elaboração do Documento de Dissertação.
Plano de Trabalhos - Semestre 2
Actividade 1 – Sistema de análise de bibliotecas suas versões e licenças em linguagens Java
Actividade 2 – Sistema de análise de bibliotecas suas versões e licenças em linguagens PHP
Actividade 3 – Sistema de análise de bibliotecas suas versões e licenças em linguagens Pyhton
Actividade 4 – Sistema de análise de bibliotecas suas versões e licenças em linguagens JavaScript / NodeJS
Actividade 5 – Sistema de análise de bibliotecas suas versões e licenças em linguagens C#
Actividade 6 - Sistema de análise de bibliotecas suas versões e licenças em linguagens GoLang
Actividade 7 – Elaboração de testes unitários e de carga
Actividade 8 - (Contínuo) Elaboração do Documento de Dissertação.
Condições
Será fornecido ao estagiário todo o material necessário para a realização do seu trabalho, incluindo uma workstation.
O estagiário será remunerado mediante um modelo de mérito, com base em avaliações semestrais. Sendo que ao cumprir todos os objetivos (apresentados no inicio do estágio), poderá atingir uma remuneração de 1000€ relativa ao primeiro semestre e 2000€ relativa ao segundo semestre.
Adicionalmente o estagiário terá direito a subsídio de alimentação, de acordo com a política da empresa.
Observações
Qualquer dúvida ou esclarecimento pode ser obtido através do endereço:
rh@dognaedis.com
Orientador
André Pinheiro
rh@dognaedis.com 📩