- Um pesquisador de segurança descobriu que, no subdomínio relacionado à a16z
portfolio.a16z.com, oprocess.envcompleto de uma instância Heroku estava sendo incluído dinamicamente em JavaScript - Entre os valores expostos estavam várias credenciais de serviços, como
DATABASE_URL,AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEY,SALESFORCE_CLIENT_SECRET,OKTA_CLIENT_SECRET,MAILGUN_API_KEYe outros - O pesquisador afirmou que, durante uma checagem rotineira em busca de segredos em arquivos JS com o
lunchcat, encontrou uma referência a chaves da AWS e que isso podia ser verificado apenas pela aba Sources das ferramentas de desenvolvedor do navegador - O impacto potencial incluía banco de dados com PII, AWS, Salesforce e Mailgun; no caso do Mailgun, ele alegou que era possível enviar e-mails arbitrários a partir do domínio da a16z e ler e-mails antigos
- A a16z não pagou recompensa de bug bounty alegando que o pesquisador tentou contato publicamente, e ele disse que não havia contato no site principal e que o e-mail que encontrou retornou
Variáveis de ambiente expostas durante auditoria de subdomínio
- O pesquisador disse que encontrava alvos buscando empresas no Twitter e fazendo testes rápidos de invasão, usando com frequência a aba
Relevant People- Neste caso, o caminho foi: empresa ligada a
crypto→ venture capital de cripto →a16z crypto→a16z
- Neste caso, o caminho foi: empresa ligada a
- Durante a investigação da a16z, ele fez um scan de subdomínios comum e usou a ferramenta lunchcat para inspecionar o domínio e detectar segredos em arquivos JS
portfolio.a16z.comparecia ser uma ferramenta de gestão de portfólio para empresas pertencentes à a16z, e durante a auditoria foi detectada em algum ponto do site uma referência a chaves da AWS- Dentro do JS, valores que pareciam ser todo o
process.envda instância Heroku estavam sendo inseridos dinamicamente- Entre os itens incluídos estavam
MARKETPLACE_URL,DATABASE_URL,SALESFORCE_CLIENT_ID,SALESFORCE_CLIENT_SECRET,OKTA_CLIENT_SECRET,SESSION_SECRET,MAILGUN_API_KEY,AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEY,COOKIE_SECRET,HEROKU_POSTGRESQL_CRIMSON_URLe outros - O pesquisador disse ter verificado rapidamente as credenciais e que elas pareciam ser credenciais reais, não falsas
- Segundo ele, bastava abrir a aba Sources nas ferramentas de desenvolvedor do navegador
- Entre os itens incluídos estavam
Alcance potencial da exposição e polêmica sobre bug bounty
- Os serviços que o pesquisador listou como potencialmente comprometidos foram os seguintes
- Banco de dados: ele afirmou que continha PII
- AWS: foi mencionada a possibilidade de acesso por meio das chaves expostas
- Salesforce: ele não verificou diretamente e acrescentou que os privilégios da conta poderiam ser limitados
- Mailgun: ele disse que era possível enviar e-mails arbitrários a partir do domínio da a16z e também ler e-mails antigos
- Também mencionou a possibilidade de haver outros serviços afetados
- A a16z não pagou bug bounty alegando que o pesquisador tentou contato publicamente em vez de entrar em contato de forma privada
- O pesquisador apresentou dois motivos para ter tentado contato publicamente
- Não conseguiu encontrar um contato utilizável no site principal da a16z
- O e-mail que conseguiu encontrar retornou
- Como material relacionado, foi anexado um artigo da TechCrunch; o pesquisador disse que Lorenzo viu o tweet que ele publicou tentando falar com a a16z e então entrou em contato para escrever a matéria
1 comentários
Comentários no Hacker News
Quando lançamos nosso projeto open source(https://github.com/heyPuter/puter/), a Eva fez um teste de invasão bem abrangente e também lidou com o reporte de vulnerabilidades de forma muito profissional
Na época nem existia programa de bug bounty, e ela também não pediu recompensa; a Eva é uma hacker excelente e responsável, então a a16z deveria tratá-la melhor
Já cometi um erro parecido
Eu usava o CMS Node.js chamado apostrophecms, e usava o painel administrativo de global settings para gerenciar chaves de API do servidor de autenticação, mas só meses depois percebi que aqueles valores estavam sendo exibidos no código-fonte HTML
Aquilo foi feito assim para uso em JavaScript, e estava documentado, então não culpo eles por isso, mas nós deixamos passar
O mais irritante é que pagamos um bom dinheiro a uma grande consultoria para fazer teste de invasão, e eles também não perceberam; no fim, acabamos descobrindo por conta própria e, ao verificar os logs, não parecia haver sinais de exploração, mas foi um vazamento bem chocante
Até hoje, nunca vi teste de invasão que fosse mais do que preencher checklist
Como você disse, essa forma de compartilhamento de dados estava na documentação, mas ainda assim pode surpreender
Para quem for investigar isso no futuro, vale acrescentar que a principal versão do Apostrophe atualmente suportada não funciona mais assim
Injetar dados no frontend deslogado agora é algo que o desenvolvedor precisa escolher intencionalmente, e isso foi alterado justamente para evitar esse tipo de surpresa
Ainda assim, continuam existindo casos de uso em que é preciso incluir chaves de API nas configurações de certos widgets e em parte do conteúdo
Para referência, sou o responsável de design do Apostrophe e também atuo em funções de engenharia
Essa situação aconteceu por causa da nossa configuração multitenant e da nossa falta de entendimento sobre o apostrophe
Documentar um comportamento perigoso não isenta ninguém de responsabilidade, e acho que essa lição já deveria ser amplamente conhecida
Quando você cria um novo serviço e coloca um certificado LetsEncrypt no servidor com ACME, os logs logo ficam cheios de requisições lixo
Dá para ver claramente bots procurando configurações frágeis que desenvolvedores talvez tenham deixado abertas, e eu já vi até pedirem o arquivo de ambiente do processo
Não sei como esse tipo de vulnerabilidade não foi descoberto ou explorado, e a a16z ou teve muita sorte ou isso já foi explorado e não veio a público
O que aconteceu foi que um pesquisador bem-intencionado, ou alguém entediado com mentalidade de white hat, entrou em contato primeiro; é uma pena que não exista uma estrutura legal para esse tipo de negligência, mas acho que a a16z deveria levar uma multa pesada
Talvez já tenha sido
Pode ter sido mais valioso deixar isso aberto do que simplesmente quebrar tudo
Mas algumas credenciais do tipo OKTA parecem bem perigosas
A parte “não pagaram bug bounty porque o contato foi feito publicamente; isso aconteceu porque não havia contato no site principal e o engineering@a16z.com que ela encontrou devolveu a mensagem” parece um tipo esperto de life hack para economizar dinheiro da empresa
Se você não deixar nenhum jeito de contatar a equipe de engenharia em privado, todo reporte de bug bounty vai acontecer em público, e aí você não precisa dar nada a ninguém
Aposto que também economizaram bastante espremendo gente do fiverr ou coisa parecida para fazer o desenvolvimento, e se algum grupo russo de ransomware levar tudo com facilidade, ainda vão economizar bastante indiretamente em custos contábeis
Se não existe programa público de bug bounty, ela não deve nada
Além disso, há um endereço de e-mail de contato no rodapé de https://a16z.com/connect, que o pesquisador convenientemente deixou passar
Parece mais uma busca por notoriedade do que divulgação responsável
Quando empresas dizem que “foram hackeadas”, hoje isso já soa como uma expressão corporativa para “não protegemos adequadamente credenciais importantes, mas por favor joguem a culpa em alguma entidade sem rosto que chamamos de ‘hacker’”
Existem distinções legais como “invasão de domicílio”, “furto”, “entrada não autorizada”, e o fato de a porta estar aberta pode afetar a ilegalidade ou a punição, mas, na linguagem cotidiana, ainda assim você foi roubado
Não pagar nem mesmo uma bounty de valor simbólico por uma falha tão escancarada é bem ruim
Eles estão ocupados demais escrevendo um white paper gigante sobre arquitetura de IA generativa
Vamos dar um tempo, eles estão sonhando com um futuro de agentes em que chatbots semiacabados ficam se mexendo por aí
Enquanto isso o mundo está pegando fogo por causa de atualizações de software quebradas
A atualização de software quebrada de sexta-feira foi só a cereja do bolo
Não é nem um pouco surpreendente
Se realmente fosse possível acessar a instância do Salesforce, isso seria muito preocupante do ponto de vista dos fundadores
Normalmente e-mails ficam registrados em lugares como o Salesforce, e ali podem continuar guardados planos de captação de recursos ou de M&A que fundadores de empresas do portfólio não compartilharam externamente
Mas usar essas chaves para acessar sistemas sem autorização é crime
Essa diferença é enorme
O fato de essa empresa de VC não ter pago bug bounty por um buraco de segurança tão grande não inspira confiança
A moderação do HN mudou o título para algo menos constrangedor
Nada surpreendente
A pontuação não mudou, mas ele foi movido do topo para o fim
Realmente existem várias formas de oferecer uma resposta, né