Pular para o conteúdo principal

3 postagens marcadas com "history"

Ver todas os Marcadores

· Leitura de 5 minutos
Anderson de Souza

No meu ritual diário de café da manhã, meus companheiros de mesa jogavam “Lord of the Rings Risk” imaginário enquanto esperavam no Shopping. (The Big Bang Theory S08E12 @08:10) Sheldon rolou d6 5 e 3 mas, Leonard, seguidos duplos 6.

Num exercício mental, comecei a imaginar números aleatórios e fiquei de cara quando percebi escolher os números antes de “os revelar” mentalmente: o 32 apareceu algumas vezes. Então, imaginei uma espécie de roda da sorte, mas, antes da roda começar a girar, o número 27 já estava estampado.

Tirei o telefone do suporte e comecei a pesquisar sobre a capacidade humana de gerar mentalmente números aleatórios.

Máquinas​

Sei que computadores não conseguem gerar números realmente aleatórios. Os algoritmos usados geram sequências de números pseudo aleatórios 1. Para números verdadeiramente aleatórios, uma fonte física externa de dados imprevisíveis como ruído atmosférico, decaimento radioativo,etc. Inclusive um projeto da CloudFlare ficou famoso há um tempo atrás por utilizar uma parede de lava-lamps 2 como gerador.

Eu tenho um projeto de gerador de entropia com uma ESP e alguns sensores: temperatura e umidade, microfone captando som do ambiente e uma câmera apontada pra natureza.

Mas nós não somos computadores, certo? Temos pensamento crítico e criativo. Mesmo a I.A. de agora que “apenas” processa grandes volumes de dados e reconhece padrões estatísticos complexos para gerar respostas e soluções. O ser humano possui desejo, afetividade, consciência da própria história em longo prazo e a habilidade de dar sentido subjetivo às experiências 3. Mas então por que é difícil escolher um número aleatório?!

Ao pesquisar, me deparei com afirmações de que é virtualmente impossível para o cérebro humano gerar aleatoriedade verdadeira 4. Ele carece de ferramentas biológicas para gerar o puro caos exigido pela verdadeira aleatoriedade. Esses estudos mostram constantemente que nós, seres humanos, somos muito ruins em escolher números aleatórios devido à tendência natural de criar padrões.

Padrões​

Mas como esses padrões são criados? Nosso cérebro tende a seguir padrões, depender de hábitos e ser influenciado por vieses cognitivos, o que torna quase impossível atingirmos a total imprevisibilidade.

Economia de energia​

Mesmo o nosso cérebro ocupando cerca de 2% do nosso peso, ele consome por volta de 20% de toda a energia do nosso corpo. Seria muito custoso processar o puro caos ou gerar algo inédito e desconectado de memórias. Por isso, recorrer a um padrão pré existente e metabolicamente muito mais barato. SPOILER: não é esse o motivo de trabalhos “intelectuais” ou que exigem esforço mental, serem mais cansativos que trabalhos braçais / físicos.

Heurística de disponibilidade​

“Arquivista estatístico” é uma das muitas funções desempenhadas pelo cérebro e, portanto, as informações as quais formos mais expostas serão as que estarão mais acessíveis. Considerando que, na cultura ocidental, somos bombardeados com números específicos em contextos de importância (tipo 7 dias da semana, 3 em estruturas narrativas ou 10 e 100 como números redondos e divisores), esses mesmos números geralmente estão no topo desse arquivo mental, sendo os primeiros a serem escolhidos rapidamente. Pra quem lembra de Sherlock Holmes que era excelente em resolver crimes e completamente ignorante de que a Terra girava em torno do Sol 5. Não tem um “apesar de” aqui pois, justamente o ponto de manter apenas o essencial no seu “sótão mental” o ajudava com a aleatoriedade criada por um catálogo técnico rígido ao invés do usual baseado na disponibilidade emocional.

A Regra de Hebb​

Ao longo da vida, as experiências, emoções e observações criam conexões físicas cerebrais (sinapses). Por isso que os números, na nossa mente, nunca são apenas um valor abstrato mas, sim, associações entre informações como datas de aniversários, placas de carro, camisas de jogador de futebol preferido, senhas, números de telefone, endereços e etc. Como que obedecendo a Lei de Ohm, a energia elétrica no nosso cérebro tende simplesmente a percorrer o caminho neural de menor resistência, ativando a tal rede associativa que estiver mais estimulada naquele momento.

Claro que há muito mais fatores e teorias do que esses três citados acima, além de, para quem acredita, ideias relacionadas até mesmo ao espiritual e ao místico.

Comecei a me questionar se as pessoas no geral aceitam cegamente a ideia do livre-arbítrio ou não percebem nossos próprios padrões subconscientes. Talvez porque a ideia de aleatoriedade de verdade quase nunca aparece no dia a dia ou simplesmente ignoram o tema.

Mas, pra mim, é um jogo frequentemente interessante refletir se minhas escolhas são mesmo minhas ou se há alguém ou algo escolhendo por mim. De qualquer forma, geralmente o resultado de escolhas individuais acabam refletindo num coletivo e causando desconfortos e conflitos. (esse é um dos pontos centrais do meu estudo sobre a Verdadeira Liberdade, porém a discussão ainda não cabe aqui))

