Skip to main content

É preciso uma comunidade: como responder às críticas ao open source após o Log4Shell

Escrito por
Open Source Blog

24 de dezembro de 2021

0 minutos de leitura

A última semana foi uma verdadeira montanha-russa para praticamente todo mundo do setor de tecnologia, devido à divulgação pública da vulnerabilidade Log4Shell. Como empresa de segurança para desenvolvedores, a Snyk construiu seu negócio em torno da automação proativa para identificar e corrigir problemas de segurança em aplicações. Dizer que tivemos uma semana agitada seria pouco.

Dito isso, uma das narrativas que vimos na última semana sobre o Log4Shell é que o open source está fundamentalmente quebrado: não há colaboradores suficientes para criar software “confiável”, não há verificações de segurança suficientes e não há financiamento suficiente para garantir a sustentabilidade do software open source.

Embora essas afirmações tenham algum fundamento, discordamos totalmente da ideia de que o open source está quebrado. O open source é incrível. É o que impulsiona a comunidade de desenvolvimento, nos permite “subir nos ombros de gigantes” e, francamente, possibilita que atuemos como comunidade para manter os projetos seguros — algo que não é possível com o software de código fechado.

Para nos determos um pouco nesse último ponto: o open source é construído com base na comunidade. Quando surge um problema urgente de segurança em um projeto open source, a comunidade pode trabalhar em conjunto para resolvê-lo, compartilhar a correção amplamente e avaliar o alcance do problema. Vulnerabilidades nunca são algo bom, mas também são uma oportunidade para a comunidade open source fortalecer seus protocolos e práticas. Quando milhões de pessoas se unem, coisas incríveis podem acontecer — como corrigir uma vulnerabilidade zero-day com pontuação 10,0!

O open source é perfeito? De jeito nenhum. Há problemas reais de financiamento, desequilíbrios nas contribuições, questões de segurança etc., mas pessoas como você e eu podem resolver tudo isso. Com o open source, todo mundo pode fazer alguma coisa!

Problemas do open source hoje

Vamos analisar alguns dos problemas do open source que outras pessoas apontaram nas últimas semanas:

  • O software open source precisa de financiamento.

  • O software open source precisa de mais colaboradores para fazer revisões, melhorias etc.

  • O software open source não leva a segurança a sério.

O software open source precisa de financiamento

Isso é absolutamente verdade! Como Christine Dodrill aponta em seu artigo recente, a biblioteca `log4j` (usada por inúmeras aplicações Java) tinha três patrocinadores pagantes antes de a vulnerabilidade Log4Shell chamar atenção para a situação.

Esse é um problema real. As bibliotecas open source das quais as pessoas dependem muitas vezes precisam de financiamento para que os responsáveis pela manutenção tenham tempo suficiente para corrigir problemas e garantir a estabilidade e a segurança das aplicações.

Assim como aconteceu com o Log4j, antes do anúncio da vulnerabilidade Heartbleed, o projeto OpenSSL era mantido por duas pessoas com um orçamento combinado de cerca de US$ 2.000 por ano. Isso estava muito longe dos recursos necessários para uma parte tão essencial da infraestrutura da internet.

O software open source precisa de mais colaboradores

Embora muitos projetos conhecidos tenham vários colaboradores, muitas bibliotecas open source essenciais são criadas por poucas pessoas. Isso significa que há sempre o risco de bugs não serem corrigidos a tempo, surgirem problemas de segurança sem mitigação ou os responsáveis pela manutenção simplesmente migrarem para outros projetos, deixando uma lacuna na manutenção.

Por exemplo, a ferramenta e biblioteca curl, muito usadas desde 1998 para buscar dados, foram mantidas por uma única pessoa durante muitos anos!

O open source não leva a segurança a sério

Essa afirmação tem sido repetida bastante ultimamente. Embora seja verdade que o open source tem sua parcela de vulnerabilidades de segurança, muitos especialistas acreditam que o software open source oferece várias vantagens em relação ao software proprietário quando o assunto é segurança. Além disso, como os acontecimentos recentes têm demonstrado, quando surgem vulnerabilidades, a comunidade open source geralmente encontra maneiras de corrigi-las, mesmo com pouco financiamento e poucos colaboradores.

