Latest / Entre Chaves / #263 OWASP Top 10: as ameaças web mais perigosas atualmente
Transcript
- 0:02Está começando mais um entre chaves o seu podcast
- 0:05desenvolvimento de software e voltamos com nossa parte 2 tão
- 0:09aguardada pra poder falar sobre a parte de cima do asp top 10.
- 0:12Se você não tá sabendo ainda, tá por fora.
- 0:14O que que é o asp top 10? Volta um episódio, aí não pula
- 0:17não porque é extremamente relevante pra você e o seu dia a
- 0:19dia como desenvolvedor de software.
- 0:21Então vamos falar aqui sobre a segunda metade.
- 0:23Né? O top 5 as 5 vulnerabilidades do
- 0:27mundo mais danosas pro nosso software e eu fiquei sabendo que
- 0:30tem algumas delas aqui que estão presente em 100% das milhões de
- 0:35aplicações testadas. Não é isso mesmo?
- 0:37A gente vai chegar lá então pra poder falar sobre isso.
- 0:39E pra poder começar, nós vamos falar sobre uma das
- 0:41vulnerabilidades mais geniais, mais legais de todas e mais
- 0:44divertidas de serem exploradas. E a minha favorita, que é o
- 0:48injection, né? E.
- 0:50Entra ano, sai ano. Essa é outra que não adianta,
- 0:53né? Às vezes ela se junta aglomera
- 0:55com mais alguns fatores, mas está sempre aparecendo.
- 0:58Sobe um pouquinho no pódio, desce um pouquinho, não importa,
- 1:02ela está presente bom. A vulnerabilidade de injetion
- 1:05ela começa com um erro nossa aplicação, basicamente, ela gira
- 1:09em torno de dessa aplicação aceitar um input de um usuário
- 1:14não confiável. E esse input parte dele, a tela
- 1:16inteira vai ser executado como um comando dessa aplicação, e
- 1:19essa aplicação não vai validar essa entrada e vai executar esse
- 1:21comando, mas. Calma aí, como assim?
- 1:22Se eu colocar um código em c Sharp lá, minha aplicação vai
- 1:25executar esse código cara? Potencialmente.
- 1:27É ou até mesmo? JavaScript ou uma pesquisa de
- 1:30carrey de banco de dados? Então, por exemplo, se você tem
- 1:33uma rota de login, por exemplo, 11 formulário, eu acho que tem
- 1:36um vale senha, e essa senha não é validada.
- 1:38Eu posso colocar um select todos da sua tabela de usuários e isso
- 1:42provavelmente o banco de dados vai retornar todos os usuários.
- 1:44Então eu tenho diferentes tipos de injeção de dados aí, né?
- 1:48Algumas delas para bancos de dados, que são os famosos SQL
- 1:51injections, né? Enquanto isso, eu tenho outros
- 1:54tipos de injeção também, como o herbitrarie, codection ou a
- 1:57injeção de JavaScript, né? Popularmente conhecido como xss,
- 2:00dependendo da categoria e do modo como que você faz.
- 2:03E parece que tudo isso que você falou aí está voltando sempre
- 2:07para o input do usuário, né? O que seriam maus exemplos e
- 2:11bons exemplos da utilização disso daí?
- 2:13É perfeito. O que a gente falou são vários
- 2:15tipos de de ataques e em Gerson, e dentro desses ataques, em
- 2:18vários tipos de subcategorias. E todos, todos eles se baseiam
- 2:22de fato na validação de entrada. Então um exemplo ruim seria você
- 2:25não validar a entrada ou validar ela de forma incorreta, né?
- 2:28Ou não, completa. Então você tem, por exemplo, uma
- 2:30validação de uma senha. Só que você, um de um e-mail,
- 2:33por exemplo, você permitir caracteres especiais como
- 2:36porcentagem é setinha, mas você, por exemplo, vai ter um e-mail
- 2:39com 500 linhas, não é? Não é necessário, né?
- 2:42Eu acho que ninguém tem no meio. Desse tamanho?
- 2:43Um exemplo que eu costumo dar para o pessoal quando a gente
- 2:45fala sobre esse tópico, é o exemplo da validação do
- 2:47telefone. Então, um telefone, ele é um
- 2:51dado muito bem construído que a gente sabe exatamente o que que
- 2:54vai ter nele. A gente sabe que ele tem um
- 2:55sinal de mais para informar o ddi que ele tem 12 ou 3
- 2:59caracteres numéricos, né? Para informar o ddi.
- 3:01O parênteses pro DDD ele tem um hífen ou não, né?
- 3:04Dependendo de como você colocar sua máscara, pode ser que ele
- 3:07seja exclusivamente numérico, não tem problema, mas a gente
- 3:10sabe principalmente que ele tem um limitador de tamanho e a
- 3:13gente sabe que ele não possui nenhum caractere alfabético.
- 3:15E é engraçado porque o comentário que eu faço é o
- 3:18seguinte, olha, usualmente a gente utiliza programação
- 3:22orientada a objetos, né, pra poder descrever o mundo, né?
- 3:25Por meio do código e a programação orientada a objetos
- 3:28ela tem como objetivo um deles, né?
- 3:30Refletir. Os objetos do mundo real
- 3:32representá Los dentro de um código de algum, de uma certa
- 3:35forma, né? Então esse é 11 dos paradigmas
- 3:37desse tipo de programação. Agora, eu não conheço nenhum
- 3:41telefone do mundo real que tem um caractere alfabético, então
- 3:44por que que o seu telefone do código deveria ter, né?
- 3:46Ele deveria estar sendo validado pra não compor, afinal o seu
- 3:49objetivo dele é refletir o objeto do mundo real, ele
- 3:51deveria espelhar essas mesmas características, certamente e
- 3:54pro. Desenvolvedor não ter que ficar
- 3:56olhando de país em país qual o padrão de telefone?
- 3:59Existem já diversos regex que podem utilizar de contém padrões
- 4:02universais, telefone de e-mail, por exemplo, então você vai
- 4:05abordar todas as possíveis é vulnerabilidades que aquele
- 4:08campo poderia ter, não é isso aí completa que é um regex, vai
- 4:12permitir tais caracteres, vai limitar, então vai ser uma mão
- 4:14na roda. Então eu recomendo você dar uma
- 4:16pesquisada sobre regex. Então, apesar dessa ser a minha
- 4:18vulnerabilidade favorita, eu acho que na resolução, talvez
- 4:21ela seja até uma das mais simples, né?
- 4:23Em resumo, a gente precisa garantir que aquele campo receba
- 4:27única e exclusivamente o que é esperado pra aquele campo.
- 4:29Até porque essa é muito antiga, essa vulnerabilidade, desde que
- 4:32a internet, a internet, ela existe.
- 4:34Existem várias correções até pra banco de dados.
- 4:36Por exemplo, você não precisa fazer uma pesquisa com carees,
- 4:39pode usar urms que tem um prisma e que vai preparar.
- 4:43Você só vai mandar o care edital.
- 4:44E aí já tem uma care construída que você não precisa digitar e
- 4:47não precisaria do seu código, da sua.
- 4:49É daquele formulário, está vulnerável?
- 4:51Não corre o risco de concatenar a entrada do meu usuário com o
- 4:56comando que será executado, né? Porque assim, eu até entendo que
- 4:59nós nós demos aqui o exemplo do telefone do e-mail, que são
- 5:02Campos de caracteres muito bem definidos, mas existem outros
- 5:06Campos que o input não é tão simples assim de ser validado.
- 5:08Um campo de comentário, por exemplo, onde o usuário ele tem
- 5:11a Liberdade de escrever aquilo que ele quiser, me parece ser um
- 5:13pouco mais complexo nesses. Casos é onde você?
- 5:18Tem textos maiores e que aceitam diferentes tipos de caracteres
- 5:21que podem ser utilizados para escrever um código.
- 5:23Válido, né? Que pode ser executado em algum
- 5:25lugar da sua aplicação. A gente tem uma ferramenta muito
- 5:27boa que é o incoding, né? Que é, ao invés de você
- 5:31sanitizar, né, que é você apagar ou não permitir um tipo de
- 5:35caractere específico, você vai usar uma linguagem de conversão
- 5:39que vai representar aquele caractere de outra forma, né?
- 5:42Então o incoding, ele faz isso. Então digamos que você não
- 5:45queira. O caractere de maior e menor num
- 5:47campo de comentário pra você impedir algum tipo de é XSS.
- 5:51Você utiliza o incoding que aquele caractere vai ser
- 5:54representado de outra forma que não tem o risco de ser executado
- 5:57e ser interpretado como código, né?
- 5:59Então basicamente o incoding ele torna aquele aquele texto de
- 6:03inofensivo pra determinados tipos de interpretadores ou
- 6:06compiladores. Então, as linguagens de hoje,
- 6:08elas já estão vindo. Pelo menos algumas delas, né?
- 6:11Parece já ter essa preocupação de forma nativa, né?
- 6:13Um escape de forma nativo, na própria construção do do
- 6:15framework, da linguagem e da biblioteca.
- 6:18Então estão resolvida essa parte do injetion.
- 6:20Vamos subir para o nosso top 4 chegando na pontinha do nosso
- 6:24pódio, né? Então o top 4 são as falhas
- 6:27criptográficas, que nome bonito, outro nome bonito que aparece
- 6:31aqui, né? Falhas criptográficas, mas ainda
- 6:33me parece um pouco genérico. E aí, luquinhas distante é para
- 6:37gente aí, por favor, o que que significa essas falhas
- 6:38criptográficas? É então assim, tem 4, né, de
- 6:41falhas criptográficas ele, ele abrange várias falhas
- 6:44diferentes, né, assim como todos os outros, mas vão estar
- 6:47relacionadas ao uso de funções criptográficas é nos diversos
- 6:51contextos, né? Por exemplo, na hora de você
- 6:54criptografar uma senha nova de um usuário novo, né, qual são as
- 6:57melhores práticas, né, para você fazer isso?
- 6:59Quais algoritmos são os melhores para você utilizar, né?
- 7:02Se você vai colocar um Salt antes e depois vai colocar um
- 7:05Salt depois, né, o Salt é um. É um.
- 7:07Tempero, um salzinho. Um salzinho a mais que você
- 7:10coloca Na Na função de conversão, justamente pra você
- 7:13tornar mais imprevisível ainda. Qual que é aquele resultado
- 7:16final daquela senha? E aí pode ter vários tipos de
- 7:18problemas, por exemplo, o uso de algoritmos já muito antigos.
- 7:23Tipo, é um MD 5, é sha um. Algoritmos que já foram
- 7:27quebrados pela fraqueza matemática deles, né?
- 7:30E que hoje eles já não seriam mais significativos em questão
- 7:34de criptografia. Assim, são mais facilmente
- 7:36burláveis ali, né? É, mas também vai vai falar
- 7:39sobre coisas como o armazenamento correto de chaves,
- 7:41né? Se você coloca suas chaves em
- 7:43locais acessíveis, né? Às vezes uma chave no código vai
- 7:47entrar em falhas de criptografia, então você tem que
- 7:49utilizar um pivalte, por exemplo. 11 armazenamento
- 7:51adequado se você faz a rotação adequada desses dessas chaves,
- 7:55né? Então troca periodicamente, né?
- 7:58Evitando justamente. Que vazamentos se comprometam,
- 8:01né? A integridade desses dados.
- 8:03Então tem um bom processo de rotação de chaves também, acaba
- 8:06caindo aí dentro, né? Um processo de criptografia em
- 8:08trânsito com criptografia em repouso dos dados, tem uma boa
- 8:12separação de ambientes, né? Para categorias diferentes de
- 8:14dados, onde eles podem estar armazenados ou não.
- 8:16Isso tudo entra dentro dessa categoria, certo?
- 8:18Certo, exatamente. E vamos entrar no nosso pódio
- 8:22então começando com a nossa medalha de bronze desse ano.
- 8:25Que aparece pela primeira vez na lista da oasp top 10 e já chega
- 8:29marcando um lugarzaço, Hein? Em terceiro lugar nós temos o
- 8:35software supply chain filers. Então a novidade que aparece na
- 8:40lista da oasp, mas que deveras nos últimos 4 anos, eu vi muitas
- 8:45e muitas notícias sobre o assunto, né?
- 8:47E que que é esse cara, né? O que que significa software
- 8:51supply chain filers, né? As falhas de.
- 8:54Cadeia de suprimentos de software.
- 8:57Então esse que antes também poderia ser chamado de
- 9:00componentes vulneráveis, né? O vunerobocomponentes é, na
- 9:03minha opinião, Oo novo nome é mais adequado mesmo assim, visto
- 9:08a as características, né? Dos ataques que estão
- 9:11relacionados a esse item, né, então esse item 3, ele tá lá, tá
- 9:14relacionado lá com o item 8, né? Onde a gente tinha é a
- 9:18integridade, né, desses das bibliotecas que a gente importa
- 9:21e nesse caso a gente volta a falar dessas bibliotecas
- 9:23externas. Framurx, né?
- 9:25É pacotes da npm, pacotes do cargo, plugins que a gente
- 9:29instala Na Na pipeline, na infraestrutura, né?
- 9:33Todos é pacotes de software, trechos de código que a gente
- 9:36utiliza que não foram desenvolvidos pela gente, né?
- 9:39Existe um debate de qual que é o número exato, mas é, eu já vi
- 9:43tanto de 70 a 90% de código que está executando de fato no
- 9:48final, né? Quando você acessa seu site que
- 9:49você construiu. É de 70 a 90% desse código.
- 9:53Ele, ele foi desenvolvido por outras pessoas, né?
- 9:55Por outros desenvolvedores vocês.
- 9:57Dizem assim, somando as bibliotecas, os framix e tudo
- 9:59mais que opera ali por detrás. Né?
- 10:01Exatamente. Isso mostra o quão importante é
- 10:03esse código externo, né? Ele é a ele é a base para.
- 10:07Grande parte da internet, grande parte da infraestrutura que a
- 10:09gente utiliza para desenvolver. É eu, particularmente, não
- 10:12lembro qual que foi a última vez que eu acessei um código escrito
- 10:15em assemble puro sem nenhum tipo de importação, né?
- 10:18É? Exatamente, então assim, com
- 10:20certeza alguém te ajudou, né? Então, por isso que é tão
- 10:23importante olhar para as falhas de cadeia de suprimentos.
- 10:27O caso. Para mim, mais fatídico disso é
- 10:30da biblioteca XZ útil de um agente malicioso, né?
- 10:34Codinome gia tem, né, gia tem, passou a contribuir no projeto,
- 10:38né? É OOXE útil, é uma é biblioteca
- 10:40de utilidades, de descompressão, compressão e algumas outras
- 10:43coisas muito utilizada No No Linux, né?
- 10:45Se eu não me engano, quase todas as distribuição do Linux possuem
- 10:49essa biblioteca e aí uma pessoa passou a contribuir, né?
- 10:52Se é numa biblioteca open, SUS. Uma pessoa começou a contribuir,
- 10:55ficou 2 anos contribuindo e ganhou.
- 10:57Confiança da comunidade, né? E fez realmente contribuições
- 11:00relevantes. Pra pra biblioteca?
- 11:02Exatamente. E Do Nada, essa pessoa Do Nada
- 11:05não, né? Tudo planejado, essa pessoa
- 11:06subiu, né? Um trecho malicioso de código
- 11:09ali, num blog escondido. E ninguém percebeu?
- 11:12Até que um engenheiro da Microsoft estava divulgando
- 11:16alguma coisa assim no computado dele fazendo um benchmark.
- 11:19Ele percebeu uma. Diferença de alguns
- 11:20milissegundos assim, na execução de uma função.
- 11:23Ele ficou estranho, estranho isso aqui, e aí ele foi
- 11:26investigar e descobriu esse trecho de código malicioso aí
- 11:29nessa biblioteca, né? E.
- 11:32Impediu aí que isso se tornasse um problema maior, né?
- 11:35Muito que incrível a gente pensar que por causa de um
- 11:39engenheiro da Microsoft que percebeu uma diferença de
- 11:41milissegundos na chamada. A gente teve a descoberta de um
- 11:46problema tão crítico, né? E tão profundo quanto esse.
- 11:49Isso nos. Leva a pensar, né, o que onde
- 11:51mais tem coisas parecidas, onde não tivemos?
- 11:53Pensei nisso exatamente agora, né?
- 11:55O quanto as bibliotecas talvez não estejam com problemas nesse
- 11:58momento e que a gente só vai descobrir no futuro, né?
- 12:01Beleza, mas e aí? Temos bons exemplos, temos maus
- 12:05exemplos, mas e eu, como deve? Que que eu faço play se tem 3?
- 12:09Tem várias coisas que a gente deve fazer para se defender
- 12:12contra esse tipo de ataque, né? Primeiro, manter sempre as
- 12:16bibliotecas do seu software na última versão, né?
- 12:19As bibliotecas que você utiliza é bem atualizadas.
- 12:22E utilizar um tipo de ferramenta que a gente utiliza diariamente
- 12:24aqui, né, no nosso time de segurança, que é o sca, né?
- 12:28Que é vai verificar justamente a composição do seu software ali.
- 12:32Todas as bibliotecas que ele utiliza, os framex, é, e ele vai
- 12:35ir lá na base da nvb, né, que é a base onde armazena todas as as
- 12:39cvs, né, que são cadastradas. E vai verificar se existe alguma
- 12:42cv ativa para aquela biblioteca. Então, só para deixar claro, cve
- 12:45é uma vulnerabilidade já conhecida e.
- 12:47Catalogada, né? Exatamente você tendo esse esse
- 12:50relatório, né? Ali, com todas as
- 12:52vulnerabilidades, você você vê quais bibliotecas precisam ser
- 12:55atualizadas ou não, né? É importante ter esse essa
- 12:58verificação constante, né? É melhor ainda é você colocar
- 13:01esse tipo de verificação no seu pipeline.
- 13:04Né? E quebrar ele caso tenha alguma
- 13:05biblioteca com uma vulnerabilidade crítica, por
- 13:07exemplo. E.
- 13:08Aí volta pra outro tópico que a gente já falou que é o shift
- 13:10left security, né? Mais uma vez os tópicos começam
- 13:12a se encaixar aqui, né? Eu tenho a sensação de que nada
- 13:15na segurança ela anda de forma isolada, né?
- 13:17Ou pelo menos é bem raro, da sensação de que eles sempre
- 13:20andam juntos. Uma coisa vai construindo a
- 13:22outra, uma vulnerabilidade é sempre um conjunto de falhas,
- 13:24né? Sim.
- 13:25Exatamente. E agora vamos subir mais um
- 13:27degrau no nosso pódio e ir pra nossa medalha de prata.
- 13:31Security me configuration, mais uma figurinha repetida, só que
- 13:35dessa vez no top Dead 2025. Aparece algumas posições acima
- 13:38do esperado, Hein? Eu, particularmente, não achei
- 13:41que ela fosse estar tão alta assim.
- 13:43Talvez nem que voltasse a aparecer, que fosse quebrada em
- 13:45outras categorias. Não sei, mas cá está ela
- 13:48resistente no top 2? Pois é, cara, ela.
- 13:51Voltou, acredito que já até antecipando um pouco, que eu
- 13:54acho que o maior causa dela ter voltado é o crescimento de ar,
- 13:58porque a configuração ela depende de contexto.
- 14:00E basicamente a falha de culturação, né?
- 14:02O mis configuration, ele gira em torno da sua aplicação.
- 14:05Não está bem configurada você ter um banco, uma porta de banco
- 14:08de estados aberta, você ter usuários com senha padrão ainda
- 14:11certificados com a senha de assinatura padrão, tudo isso
- 14:14engloba é as falhas de segurança de configuração, é que nem eu
- 14:17falei do certificado, por exemplo, você pode ter melhor
- 14:20forma de dedicação m é fiar, você pode ter tudo, mas vai lá
- 14:23ser o certificado AAA senha dele é pública e qualquer pessoa
- 14:26consegue personificar qualquer um.
- 14:28Então, você ter esses exemplos assim é muita coisa.
- 14:30Sempre parece bastante coisa da gente olhar certificado é JBT
- 14:33ata de carsom me afiar é muita coisa, mas são Pequenos Detalhes
- 14:36que fazem muita diferença Na Na alta de.
- 14:37Carsom é como a gente acabou de comentar, né?
- 14:39Nada da segurança. Ela é isolada, né?
- 14:41Então você vai juntando uma pecinha de quebra cabeça daqui e
- 14:43dali e de repente você tem uma figura inteira que você acabou
- 14:45montando, beleza, a gente tem alguns exemplos ruins, né?
- 14:48Do que que pode ser isso, então? Você não colocar o Harden de
- 14:52maneira apropriada, você não listar a sua nuvem das maneiras
- 14:55corretas validar seus certificados, né?
- 14:57Aplicar as as tug of features específicas que podem melhorar a
- 15:01robustez da sua aplicação. Mas e agora, pra quem tá ouvindo
- 15:04a gente, o que que essa pessoa pode buscar fazer pra conhecer
- 15:07quais são essas possíveis falhas de configuração?
- 15:09Porque como você comentou, né? Eu imagino que isso tenha
- 15:12crescido por causa da utilização da IA e eu posso até concordar
- 15:14com você, mas eu duvido muito que as pessoas vão parar de
- 15:16utilizar a IA. E aí, que que eu posso fazer a
- 15:18respeito? Então com certeza é, existem 2
- 15:21cenários, existe o caminho que a aplicação já está desenvolvida,
- 15:23já está pronta, só que as confurações estão erradas.
- 15:25E aí no cenário que você vai começar a aplicação do zero e
- 15:28você vai começar estabelecendo as confurações pro primeiro
- 15:31cenário de aplicação não está pronta.
- 15:32Acho que o melhor processo é juntar com 111 time de que é uma
- 15:36coisa do tipo, pra poder testar a aplicação de fato, testar as
- 15:39configurações delas, se estão de um apadrão, rodar um animec, por
- 15:42exemplo, uma aplicação pra ver se as portas estão abertas.
- 15:45É, deveriam estar abertas de fato pra ver se os usuários de
- 15:48administradores possuem uma senha, seja segura, certificada.
- 15:51Ele está com um pouco indiferente do padrão e várias
- 15:54outras coisas. É e pra pro que está começando
- 15:56agora, eu acho que a gente até começou, conversou um pouco e a
- 15:58famosa, essa batida de segurança, você lê de fato a
- 16:01documentação daquilo que você está usando, você não usar
- 16:04aplicativos que não sejam necessários pra somar essa
- 16:07aplicação que vão ficar boiando e somando dados.
- 16:09À. Toa limpar todos os recursos
- 16:12features que não são mais necessários nessa aplicação é
- 16:15sempre foi uma boa prática. Né?
- 16:17Exatamente. E queria fazer essa batida ainda
- 16:19é muito importante porque você juntar com grupo de pessoas pra
- 16:22entender como aquela aplicação funciona e ver se aquela curação
- 16:24deveria ser daquele jeito ou você lê.
- 16:27Isso é muito importante, estar desenvolvedores, leiam a
- 16:29documentação, mas que doa. Dói muito falar isso.
- 16:32Eu também não gosto muito de ler, mas a documentação é muito
- 16:34importante porque lá ela fala o que são as aplicações padrão que
- 16:37deve ser alterado, como que a aplicação ela bem que é moldada.
- 16:40Então é muito importante você ter contato, documentação ou
- 16:43tabela debaixo do braço pelo sujo dos elos.
- 16:44Fatos é, e outra coisa que você comentou é não confiar na ya pra
- 16:47poder fazer decisões que são baseadas em contextos, né?
- 16:49Então, quando você precisar de ativar, desativar algum recurso.
- 16:52Que você saiba exatamente o que que é, aquilo que você está
- 16:54fazendo para poder ter a garantia da sua decisão.
- 16:56Exatamente, aí ela é uma mão na roda, todo mundo sabe, ela é
- 16:59útil demais, faz o código, cria código, corrige, só que o
- 17:02contexto ela não entende. Certamente você pode tentar
- 17:04explicar um pouco para ela, mas não vai ser o que um humano vai
- 17:07conseguir interpretar. Você sabe que essa aplicação ela
- 17:09deveria passar de uma forma específica, mas aí ela não
- 17:12consegue pegar direito a essa visão, ela vai fazer uma
- 17:14configuração que ela não deveria.
- 17:16Então é sempre ela é muito útil, vai te dar a talvez melhorar a
- 17:20sua figuração, mas você precisa guiando e fazer a revisão
- 17:22manualmente. E agora a gente vai para o nosso
- 17:25top um, o saudosista Broken access contil e parabéns aí mais
- 17:31de 1 ano, né? Onde o Broken access contil
- 17:33aparece e aparece uma posição extremamente relevante.
- 17:37São várias e várias listas em sequência onde ele aparece pelo
- 17:40menos no top 3, né? 2 em seguidas no top um.
- 17:43Então o Broken access control passaram se 4 anos desde a
- 17:48última lista e ele continua sendo a vulnerabilidade
- 17:53potencialmente mais danosa do mundo em relação a aplicações
- 17:57web. E aí, lukins, o que que é esse
- 17:59cara e o que que a gente tem que fazer para tirar ele dessa lista
- 18:02para o próximo, daqui 4 anos? Não é possível que ele vai
- 18:05continuar lá de novo. É, cara, vai ser um trabalho
- 18:07difícil, presente em nada mais nada menos do que 100% das
- 18:11aplicações testadas pela oasp. Essa vulnerabilidade ela é.
- 18:14Sim, você está me dizendo que a oasp ela fez esse essa pesquisa
- 18:17com milhares de aplicações e em 100% milhões milhões de
- 18:23aplicações e em 100% delas. Existe alguma forma de brockenex
- 18:28contra O Presente? Exatamente.
- 18:30Esse cara não está no top um à. Toa, né, não está?
- 18:32E vamos lá, né? Vamos falar sobre alguns dos
- 18:35problemas, né, que estão relacionados com o bloquemex,
- 18:38né? O primeiro, mais básico, que
- 18:39talvez seja o motivo principal dela aparecer tantas vezes, é a
- 18:43falta de reforço do princípio de privilégio mínimo.
- 18:46Os profissionais de segurança estão falando isso aí há
- 18:47décadas, décadas e décadas e décadas, né?
- 18:50E esse princípio ele ainda não é seguido à risca, né?
- 18:53Não é um princípio básico da computação no geral, mas deveria
- 18:56ser, porque o princípio do privilégio mínimo ele vai falar.
- 18:59Um usuário daquele sistema, né, um agente que agora a gente tem
- 19:03que falar de agentes também, né, que tem agência, né, dentro de
- 19:05um contexto, né? Eles só podem ser permitidos a
- 19:08fazer aquilo que é o mínimo necessário pra eles conseguirem
- 19:12fazer sua sua função ali dentro também, e isso não vale só em
- 19:16relação a permissões pra fazer determinadas funções, mas
- 19:20horários também, né? Qual, qual os horários desse
- 19:23esse agente, esses usuários vai poder fazer isso, né?
- 19:26A quantidade também, né? Quantas vezes essa pessoa pode
- 19:28fazer isso? Então é você ter muito bem
- 19:31controlado aquilo que essa pessoa pode fazer e dar só esse
- 19:34acesso, né? Pra essa pessoa nada mais, nada
- 19:37menos que o necessário. Então, o padrão ele deveria ser
- 19:41permitir somente o mínimo de início, ao invés de dar tudo e
- 19:45depois ir tirando. Exatamente, exatamente.
- 19:48É melhor você autorizar 111 caso extra ali que surge do que
- 19:53deixar todo mundo fazer a mesma coisa e ter que lidar com o dano
- 19:56do ataque depois, né? Então, a questão do privilégio
- 19:59mínimo é, é é algo crucial para o bloquemex control tem que ser
- 20:03reforçado, né? E bem configurado, né?
- 20:05Nas diversas ferramentas de identidade, né, que a gente
- 20:08utiliza. Mas a gente também tem diversos
- 20:11outros problemas em relação a isso.
- 20:13Por exemplo, idor, né? Que é 11 vulnerabilidade bem
- 20:16comum. Dá um exemplo de código aí pra
- 20:18gente, que que é isso, idor? E como é que ele opera?
- 20:20Sabe quando você acessa um site que você tem um cadastro ali?
- 20:23Nem precisa ser um site que você tem um cadastro, mas você tem.
- 20:26Digamos no site como a lista lista de de livros, né?
- 20:29Lista de alguma coisa assim que você pode acessar diversas
- 20:33coisas na mesma categoria, aí você olha Na Na URL e tem um
- 20:37número, né? É no final, tipo barra, books
- 20:40barra e 11, número ali qualquer, né, tipo 1003.
- 20:45A gente que já desenvolve, né? A gente chega à conclusão, tá,
- 20:48esse é um é o ID desse item, né? E muitas vezes a gente não atina
- 20:51que isso é uma vulnerabilidade, né?
- 20:53Pode ser uma vulnerabilidade. Claro que se for publicamente
- 20:56acessível, tudo bem, né? Você tem um ID ali e ele ser
- 21:00sequencial, né? Se você colocar 1004, 1005, você
- 21:03vai ver outras itens da mesma categoria, né?
- 21:05Imagino que uma listagem de livros talvez não tenha problema
- 21:09por ser público, mas se eu estou falando que essa listagem são de
- 21:13documentos pessoais meus em um site do governo, ou talvez não
- 21:18sei alguma coisa até um então. Talvez um pouco mais crítico,
- 21:20como 11 site de um hospital onde eu estou vendo um laudo médico.
- 21:23Meu, exatamente. E aí que surge o problema de
- 21:26bloquenexis, né? Que é quando você vai acessar 11
- 21:30documento, um arquivo, uma página privada, ela tem um ID
- 21:34sequencial e numérico, né? E você simplesmente mudando
- 21:38aquele ID ali pro próximo ou pro anterior, é você acessa outro
- 21:42documento que não te pertence. Então esse é o grande problema
- 21:45do do idor relacionado ao bloquinexis, né?
- 21:47Engraçado que. Muitas vezes, quando a gente
- 21:49está desenvolvendo, eu nem paro para pensar sobre isso, né?
- 21:51Mas entender que o comando que você envia na URL ou no body,
- 21:56ele não pode ser assumido como verdadeiro, né?
- 21:59Porque, afinal, eles podem ser mudados pelo usuário.
- 22:01Eu posso interceptar o body da minha requição e escrever o body
- 22:04eu mesma, seja num por meio de um proxy no meu computador ou
- 22:07por meio do postman, escrever requição direta para o Beck, né?
- 22:09E na URL? Então nem se fala meu próprio
- 22:11browser, eu vou lá e edito ele, aperto o enter e pronto.
- 22:14Com certeza, se fosse pra escolher os controles, eles são
- 22:16preferíveis de estar no back end do que no font end.
- 22:19Sempre, né? Sempre.
- 22:20Porque o atacante, ele nunca vai atacar usando só o font end.
- 22:22Ele com certeza vai abrir o postman, o barco sweet dele, e
- 22:26vai modificar as as requisições ali na mão.
- 22:28E vai achar esse tipo de vulnerabilidade com certeza, se
- 22:31não tiver sido tratado. Previamente, né, ó?
- 22:33A dó foi um excelente exemplo, né?
- 22:35A dó significa in securi direct object reference, né?
- 22:38Uma referência direta ao objeto, de forma insegura.
- 22:41Então, por exemplo, o laudo médico, né, que é onde a gente
- 22:43tem uma página privada com o ID lá na URL.
- 22:45Se eu mudar ele e acessar o outro laudo, é exatamente isso,
- 22:48né? É um acesso direto.
- 22:50E assim, às vezes o sistema, ele até verifica que eu estou
- 22:52logado, né? Ele sabe que eu estou logado,
- 22:54que eu faço parte daquele grande grupo do sistema.
- 22:57Mas ele não consegue diferenciar que eu poderia ter acesso a um
- 23:00dos laudos, mas não ao outro, né?
- 23:03Então tem essa diferençazinha aí do de outra categoria que a
- 23:07gente falou que foram das falhas de autenticação, né?
- 23:10Então o Brooke access, ele ele já passou da parte do login, né?
- 23:14Eu já estou logado dentro do sistema.
- 23:16Agora, o que o sistema falha em identificar é onde eu posso e
- 23:19onde eu não posso ir. Então, um exemplo que a gente
- 23:21costuma sempre trazer, quando você entra numa empresa ou você
- 23:24vai num show, você até apresenta um ingresso na entrada, você é
- 23:27validado pelo segurança, bate o QR Code, o bi coloca a
- 23:30pulseirinha no seu braço e você entra.
- 23:32Mas poder estar dentro do show não significa poder ir no
- 23:35camarote, né? Então tem que ter essa diferença
- 23:38de contextos dentro do seu cenário.
- 23:40E acho que volta, porque que você falou no início?
- 23:42É garantir o mínimo possível. Primeiro, o cara que tem que ir
- 23:45no camarote é quem vai cantar lá no palco, não, beleza, agora que
- 23:48eu sei quem que é, eu vou dar essa exceção a essa autorização
- 23:50Pra Ele. Especial, né?
- 23:51Mas no início tá todo mundo proibido, uau, então o
- 23:55proconexas mais uma vez aparece aqui de forma extraordinária,
- 23:58né? Da nossa lista, 100% das
- 24:01aplicações testada, 100% é um número bem grande, viu bem, bem
- 24:04grande e espero que a gente tenha feito a nossa parte pra
- 24:07que daqui 4 anos, né, quando a asp lançar novamente a lista de
- 24:10top 10 dela. Pô, vai, vamos, vamos descer aí,
- 24:13não vou, eu não vou sonhar para falar, Ah, eu quero ver ele fora
- 24:16da alista, mas pelo menos fora do top 3, né?
- 24:18Vamos descer um bocado aí, porque a nossa parte a gente tá
- 24:20fazendo desse lado, né? Então tomem consciência do
- 24:23software de vocês, testem bastante, voltem aí, acessem a
- 24:26alista da asp, escutam de novo as dicas, leiam lá as
- 24:29documentações, façam o que tiver que fazer e por favor, incomodem
- 24:33os times de segurança, porque eles precisam dar apoio para que
- 24:37vocês possam desenvolver bons softwares, né?
- 24:39Afinal, tem que ser um conjunto, não adianta ambos os lados
- 24:43trabalharem de forma separada, né?
- 24:45Acho que com essas dicas maravilhosas aqui e essas
- 24:48chamadas para ações, a gente pode encerrar o episódio, né?
- 24:50Já está suficiente. Então pessoal, muito obrigado
- 24:53pela atenção de vocês, espero que tenha sido construtivo.
- 24:55Dê um confere lá no asp top 10 e até mais.
- 24:58Valeu, valeu gente, tchau, tchau.