Executando verificação de segurança...
11

Pequeno bug, grande impacto. Recompensa de $25.000,00

Inspirado na publicação Qualificações injetam ainda mais TabCoins, propus de novo o desafio com o gugadeschamps de fazer 1 publicação por dia aqui no TabNews 💪 🤝 Eu já estava fazendo isso no passado, mas com o filho + curso fui atropelado 😂

De qualquer forma, a publicação de hoje é sobre um artigo que eu esbarrei que é curto mas muito interessante de se ler chamado Little bug, Big impact. 25k bounty.

O autor conta a história de como encontrou, no código JavaScript que estava no client-side, a Chave API do Stripe da empresa em questão.

Tudo começou quando ele usou uma ferramenta chamada SourceMapper para reconstruir o código minificado no client-side para uma versão legível e encontrou isto:

export const S0 = 'pk_live_[REDACTED]es33';
export const S1 = 'sk_live_[REDACTED]du8d';
export const STRIPE_HEADER_NAME = 'REDACTED';
export const CURRENCY = 'USD';
export const STRIPE_PAY_BUTTON = 'Pay for REDACTED';

Com a chave sk_live_... era possível fazer qualquer tipo de operação, como consultar o saldo e até transferir dinheiro para outras contas.

2

Isso é muito comum. No Stack Overflow em Português tem época que temos que fazer redact quase todos os dias. No SOen deve ter dezenas por dia.

SQL Injection tem na esmagadora maioria dos códigos postados lá que possuem queries. E depois a pessoa dando continuidade em novas perguntas com o mesmo código, mesmo ela tendo sido alertada para o fato e alguém dando o código correto, a pessoa continua usando do jeito errado. Alguns códigos são vendidos por aí assim. Github está cheio.

Erros de uso do tipo errado para valor monetário, como vimos até em banco com um processo estabelecido para isso não acontecer.

Tem os casos que não causam tanto problema, só custam muito mais no longo prazo por decisão de arquitetura ou ferramenta errada. Porque a pessoa não vê o custo lá na frente.

Se isso fosse exceção, ok, mas é praticamente a regra.

Depois as pessoas não entendem porque está difícil conseguir vaga e tem tanta vaga que não consegue ser preenchida. É preciso mudar essa situação. As pessoas precisam parar de achar que programar é fazer receita de bolo e começar se formar bem, não importa como, tem muitos caminhos possíveis, mas precisa ser feito corretamente.

Obrigado pelo exemplo.

Espero ter ajudado.

Farei algo que muitos pedem para aprender a programar corretamente, gratuitamente. Para saber quando, me segue nas suas plataformas preferidas. Quase não as uso, não terá infindas notificações (links aqui).

2

Isso é muito comum. No Stack Overflow em Português tem época que temos que fazer redact quase todos os dias.

Puts, não tinha pensado nisso! Imagino quantas pessoas devem ter criado bots para conseguir pegar estes dados antes da alteração por redact.

Isso que o Stack Overflow é um espaço público, imagina o que está acontecendo em espaços Privados como o ChatGPT. A quantidade de ataques que a plataforma deles deve estar recebendo para conseguir pegar os prompts das pessoas.

"Leak de prompt" vai ser a nova moda.

2

Erros de uso do tipo errado para valor monetário, como vimos até em banco com um processo estabelecido para isso não acontecer.

Pra quem ficou curioso, o erro foi esse aqui.

E pra quem quiser uma explicação mais completa, veja aqui, aqui aqui.

1

Caramba... Deu até um nervoso aqui haha. Tenho um app de E-Commerce feito em Flutter,e para processar pagamentos com cartão de crédito/débito, eu uso a API do Stripe. É bom tomar muito cuidado com isso 😬

3

Exato! O GitHub vem integrado com um scanner de secrets, pelo menos para repositórios públicos, o que me deixou pensando: o ato de alguém dificultar a leitura de um secret, vai dificultar também deste scanner pegar e evitar que algo pior aconteça.

2

Isso é algo a se pensar, hein. Não sabia desse scanner. É como se, tentando proteger nossos projetos, nós mesmos acabassemos entregando eles? Aí complica a vida haha. Melhor fazer do jeito padrão mesmo então, ao menos em projetos de repositório público.

1

Por isso que a maioria da grandes empresas fazem essa integração de backend para backend evitando assim de deixar exposto dados sensiveis durante integração