O problema maior é que a maioria dos desenvolvedores, trabalhem ou não com open source, não tem os conhecimentos, o treinamento e as ferramentas de segurança necessários para “levar a segurança a sério” de forma eficaz. Nosso Relatório sobre o estado da segurança do open source de 2019 constatou que apenas três em cada dez responsáveis pela manutenção de projetos open source consideravam ter “alto conhecimento em segurança”.

Isso não é culpa dos desenvolvedores de open source, mas uma falha de todo o ecossistema de desenvolvimento. Pelo que me lembro, a segurança sempre foi tratada como algo à parte no setor. No entanto, se queremos criar software mais confiável e seguro, precisamos fazer da segurança uma parte essencial do processo de desenvolvimento:

  • As ferramentas de segurança precisam fazer parte do conjunto de ferramentas de todo desenvolvedor (assim como uma IDE ou um editor).

  • Os alertas de segurança precisam ser relevantes, claros e valiosos (alertas falsos ou de pouco valor são uma distração frustrante).

  • A segurança precisa estar bem integrada aos fluxos de trabalho e às ferramentas dos desenvolvedores (pipelines de CI/CD, processos de revisão de código etc.).

  • A segurança precisa ser ensinada nos cursos de ciência da computação e fazer parte essencial dos currículos acadêmicos.

O que há de bom no open source hoje

Agora que falamos sobre algumas das principais críticas ao open source, vamos abordar alguns dos pontos positivos.

O open source está em plena expansão

Hoje, há mais desenvolvedores de open source do que nunca. Em 2018, o GitHub publicou um excelente artigo sobre a quantidade de desenvolvedores de open source na plataforma, após alcançar 100 milhões de repositórios.

Na época, o GitHub informou que 31 milhões de desenvolvedores de quase todos os países do mundo colaboravam em 1,1 bilhão de contribuições.

Também houve um aumento expressivo no número de colaboradores de open source pela primeira vez: em 2019, o GitHub registrou quase 2 milhões de colaboradores iniciantes e, apenas dois anos depois, em 2021, esse número ultrapassou 3 milhões.

Resumindo: há muitos desenvolvedores trabalhando em projetos open source — e contribuindo com eles — no mundo todo.

O open source é a base de… praticamente tudo

Independentemente do que você pensa sobre o open source, seu impacto no mundo moderno é inegável. Ele é a base de praticamente todas as grandes empresas, aplicações e projetos criados nos últimos 20 anos ou mais.

Imagine criar uma aplicação web hoje sem depender de um framework web open source (como o Django) ou desenvolver uma aplicação para desktop sem usar pelo menos algumas bibliotecas open source. Para um desenvolvedor, é quase impossível imaginar isso.

Queira você ou não, o open source é usado em todo lugar, dos menores projetos por hobby às maiores aplicações web do planeta (e até fora dele, também!). Um relatório constatou que 98% de todas as bases de código dependem de software open source. O mundo funciona com open source.

O financiamento do open source está avançando

Apesar de ser muito real o fato de que muitos projetos open source precisam desesperadamente de financiamento, há diversas iniciativas e mudanças sociais em andamento para enfrentar esses problemas.

Por exemplo, hoje, Ralph Goers, responsável principal pela manutenção do projeto Log4j, conta com 105 patrocinadores. Teria sido ótimo se esse financiamento existisse antes do Log4Shell, mas a comunidade reconheceu o problema e muitas pessoas e organizações se mobilizaram para oferecer recursos onde são necessários. Esse é um ótimo exemplo da comunidade se unindo para ajudar a resolver um problema.

Fundações como a The Linux Foundation (The Apache Foundation, The Python Foundation etc.) oferecem muitos recursos aos projetos open source que precisam de ajuda, tanto financeira quanto de outros tipos. Ainda há muito trabalho a fazer nessa área, mas essas organizações têm impacto direto em projetos open source de grande valor, ajudando a garantir financiamento, recursos e visibilidade adequados.

