Esta semana, vamos cobrir um par de vulnerabilidades de alta severidade, uma em Rubygems e outra em Rsyslogs. Discutiremos também a importância de definir práticas de codificação seguras.
Aquisição não autorizada de gemas em Rubygems
Rubygems é um registo de pacotes utilizado para fornecer software para o ecossistema da linguagem Ruby. Devido a um bug na acção yank, foi possível a qualquer utilizador RubyGems.org remover e substituir certas pedras preciosas, mesmo que esse utilizador não estivesse autorizado a fazê-lo.
Para ser vulnerável, é necessária uma jóia:
- Um ou mais travessões no seu nome
- Uma gema controlada pelo atacante com o nome antes do traço
- Criação dentro de 30 dias OU sem actualizações por mais de 100 dias
Mitigação
Segundo a equipa Bundler, a utilização de Bundler em modo -frozen ou -deployment em integração contínua e durante as implantações garantirá que a sua aplicação não mude silenciosamente para versões criadas utilizando esta exploração.
Para auditar o histórico da sua aplicação para possíveis explorações passadas, reveja o seu Gemfile.lock e procure gemas cuja plataforma mudou quando o número da versão não mudou. Por exemplo, a actualização do gemname-3.1.2 para gemname-3.1.2-java poderia indicar um possível abuso desta vulnerabilidade. RubyGems.org foi corrigido e já não é vulnerável a esta questão.
Potencial transbordamento de Buffer em Rsyslogs com base em pilha
O Rsyslog é um sistema rápido para o processamento de toros. Alguns módulos para recepção de syslog TCP têm um buffer overflow de pilha quando é utilizado um enquadramento com octeto. No enquadramento "octeto-contado", cada mensagem é prefixada com o comprimento real da mensagem, para que um receptor saiba exactamente onde termina a mensagem. O atacante pode corromper valores de pilha, levando a problemas de integridade de dados e impacto de disponibilidade. A execução de código remoto é improvável, mas não impossível. As versões 8.2204.0 e inferiores são afectadas por esta vulnerabilidade.
Mitigação
O enquadramento por octetos não é muito comum. Normalmente, necessita de ser especificamente activado nos remetentes. Se os utilizadores não precisarem dele, podem desligá-lo para os módulos mais importantes. Isto irá atenuar a vulnerabilidade. A forma de o fazer depende do módulo. Consulte aqui os módulos afectados e detalhes de configuração com base nos módulos. O patch está disponível na versão 8.2204.1.
A importância da definição de um código seguro
A codificação segura é a prática de programadores qualificados que escrevem código livre de vulnerabilidades desde o início do Ciclo de Vida do Desenvolvimento de Software (SDLC). Só depois de esta prática estar definida é que a comunidade de programadores pode trabalhar para esse objectivo. Secure Code Warrior realizou o inquérito sobre o estado da segurança orientada para o desenvolvimento, 2022 em parceria com Evans Data Corp, em Dezembro de 2021, levantando 1.200 programadores a nível mundial para compreender as competências, percepções e comportamentos quando se trata de práticas de codificação seguras, e o seu impacto e relevância percebida no SDLC.
Aqui estão alguns pontos destacados do inquérito:
- Dos 1.200 apenas 14% dos programadores de software activos colocam a codificação segura como a sua prioridade máxima.
- 37% dos programadores no inquérito reportaram ter deixado vulnerabilidades conhecidas dentro do seu código porque prazos apertados não permitiriam o tempo necessário para as corrigir ou para codificar correctamente desde o início.
- 36% dos inquiridos disseram também que queriam remover vulnerabilidades do seu código mas não tinham as competências ou os conhecimentos necessários para o fazer.
- O problema em muitos casos para os programadores escreverem código seguro é que as organizações para as quais trabalham não identificaram quais as melhores práticas necessárias para produzir código seguro e não colocaram recursos suficientes em formação ou para permitir aos seus programadores atingir esses objectivos.
Assim, juntamente com a definição adequada do que são práticas de codificação seguras, as organizações também precisam de fornecer prazos mais longos, dando aos programadores tempo suficiente para codificar adequadamente e fornecer formação prática que os ajude a identificar e corrigir vulnerabilidades de código de forma eficiente.
Pode obter informações mais detalhadas sobre o inquérito aqui.
Comentários