Notas​

5 - DOYLE, Arthur Conan. Um estudo em vermelho. Tradução de Maria Luiza de X. de A. Borges. Rio de Janeiro: Zahar, 2009.


  1. ↩

  2. ↩

  3. ↩

  4. ↩

· Leitura de 6 minutos
Anderson de Souza

Bem antes das I.A.s surgirem com seu vibe-coding mágico, o "poder" de criar soluções em forma de software costumava estar nas mãos de programadores. E isso era vez ou outra romantizado em filmes.

Nosso personagem acreditava nisso, tanto que tinha tal capacidade criativa mas sempre lhe faltava as habilidades de vendedor. O primeiro cliente pra quem vendeu um site até tentou o ajudar, inclusive emprestando um livro de vendas mas ele não ouviu os conselhos e optou for focar no desenvolvimento das habilidades compatíveis com a função.

Por isso, sempre buscou seu parceiro, ou parceira, de vendas. A pessoa-chave que venderia a solução e os lançaria na brincadeira. Tentou algumas vezes: irmão, esposa, amigo, amigos até que surgiu um cara boa pinta, multi-empresário bem sucedido.

Acreditou que tinha encontrado a componente faltante pra receita do sucesso, o cara do negócio e das vendas. Então, sem perder muito tempo, abriu o jogo e mostrou toda a ideia com grande potencial: plano de ação, key-features, branding, tudo para o novo app de mobilidade. Na época basicamente uma unica opção dominava o mercado e quase não tinha concorrência.

"Entrega já!" era o nome.

O sujeito se demonstrou bastante interessado e aceitou a oferta de sociedade. Além do capital, cuidaria do marketing e demais operações de vendas.

Le coup​

Após uns dias de trabalho no MVP e apresentadas as necessidades de compras (expandir equipe e etc) um problema novo surgiu: "Entrega lá!" - o abençoado havia contratado uma empresa de SC para desenvolver o projeto. ( E pqp, nem pra disfarçar um pouco com o nome...) 🤡

A raiva de ser feito de trouxa serviu como lenha na fogueira da sua vingança e ele logo tratou de ir atrás da sua vitória.

Descobriu a empresa que havia vendido o software e o valor, na época: R$ 6.000,00.

Desenvolvido em PHP puro, sem nenhum framework, a API do aplicativo tinha mais falhas que recursos.

Logo de cara encontrou um IDOR 1 no endpoint de usuários. O primeiro usuário cadastrado, com ID 1, era o admin. Depois disso, pôde listar todas as informações dos usuários: endereço completo, dados pessoais e etc. Por sorte, o sistema não gerenciava pagamentos, entao não havia dados de cartão de credito armazenados.

Le contrecoup​

Em seguida, tentou o que talvez tivesse sido o ponto de entrada de qualquer pentester ou hacker: SQLinjection 2 no formulário de login. Advinha? Totalmente vulnerável!

Voilà! O sistema era dele!

A partir dali, ele poderia:

  • exfiltrar os dados do sistema todo;
  • promover o caos total no sistema com pedidos falsos e bagunça em informações;
  • deixar a plataforma toda indisponível com ataques de DoS 3;
  • e até mesmo comprometer todo o servidor com um ataque de RCE 4!

Coup de grâce?!​

Seus dedos se apressaram em encontrar as teclas e digitar. Mas, ao invés de elaborar um ataque e o executar, tratou de gerar um relatório.

Entrou em contato com a fabrica de software, se apresentando e listando os problemas encontrados. Em vão! A ignorância e prepotência do gestor foram como um balde de agua fria.

Mais uma vez, aquele serzinho no seu ouvido esquerdo tentou convence-lo a tocar o terror:

  • "Ladrão que rouba ladrão, tem sete anos de perdão!" - dizia...

Mas ele não flertava com um "emprego" que envolvesse ser acordado logo depois das 05h pela PF. E, sim, uma hora ou outra quem faz besteira acaba sendo pego. Por melhor que seja o hacker...

Além do mais, ética é sobre agir de forma correta independente da situação e, basta uma ação errada para manchar toda uma história correta.

Du coup​

Resultado? Deixou tudo como estava e o caso se converteu em "mais um CD debaixo da cama"...

O "Entrega lá!" não durou muito: em poucos meses o aplicativo havia sumido da Play Store e o domínio não mais apontava para um IP.

Depois disso, sequer pesquisou sobre a empresa que desenvolveu a plataforma. Pode ser que, em algum lugar da internet, um app de "mobilidade" cheio de falhas ainda expõe seus usuários. Mas isso não é problema dele.

"A vingança nunca é plena, mata a alma e a envenena." - Seu Madruga