O mesmo vale para muitas empresas: várias organizações apoiam projetos open source diretamente ou indiretamente, por meio do tempo dedicado por seus funcionários, para ajudar a atender às necessidades desses projetos. A lista é grande demais para caber em uma publicação de blog, mas a maioria das grandes empresas de tecnologia financia o open source de alguma forma.

A segurança do open source está melhorando rapidamente

Como mencionei antes, não é fácil resolver a segurança do open source isoladamente, pois essa é uma lacuna que afeta todo o setor e impacta igualmente aplicações open source e de código fechado.

A boa notícia é que a segurança do open source está melhorando rapidamente. Isso se deve a vários fatores:

  • Nos últimos 10 anos, aumentou o interesse em cibersegurança.

  • Nos últimos quatro anos, os gastos mundiais com cibersegurança quase dobraram.

  • Agora, desenvolvedores de open source têm acesso a serviços gratuitos e poderosos para ajudar a detectar e corrigir problemas de segurança (como a Snyk, que é 100% gratuita para uso em projetos open source).

  • Há iniciativas organizadas de organizações como a OpenSSF (Open Source Security Foundation), dedicadas especificamente a proteger todos os projetos open source.

  • Há cada vez mais recursos de treinamento gratuito em segurança para ajudar a ensinar desenvolvedores — e outras pessoas — a criar aplicações seguras, sejam elas open source ou não.

Como tornar o open source melhor

A verdade é que o open source nunca será perfeito (nada é!). Cabe a nós, como membros da comunidade, deixar tudo melhor do que encontramos e ajudar a melhorar o cenário do open source.

Há um antigo provérbio grego que diz: “Uma sociedade cresce e prospera quando pessoas mais velhas plantam árvores cuja sombra sabem que nunca aproveitarão.” Embora esse provérbio certamente se aplique às sociedades em geral, nós, como comunidade de tecnologia, podemos plantar árvores e aproveitar sua sombra graças à velocidade da tecnologia.

Veja algumas sugestões de como você pode ajudar pessoalmente a melhorar um pouco o open source:

  1. Considere doar dinheiro para os projetos open source que você mais usa e ajudar quem faz sua manutenção. Você pode fazer isso pelo GitHub Sponsors, OpenCollective ou por vários outros meios.

  2. Dedique seu tempo aos projetos open source que servem de base para o seu trabalho. Por exemplo, se você está desenvolvendo uma aplicação web com Django e cria um recurso novo e útil, tente contribuir com ele para o projeto! Participar do desenvolvimento open source pode ser mais fácil do que você imagina.

  3. Use ferramentas de segurança gratuitas, como o Snyk, para ajudar a identificar e corrigir problemas de segurança nos seus projetos. Ferramentas como a Snyk permitem:

    • Analisar seus repositórios de código em busca de vulnerabilidades e receber alertas automáticos quando novos problemas forem descobertos

    • Corrigir instantaneamente várias vulnerabilidades comuns e manter as dependências atualizadas

    • Conectar-se diretamente à sua IDE para ajudar a detectar problemas de segurança antes que o código seja enviado ao repositório

    • Analisar contêineres e configurações de infraestrutura para garantir que sua infraestrutura esteja segura

    • Integrar-se a pipelines de CI/CD para garantir que problemas críticos de segurança sejam detectados antes de entrar em produção

Por fim, quando algo der errado (como o surgimento de vulnerabilidades críticas de segurança), não entre em pânico. Não há como criar um software perfeitamente seguro: novas técnicas e vetores de ataque sempre surgirão, e até mesmo um código considerado perfeitamente seguro hoje pode deixar de ser no ano que vem.

O melhor a fazer é respirar fundo e resolver os problemas urgentes à medida que surgirem, mantendo a calma. E… não se esqueça de manter contato com a comunidade! Compartilhe seu conhecimento e as boas práticas com seus colegas — isso ajuda todo mundo a melhorar.

Eu, pelo menos, sou grato a toda a comunidade de código aberto e a todas as pessoas incríveis que fazem parte dela (inclusive você!). Sei que às vezes as coisas podem parecer difíceis, mas lembre-se: estamos avançando, as coisas estão melhorando e você pode fazer uma diferença positiva diretamente!

Boas festas!