Notas​


    • OWASP: Referência Direta Insegura a Objeto (IDOR) A Referência Direta Insegura a Objetos (IDOR) é uma vulnerabilidade que surge quando atacantes conseguem acessar ou modificar objetos manipulando identificadores usados ​​em URLs ou parâmetros de uma aplicação web. Isso ocorre devido à ausência de verificações de controle de acesso, que não conseguem verificar se um usuário deve ter permissão para acessar dados específicos.

    ↩

    • OWASP: Injecao de SQL (SQLi) Um ataque de injeção de SQL consiste na inserção ou "injeção" de uma consulta SQL através dos dados de entrada do cliente para a aplicação. Uma exploração bem-sucedida de injeção de SQL pode ler dados sensíveis do banco de dados, modificar dados do banco de dados (inserir/atualizar/excluir), executar operações administrativas no banco de dados (como desligar o SGBD), recuperar o conteúdo de um determinado arquivo presente no sistema de arquivos do SGBD e, em alguns casos, emitir comandos para o sistema operacional. Ataques de injeção de SQL são um tipo de ataque de injeção, no qual comandos SQL são injetados na entrada do plano de dados para afetar a execução de comandos SQL predefinidos.

    ↩

    • OWASP: Negação de Serviço (DoS) O ataque de Negação de Serviço (DoS) tem como objetivo tornar um recurso (site, aplicativo, servidor) indisponível para a finalidade para a qual foi projetado. Existem muitas maneiras de tornar um serviço indisponível para usuários legítimos, manipulando pacotes de rede, explorando vulnerabilidades de programação, lógica ou gerenciamento de recursos, entre outras. Se um serviço receber um número muito grande de solicitações, ele poderá deixar de estar disponível para usuários legítimos.

    ↩

    • CloudFlare: Execução Remota de Código (RCE) Um ataque de execução remota de código (RCE) é quando um invasor executa um código malicioso nos computadores ou na rede de uma organização. A capacidade de executar códigos controlados pelo invasor pode ser usada para várias finalidades, incluindo a implantação de malware adicional ou o roubo de dados confidenciais

    ↩

· Leitura de 3 minutos
Anderson de Souza

Olá, amigo.

Um cara estava querendo comprar passagens de ônibus para visitar seus pais. A cidade onde ele morava tinha um site de venda de passagens.

Sua cabeça começou a coçar, sabe né... Então ele decidiu ver como o site funcionava: quando você aprende desenvolvimento web, na teoria você deveria aprender as "Ferramentas de Desenvolvedor do Navegador" (Chrome/Chromium, Firefox, etc., todos eles tem). Nessa ferramenta, você pode mexer com um monte de coisas: Console JS, cookies, corpo HTML, requisições HTTP e daí por diante.

Avaliação de Vulnerabilidade​

Ele começou a analisar cada requisição... escolheu a passagem e seguiu no processo.

Durante o checkout, ele percebeu que as informações da passagem era enviada de volta na requisição! O que isso quer dizer??? "Bem," ele pensou, "já que eu to enviando o preço de volta, será que eu posso escolher ele então?"

Exploração​

Então, ao invés de "R$57,60" pela passagem, ele trocou a requisição e definiu "R$57,69."

Cruzou os dedos e... Funcionou! O saldo foi debitado da sua conta e o recibo foi gerado.

Mas ainda não tinha acabado. Você precisa imprimir o recibo e trocar pelo bilhete lá na rodoviária.

Problemas​

Mas e se os funcionários da rodoviária notarem a diferença de preço? Será que ele enfrentaria um processo por fraude? Vamos fazer uma análise superficial da Lei.

Código Penal Brasileiro - Art 154a​

Art. 154-A. Invadir dispositivo informático de uso alheio, conectado ou não à rede de computadores, com o fim de obter, adulterar ou destruir dados ou informações sem autorização expressa ou tácita do usuário do dispositivo ou de instalar vulnerabilidades para obter vantagem ilícita:

Pena – reclusão, de 1 (um) a 4 (quatro) anos, e multa.

Bom, podemos ver claramente que nenhuma vantagem foi obtida nesse caso. Na verdade, ele até gastou nove centavos.

Mas, como eu não sou um advogado, não posso garantir.

Como ele não sabia o que fazer com essas informações, ele só ignorou... Sua recompensa sempre era burlar e quebrar as coisas e não fazer dinheiro.

Alguns anos depois​

Ele se lembrou do problema e foi fuçar nisso de novo.

O site estava igual (na verdade, ainda está). Mas a vulnerabilidade foi mitigada.

Eles não refatoraram o sistema. O usuário ainda envia as informações da passagem para o servidor, mas... Mesmo se tu colocar um centavo a mais, o servidor verifica e retorna uma mensagem de erro dizendo que o usuário mudou o preço da passagem.

Nunca confie no usuário​

Com essa história, pudemos ver (numa abordagem prática e da vida real), o que é dito na maioria dos "Cursos de cibersegurança": Nunca confie no usuário! Quando estiver desenhando, arquitetando e programando um software, sempre tenha essa premissa profundamente gravada na sua mente.

Não importa se você está programando um sisteminha para monitorar a temperatura do teu quarto numa Raspberry Pi, um quadro de mensagens na intranet da empresa onde você trabalha ou uma API no seu trabalho...

É isso aí!

References​