<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Leão de Chácara</title>
    <description>The latest articles on DEV Community by Leão de Chácara (@appsec_brasil).</description>
    <link>https://dev.to/appsec_brasil</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F6700%2Fc71985fe-7a3a-40e9-8edf-9b08f382bfde.jpg</url>
      <title>DEV Community: Leão de Chácara</title>
      <link>https://dev.to/appsec_brasil</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/appsec_brasil"/>
    <language>en</language>
    <item>
      <title>Criando meu próprio Github Actions para a área de AppSec</title>
      <dc:creator>michelleamesquita</dc:creator>
      <pubDate>Mon, 03 Apr 2023 16:42:35 +0000</pubDate>
      <link>https://dev.to/appsec_brasil/criando-meu-proprio-github-actions-para-a-area-de-appsec-1251</link>
      <guid>https://dev.to/appsec_brasil/criando-meu-proprio-github-actions-para-a-area-de-appsec-1251</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--GVcQMmWR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rd3jpeyl2u6t59bpv8ai.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--GVcQMmWR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rd3jpeyl2u6t59bpv8ai.png" alt="Image description" width="880" height="495"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Olá pessoal, tudo bem? 😊&lt;/p&gt;

&lt;p&gt;Hoje resolvi trazer esse tema, pois na área de AppSec/DevSecOps é muito importante conhecer outras ferramentas que possam ajudar na integração e checagens de segurança durante a fase de desenvolvimento de um software.&lt;/p&gt;

&lt;p&gt;O que é Github Actions?&lt;/p&gt;

&lt;p&gt;Ele serve para você automatizar de forma fácil todo o processo de desenvolvimento de software, utilizando o conceito CI/CD por meio do &lt;strong&gt;&lt;a href="https://docs.github.com/en/actions"&gt;workflow&lt;/a&gt;&lt;/strong&gt; (build, teste e deploy ) no seu repositório.&lt;/p&gt;

&lt;p&gt;O mais interessante é que você pode criar uma action e compartilhar no &lt;strong&gt;&lt;a href="https://github.com/marketplace"&gt;Github Marketplace&lt;/a&gt;&lt;/strong&gt; e assim, qualquer pessoa poderá usar a sua action!&lt;/p&gt;

&lt;p&gt;Achei essa ideia sensacional, principalmente se você quiser criar um código, como no nosso caso, que será para encontrar vulnerabilidade no código. Assim, não precisaremos passar por todos steps como clonar o repositório do projeto, instalar dependências ou Docker para o projeto específico, para depois executá-lo!&lt;/p&gt;

&lt;p&gt;Agora que entendemos para o que serve o Github Actions, precisamos criar a nossa Action. Para isso, termos que ter em mente que precisamos criar um arquivo chamado action.yml e que o mesmo precisa estar no diretório principal (root). Dessa forma, será entendido pelo Github que esse é o arquivo que dará origem a nossa action.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;name: 'SAST validator'
author: 'michelleamesquita'
description: 'Using python to verify vulnerabilities into code'
inputs:
  path:
    required: true
    default: "."
  language:
    required: false
runs:
  using: 'docker'
  image: 'Dockerfile'
  args:
    - -d=${{ inputs.path }}
    - -l=${{ inputs.language }}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Nesse arquivo, é importante entendermos que possuem alguns parâmetros importantes que serão usados para a criação da minha action utilizando container (Docker).&lt;/p&gt;

&lt;p&gt;&lt;code&gt;inputs&lt;/code&gt; : é utilizado para passar os parâmetros que serão passados no argumento argumento (&lt;code&gt;docker run sast -d=. -l=python&lt;/code&gt;) . Então, "path" recebe o valor de "python", no exemplo.&lt;br&gt;
&lt;code&gt;runs&lt;/code&gt; : é a parte principal do actions. Ele serve para definir o tipo de runner, que no nosso caso é 'docker'. Assim precisamos passar parâmetros específicos do Docker. Por exemplo a imagem e os argumentos que serão os inputs setados previamente.&lt;br&gt;
Caso queiram ver os demais exemplos, segue a &lt;strong&gt;&lt;a href="https://docs.github.com/en/actions/creating-actions"&gt;documentação&lt;/a&gt;&lt;/strong&gt; do Github também 😊&lt;/p&gt;

&lt;p&gt;Para utilizarmos essa action em outros projetos, será necessário publicar no Marketplace. Para isso, colocarei os passos abaixo: (só não reparem no número da versão que criei, pois estava apenas testando na época 😅)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Iymy4f3A--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gvza7iq5y9h1l2lht5vs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Iymy4f3A--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gvza7iq5y9h1l2lht5vs.png" alt="Image description" width="880" height="376"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Q583OU6D--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sdg8y2stw25iccmrgakd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Q583OU6D--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sdg8y2stw25iccmrgakd.png" alt="Image description" width="880" height="173"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Y-0Puho6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ny3i2ipr2cy248m68ffc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Y-0Puho6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ny3i2ipr2cy248m68ffc.png" alt="Image description" width="880" height="466"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--XvxE6sX1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/s31g4yrdqwc25by8wne9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--XvxE6sX1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/s31g4yrdqwc25by8wne9.png" alt="Image description" width="880" height="277"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Link para minha Action no Marketplace: &lt;a href="https://github.com/marketplace/actions/sast-validator"&gt;https://github.com/marketplace/actions/sast-validator&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Link para o meu repositório no Github:&lt;br&gt;
&lt;a href="https://github.com/michelleamesquita/sast-validator"&gt;https://github.com/michelleamesquita/sast-validator&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Para criar tags no versionamento, segue as linhas de código:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;➜ git tag -a -m “My first action release” v40&lt;br&gt;
➜ git push - follow-tags&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Para adicionar a action no repositório, será necessário criar esse diretório: &lt;code&gt;.github/workflows/&lt;/code&gt; , onde será necessário passar um arquivo yaml, como no exemplo abaixo:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--qjKbeXp3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ncia5yvb5vdngfok0cb7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qjKbeXp3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ncia5yvb5vdngfok0cb7.png" alt="Image description" width="880" height="78"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;on:
  push:
    branches:
    - main

jobs:
  sast_job:
    runs-on: ubuntu-latest
    name: SAST Validator
    steps:
      - name: Checkout repository content
        uses: actions/checkout@v2 

      - name: SAST validator
        uses: michelleamesquita/sast-validator@v40
        with:
          options: -v $PWD/:/app
          path: .
          language: python
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Nesse código acima, é importante entender que precisamos utilizar a &lt;code&gt;actions/checkout@v2&lt;/code&gt; para poder ler o arquivo do diretório corrente do projeto que usará o &lt;code&gt;sast-validator&lt;/code&gt;.&lt;br&gt;
Utilizamos o parâmetro &lt;code&gt;options&lt;/code&gt; para compartilhar o volume entre o container e a máquina virtual linux (Ubuntu) que está sendo utilizada para rodar esse job.&lt;/p&gt;

&lt;p&gt;Por fim, quando houver um push na branch Main, o código que analisa vulnerabilidades irá avaliar essa branch.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--MHb_ewMe--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9db3aoti8s68p2tn0u1n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--MHb_ewMe--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9db3aoti8s68p2tn0u1n.png" alt="Image description" width="880" height="407"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--FmfiGUOP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kw340x7r3q2lqrrzaorc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--FmfiGUOP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kw340x7r3q2lqrrzaorc.png" alt="Image description" width="880" height="312"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--zBheGwbR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/j1k6ao427nqdomps6l60.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zBheGwbR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/j1k6ao427nqdomps6l60.png" alt="Image description" width="880" height="544"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Assim, o código de validador de vulnerabilidades (SAST Validator), foi utilizado como prova de conceito para encontrar potenciais vulnerabilidades. No entanto, é importante salientar que é necessário o analista de segurança &lt;strong&gt;validar&lt;/strong&gt;. Como também, podemos aumentar a quantidade de regras e também para linguagens específicas, onde utilizei o RegEx para realizar esses testes.&lt;/p&gt;

&lt;p&gt;Espero que tenham gostado 💜👩‍💻&lt;/p&gt;

</description>
      <category>githubactions</category>
      <category>devsecop</category>
      <category>appsec</category>
    </item>
    <item>
      <title>Application Security com OpenSource. É possivel?</title>
      <dc:creator>Johny Ramos</dc:creator>
      <pubDate>Thu, 09 Mar 2023 00:44:57 +0000</pubDate>
      <link>https://dev.to/appsec_brasil/application-security-com-opensource-e-possivel-59ac</link>
      <guid>https://dev.to/appsec_brasil/application-security-com-opensource-e-possivel-59ac</guid>
      <description>&lt;p&gt;Fala Devs!&lt;/p&gt;

&lt;p&gt;Entregar software seguro hoje em dia é uma obrigação de toda empresa. Mas será que sempre temos recurso para analisar o que estamos produzindo? A empresa, está disposta a investir em Segurança? Se não está, qual alternativa temos para contornar esta situação?&lt;/p&gt;

&lt;p&gt;Bom, são com essas perguntas que inicio a minha primeira publicação aqui no DEV.to, com base numa apresentação que  efetuei para a comunidade do Discord &lt;strong&gt;Menina de CyberSec&lt;/strong&gt;, iniciativa da &lt;strong&gt;Sabrina Ramos&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Já trabalhei em empresas que o quesito segurança sempre era visto como um gasto/custo. Já cheguei a observar entregas de software com credenciais chumbadas em código, com intuíto de "facilitar" a conexão com o banco de dados. Sem contar outras inumeras situações de total despreocupação com o tema. Talvez por desconhecimento, talvez por pensar "estamos em um nicho pequeno, quem vai se importar conosco?". &lt;/p&gt;

&lt;p&gt;Se você passa ou passou por isso, seus problemas acabaram! Apresento abaixo algumas ferramentas OpenSource para executar um ciclo de desenvolvimento de software seguro (SSDLC). Assim, sem a necessidade inicial de investir em ferramentas enterprise, você pode analisar todo seu produto e corrigir as vulnerabilidades encontradas em tempo de desenvolvimento.&lt;/p&gt;

&lt;p&gt;Vamos lá:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- OWASP THREAT DRAGON - Threat Model&lt;/strong&gt;&lt;br&gt;
OWASP Threat Dragon é uma ferramenta de modelagem de ameaças que ajuda a identificar e mitigar possíveis ameaças de segurança em seus aplicativos. Ele fornece uma interface gráfica amigável que permite criar e modificar modelos de ameaças usando as metodologias como &lt;strong&gt;STRIDE&lt;/strong&gt; (Spoofing, Tampering, Repudiation, Information Disclosure, Denial of Service, Elevation of Privilege) e &lt;strong&gt;DREAD&lt;/strong&gt; (Damage, Reproducibility, Exploitability, Affected Users, Discoverability).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- OWASP DEPENDENCY CHECK / TRACK - SCA&lt;/strong&gt;&lt;br&gt;
O Dependency Check / Track são ferramenta de Software Composition Analysis (SCA) que ajudam as organizações a identificar e gerenciar vulnerabilidades nas dependências de seu software. Eles permitem que você examine seus projetos para identificar as bibliotecas, estruturas e outros componentes de terceiros dos quais seu código depende. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- SONARQUBE - SAST &amp;amp; QA&lt;/strong&gt;&lt;br&gt;
SonarQube é uma plataforma de inspeção contínua de qualidade de código, análise de código e análise de código estático. Ele fornece um conjunto de ferramentas para analisar a qualidade do código, identificar bugs, vulnerabilidades de segurança e code smells (más práticas de codificação). Atende inúmeras linguagens de mercado, é possivel integração com CI/CD e pode ser personalizada para atender os níveis de qualidade que deseja.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- OWASP ZAP - DAST&lt;/strong&gt;&lt;br&gt;
O ZAP (Zed Attack Proxy) é um scanner de segurança de aplicativos Web/API de código aberto amplamente utilizado e uma ferramenta de teste de penetração. Ele foi projetado para ajudar profissionais de segurança e desenvolvedores a testar a segurança de aplicativos Web e encontrar vulnerabilidades. É possivel automatizar as análises, interceptações, verificar vulnerabildiades como SQLi, XSS, etc.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- JENKINS - Pipeline&lt;/strong&gt;&lt;br&gt;
Jenkins é um servidor de automação usado para automatizar vários aspectos do ciclo de vida de desenvolvimento de software, incluindo criação, teste e implantação de aplicativos de software. Jenkins é altamente personalizável e extensível, pode ser integrado a uma ampla variedade de ferramentas e sistemas de software. Permite aos usuários gerenciar e configurar sua instâncias, incluindo criação e agendamento de compilações, configuração de ambientes de compilação e configuração de plugins. Jenkins também oferece suporte a um rico ecossistema de plug-ins, que permite aos usuários estender e personalizar suas funcionalidades de várias maneiras.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- AQUA TRIVY - Container&lt;/strong&gt;&lt;br&gt;
Trivy é um scanner projetado para detectar vulnerabilidades em imagens de contêiner e outros artefatos, como pacotes de sistema operacional e dependências de aplicativos. É uma ferramenta leve e fácil de usar que pode ser integrada aos pipelines de DevOps para ajudar a automatizar a verificação de vulnerabilidades e melhorar a segurança de aplicativos em contêineres.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- DEFECT DOJO - Vulnerability Management&lt;/strong&gt;&lt;br&gt;
DefectDojo é uma ferramenta de gerenciamento de vulnerabilidade que ajuda as equipes de segurança a gerenciar o processo de teste de segurança para seus aplicativos de software. Ele permite que as equipes de segurança rastreiem e gerenciem vulnerabilidades descobertas durante vários estágios do ciclo de vida de desenvolvimento de software, incluindo teste, implantação e produção. Como um agregador de informações, permite integração com email, pipelines, ferramentas de versionamento, boards de tarefas e ainda gera relatórios e dashboards&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- TRUFFLE HOG - Secret Sniffer&lt;/strong&gt;&lt;br&gt;
Trufflehog é uma ferramenta de segurançabusada para pesquisar informações confidenciais, como chaves de API, chaves criptográficas e outros segredos, que podem ter sido acidentalmente fixados em repositórios de código. Funciona escaneando o conteúdo dos repositórios de código, incluindo histórico de commits e ramificações, procurando padrões que correspondam a Secret Keys conhecidas e outras informações confidenciais. O Trufflehog pode procurar chaves em uma ampla variedade de tipos de arquivo, incluindo arquivos de código, arquivos de configuração e arquivos binários.&lt;/p&gt;

&lt;p&gt;Com toda essa stack de ferramentas, você pode criar um ciclo de desenvolvimento seguro, permitindo que seu produto seja entregue ao seu cliente com o menor risco de ter uma brecha de segurança. Há outras ferramentas e Frameworks que podemos utilizar, mas este artigo já está grande demais... apresento uma outra hora!&lt;/p&gt;

&lt;p&gt;Espero que essas informações possam servir para seu dia-a-dia e para deixar de lado as desculpas da sua empresa de que não tem dinheiro para ferramentas de segurança.&lt;/p&gt;

&lt;p&gt;Até a próxima!&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>appsec</category>
      <category>cybersecurity</category>
      <category>devsecops</category>
    </item>
    <item>
      <title>Automações na área de AppSec 🤖</title>
      <dc:creator>michelleamesquita</dc:creator>
      <pubDate>Tue, 28 Feb 2023 22:50:58 +0000</pubDate>
      <link>https://dev.to/appsec_brasil/automacoes-na-area-de-appsec-2f65</link>
      <guid>https://dev.to/appsec_brasil/automacoes-na-area-de-appsec-2f65</guid>
      <description>&lt;p&gt;Olá, pessoal.&lt;br&gt;
Tudo bem?&lt;/p&gt;

&lt;p&gt;Esse é o meu primeiro post utilizando a plataforma dev.to! Eu possuo um &lt;a href="https://michelleamesquita.medium.com/"&gt;blog&lt;/a&gt; no Medium também, onde falo de AppSec/DevSecOps caso queiram ler, mas dependendo, futuramente, eu possa adicionar alguns artigos que escrevi lá aqui também. 😊&lt;/p&gt;

&lt;p&gt;Sem mais delongas, gostaria de tratar um pouco sobre o assunto automações para a área de AppSec.&lt;/p&gt;

&lt;p&gt;Começo com esse texto pois dentro dessa vasta área de Application Security, existe espaço para todos trabalharem, desde conscientização dos desenvolvedores ou mesmo adição de ferramentas na pipeline!&lt;/p&gt;

&lt;p&gt;No entanto, o foco hoje é na parte de &lt;strong&gt;secure code review&lt;/strong&gt;! Isso é importante de ser falado pois muito se fala de adição de ferramentas de &lt;strong&gt;&lt;a href="https://owasp.org/www-community/Source_Code_Analysis_Tools"&gt;SAST&lt;/a&gt;, &lt;a href="https://owasp.org/www-project-devsecops-guideline/latest/02b-Dynamic-Application-Security-Testing"&gt;DAST&lt;/a&gt; e &lt;a href="https://owasp.org/www-project-dependency-check/"&gt;SCA&lt;/a&gt;&lt;/strong&gt;. No entanto, as ferramentas trazem bastante &lt;em&gt;&lt;strong&gt;falso positivos&lt;/strong&gt;&lt;/em&gt;. Assim, temos que exercitar bem a lógica de programação para validarmos o &lt;em&gt;output&lt;/em&gt; que a ferramenta retorna. Como também, questionar se a ferramenta está validando todos os pontos que ela deveria checar.&lt;/p&gt;

&lt;p&gt;Dessa forma, o secure code review é extremamente necessário para validar e confirmar o que o SAST retorna. Isso porque as ferramentas possuem diversas lógicas internas com expressões regulares, mas que nem sempre identificam que um ponto foi tratado (falso positivo) ou não retornam todos os pontos que estão vulneráveis!&lt;/p&gt;

&lt;p&gt;Além disso, é interessante pensar e entender na lógica que uma ferramenta de SAST funciona. Nesse caso, trouxe como exemplo o &lt;a href="https://checkmarx.com/glossary/static-application-security-testing-sast/"&gt;Checkmarx&lt;/a&gt;, na imagem abaixo, é que ela analisa o input da ferramenta (parâmetros), output (saída para o usuário) e através disso, ele busca se existe um sanitizador (algo que modifique a entrada do usuário) para a vulnerabilidade &lt;strong&gt;&lt;a href="https://owasp.org/www-community/attacks/xss/"&gt;XSS&lt;/a&gt;&lt;/strong&gt;. Caso exista essa regra na ferramenta, ele entende que a vulnerabilidade foi tratada.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--W-zmsmWV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/v868aujwh5p0wgfns2jt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--W-zmsmWV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/v868aujwh5p0wgfns2jt.png" alt="Imagem que exemplifica a lógica do Checkmarx" width="880" height="223"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Como as ferramentas possuem uma lista de regras pré-setadas, é importante que o analista de AppSec também crie suas próprias regras de acordo com as vivências na área, até para confirmar ou analisar se existem pontos também críticos. Embora as ferramentas na pipeline já agilizem muito o processo, precisamos ter esse entendimento que é necessário realizar nossa própria &lt;strong&gt;análise&lt;/strong&gt; também. &lt;/p&gt;

&lt;p&gt;Para isso, eu desenvolvi um script que funciona como um grande &lt;strong&gt;&lt;a href="https://regexr.com/"&gt;RegEx&lt;/a&gt;&lt;/strong&gt;, onde eu crio as minhas regras para validar ainda mais pontos.&lt;/p&gt;

&lt;p&gt;Segue o link no Github para quem quiser contribuir também 😎.&lt;br&gt;
&lt;a href="https://github.com/michelleamesquita/sast-validator"&gt;https://github.com/michelleamesquita/sast-validator&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Eu criei regras para algumas das principais vulnerabilidades que vejo acontecer no dia-a-dia. Como também, separei por algumas funcionalidades como autenticação, upload de arquivos e reset/conexão de bancos com senhas. Quando falamos de code review, esse é um ponto super importante para entender aonde procurar por vulnerabilidades: &lt;strong&gt;funcionalidades da aplicação&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Funcionamento da aplicação:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--h2IYN8fg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/l9re92jwwkhawxmnw55e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--h2IYN8fg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/l9re92jwwkhawxmnw55e.png" alt="Imagem que contém o comando para executar o script" width="880" height="172"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Comando:&lt;br&gt;
&lt;code&gt;python3 sast.py -d PATH -l Language (optional) &lt;br&gt;
&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Output:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--cPKo0j-W--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/87wz1trdc5n1py74smok.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--cPKo0j-W--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/87wz1trdc5n1py74smok.png" alt="Imagem que contém o output do script" width="880" height="310"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Espero que gostem! 💜👩‍💻&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Modelagem de Ameaças -Decompondo o Aplicativo</title>
      <dc:creator>brmartin | Bruno Martins</dc:creator>
      <pubDate>Sun, 26 Feb 2023 21:27:35 +0000</pubDate>
      <link>https://dev.to/appsec_brasil/modelagem-de-ameacas-decompondo-o-aplicativo-cbk</link>
      <guid>https://dev.to/appsec_brasil/modelagem-de-ameacas-decompondo-o-aplicativo-cbk</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;TL:DR&lt;br&gt;
Neste artigo utilizei um aplicativo que estou desenvolvendo academicamente para praticar a modelagem de ameaças e exemplificar a teoria ao longo do texto. Essa primeira etapa da Modelagem corresponde à decomposição do sistema.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Etapa 1: Decompor o aplicativo
&lt;/h2&gt;

&lt;p&gt;Existem muitas vulnerabilidades e ameaças possíveis e é improvável que seu aplicativo encontre todos eles. Também é improvável que sua empresa precise abordar todos eles. A modelagem de ameaças ajuda a identificar onde sua equipe precisa concentrar esforços.&lt;/p&gt;

&lt;p&gt;Todos os desenvolvedores, designers de software e arquitetos devem se esforçar para incluir a modelagem de ameaças em todo ciclo de vida de desenvolvimento de software. &lt;strong&gt;Mas primeiramente concentre-se no que você está trabalhando no momento.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Eu utilizarei para estudo prático um aplicativo Fintech, voltado para usuários que desejam planejar de forma flexível seus orçamentos e gerenciar o dia a dia de suas finanças, que estou desenvolvendo academicamente.&lt;/p&gt;

&lt;p&gt;Dito isso, é importante que se decomponha todo o sistema e faça perguntas para que se encontre onde as vulnerabilidades se encontram. A primeira etapa no processo de modelagem de ameaças se preocupa em entender o aplicativo e como ele interage com as entidades externas.&lt;/p&gt;

&lt;h3&gt;
  
  
  Identifique o design do aplicativo
&lt;/h3&gt;

&lt;p&gt;Entender o design do aplicativo é fundamental para realizar a modelagem de ameaças. Se você estiver muito familiarizado com o design do aplicativo, poderá identificar fluxos de dados adicionais e limites de confiança em todo o processo de modelagem de ameaças.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; Identifique os casos de uso, defina os pontos de entrada do aplicativo e os níveis de confiança, mesmo que permaneçam inalterados como resultado do projeto.&lt;/li&gt;
&lt;li&gt; Identifique atores, ativos, serviços, funções e fontes de dados.&lt;/li&gt;
&lt;li&gt; Documente a movimentação de dados (em movimento e em repouso) via Diagrama de Fluxo de Dados. &lt;/li&gt;
&lt;li&gt; Documente todos os dados trocados e sua classificação.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Uma compreensão completa de como o sistema foi projetado também o ajudará a avaliar a probabilidade e o impacto potencial de qualquer ameaça específica que você identificar.&lt;/p&gt;

&lt;h2&gt;
  
  
  Decomponha e modele o aplicativo
&lt;/h2&gt;

&lt;p&gt;É importante que se tome nota do processo para que em um eventual momento se possa consultar o que foi feito. Baseado no Processo de Modelagem de Ameaças da OWASP, iniciamos a documentação com a etapa 1 - decompondo o aplicativo, conforme segue abaixo:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Informações de identificação
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Nome do Sistema&lt;/strong&gt; : O nome do aplicativo examinado.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Versão do aplicativo&lt;/strong&gt; : A versão do aplicativo examinado.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Descrição&lt;/strong&gt; : Uma descrição de alto nível do aplicativo.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Proprietário do documento&lt;/strong&gt; : o proprietário do documento de modelagem de ameaças.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Participantes&lt;/strong&gt; : os participantes envolvidos no processo de modelagem de ameaças para este aplicativo.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Revisor&lt;/strong&gt; : O(s) revisor(es) do modelo de ameaça.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Exemplo prático:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Nome: ContabiLivre&lt;/li&gt;
&lt;li&gt;Versão: v0.1&lt;/li&gt;
&lt;li&gt;Descrição: Aplicativo web de planejamento financeiro pessoal, capacitado com sincronização de saldo bancário e despesas de cartão de crédito.&lt;/li&gt;
&lt;li&gt;Proprietário do documento: Bruno Martins&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Os ítens 4 e 5 não foram preenchidos pois pratiquei sozinho e não tive a oportunidade de ter um revisor. Porém são dois ítens de extrema importância para uma boa elaboração do modelo de ameaças.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Dependências externas
&lt;/h3&gt;

&lt;p&gt;Dependências externas são itens externos ao código do aplicativo que podem representar uma ameaça ao aplicativo.&lt;/p&gt;

&lt;p&gt;As dependências externas devem ser documentadas da seguinte forma:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;ID&lt;/strong&gt; : um ID exclusivo atribuído à dependência externa.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Descrição&lt;/strong&gt; : uma descrição textual da dependência externa.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Exemplo prático:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;ID&lt;/th&gt;
&lt;th&gt;Descrição&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Tela de login do usuário através de um browser onde autenticará seus dados para acesso&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Acesso ao banco de dados com informações do perfil&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;API de conexão com saldo bancário&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;API de conexão com cartão de crédito&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  3. Pontos de entrada
&lt;/h3&gt;

&lt;p&gt;Os pontos de entrada definem as interfaces por meio das quais invasores em potencial podem interagir com o aplicativo ou fornecer dados a ele.&lt;/p&gt;

&lt;p&gt;Os pontos de entrada devem ser documentados da seguinte forma:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;ID&lt;/strong&gt; : Um ID exclusivo atribuído ao ponto de entrada. Isso será usado para fazer referência cruzada do ponto de entrada com quaisquer ameaças ou vulnerabilidades identificadas. &lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Nome&lt;/strong&gt; : um nome descritivo que identifica o ponto de entrada e sua finalidade.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Descrição&lt;/strong&gt; : Uma descrição textual detalhando a interação ou processamento que ocorre no ponto de entrada.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Níveis de confiança&lt;/strong&gt; : o nível de acesso necessário no ponto de entrada. Eles serão cruzados com os níveis de confiança definidos posteriormente no documento.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Exemplo prático:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;ID&lt;/th&gt;
&lt;th&gt;Nome&lt;/th&gt;
&lt;th&gt;Descrição&lt;/th&gt;
&lt;th&gt;Nivel de Confiança&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Login&lt;/td&gt;
&lt;td&gt;Tela de acesso ao perfil do usuário.&lt;/td&gt;
&lt;td&gt;Request HTTP&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Acesso ao Banco de Dados&lt;/td&gt;
&lt;td&gt;Armazenamento de dados dos usuários&lt;/td&gt;
&lt;td&gt;O time de desenvolvimento tem credenciais de acesso&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Utilização do App&lt;/td&gt;
&lt;td&gt;Manuseio e utilização das informações contidas no aplicativo&lt;/td&gt;
&lt;td&gt;Qualquer pessoa que tiver acesso ao telefone da pessoa pode mexer no app.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  4. Pontos de saída
&lt;/h3&gt;

&lt;p&gt;Em muitos casos, as ameaças habilitadas pelos pontos de saída estão relacionadas às ameaças do ponto de entrada correspondente. Muitas vezes poderá, inclusive, ter múltiplas saídas, uma vez que a interação com o ponto de entrada pode mudar.&lt;/p&gt;

&lt;p&gt;Exemplo prático:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;ID Entrada&lt;/th&gt;
&lt;th&gt;Ponto de Saída&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Response HTTP&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;O acesso é somente leitura, a única pessoa que faz alterações no banco é quem cuida dos bancos de dados.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Caso faça login, o app receberá o token de sessão e armazenará ele.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Se você já tiver o código do aplicativo e tiver conhecimento técnico total sobre o funcionamento do mesmo, também poderá indicar os pontos de entrada e sáida conforme abaixo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ID Entrada: 1
Descrição Entrada:
GET /usuario/$ID_USUARIO/perfil-usuário HTTP/1.1
Host: contabilivre.com.br

Authorization: $TOKEN_DE_SESSAO

Descrição Saída:
    HTTP/1.1 200 OK
    Content-Type: text/html

    $HTML_PERFIL_USUARIO
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  5. Ativos
&lt;/h3&gt;

&lt;p&gt;O sistema deve ter algo que interesse ao invasor e esses itens ou áreas de interesse são definidos como ativos. Os ativos são essencialmente os alvos dos invasores, ou seja, são a razão pela qual as ameaças existirão.&lt;/p&gt;

&lt;p&gt;Os ativos envolvidos no fluxo de informações devem ser definidos e avaliados quanto ao seu valor de confidencialidade, integridade e disponibilidade.&lt;/p&gt;

&lt;p&gt;Os ativos são documentados no modelo de ameaça da seguinte forma:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;ID&lt;/strong&gt; : Um ID exclusivo é atribuído para identificar cada ativo. Isso será usado para fazer referência cruzada do ativo com quaisquer ameaças ou vulnerabilidades identificadas.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Nome&lt;/strong&gt; : um nome descritivo que identifica claramente o ativo.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Descrição&lt;/strong&gt; : uma descrição textual do que é o recurso e por que ele precisa ser protegido.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Níveis de confiança&lt;/strong&gt; : o nível de acesso necessário para acessar o ponto de entrada é documentado aqui. Eles serão cruzados com os níveis de confiança definidos na próxima etapa.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Considere dados em trânsito e dados em repouso
&lt;/h3&gt;

&lt;p&gt;Embora os dados em repouso às vezes sejam considerados menos vulneráveis ​​do que os dados em trânsito, os invasores geralmente consideram os dados em repouso um alvo mais valioso do que os dados em movimento. &lt;/p&gt;

&lt;p&gt;Proteger dados confidenciais em trânsito e em repouso é fundamental para as empresas modernas, pois os invasores encontram maneiras cada vez mais inovadoras de comprometer os sistemas e roubar dados.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Níveis de confiança
&lt;/h3&gt;

&lt;p&gt;Os níveis de confiança representam os direitos de acesso que o aplicativo concederá a entidades externas.&lt;/p&gt;

&lt;p&gt;Os níveis de confiança são documentados no modelo de ameaça da seguinte forma:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;ID&lt;/strong&gt; : Um número exclusivo é atribuído a cada nível de confiança. Isso é usado para fazer referência cruzada do nível de confiança com os pontos de entrada e ativos.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Nome&lt;/strong&gt; : um nome descritivo que permite identificar as entidades externas que receberam esse nível de confiança.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Descrição&lt;/strong&gt; : Uma descrição textual do nível de confiança detalhando a entidade externa que recebeu o nível de confiança.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Exemplo prático:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;ID&lt;/th&gt;
&lt;th&gt;Nome&lt;/th&gt;
&lt;th&gt;Descrição&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Usuário&lt;/td&gt;
&lt;td&gt;Proprietário do perfil logado&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Credenciais de Acesso ao Banco de Dados&lt;/td&gt;
&lt;td&gt;Usuário e senha compartilhado com o time de desenvolvimento para acesso ao banco, possui permissão de leitura e escrita.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Desenvolvedores(as)&lt;/td&gt;
&lt;td&gt;Equipe técnica com acesso ao ambiente para modificar ou corrigir o sistema.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Acesso SSH ao servidor&lt;/td&gt;
&lt;td&gt;Precisamos rever como é esse acesso. Mas sabemos que o sistema de versionamento o usa para publicar o sistema.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  7. Diagramas de fluxo de dados
&lt;/h3&gt;

&lt;p&gt;Todas as informações coletadas nos permitem modelar com precisão o aplicativo por meio do uso de Diagramas de Fluxo de Dados ( DFDs ). Os DFDs nos permitirão entender melhor o aplicativo, fornecendo uma representação visual de como o aplicativo processa os dados.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Ai4k5tjS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2n0bvphnugylswf1pwx7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Ai4k5tjS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2n0bvphnugylswf1pwx7.png" alt="Diagrama de fluxo de dados" width="880" height="463"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A quantidade de informações a serem incluídas no diagrama de fluxo de dados depende de alguns fatores-chave:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Tipo de sistema que você está construindo - Os sistemas que não lidam com dados confidenciais ou são usados apenas internamente podem não precisar de tanto contexto quanto um sistema externo.&lt;/li&gt;
&lt;li&gt;Contexto necessário de sua equipe de segurança - As equipes de segurança são precisas com o que procuram nos modelos de ameaças. Fale com sua equipe de segurança para confirmar a camada de profundidade necessária.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Considerações Finais
&lt;/h3&gt;

&lt;p&gt;Existem algumas metodologias para modelar as ameaças a um sistema e cabe a cada equipe definir qual a mais apropriada para o caso.&lt;/p&gt;

&lt;p&gt;No próximo artigo seguirei no Threat Modeling Process da OWASP com a etapa 2: determinar e classificar as ameaças.&lt;/p&gt;

&lt;p&gt;Até lá.&lt;/p&gt;




&lt;h4&gt;
  
  
  Referências:
&lt;/h4&gt;

&lt;p&gt;Threat Modeling Process OWASP&lt;br&gt;
Curso de Modelagem de ameaças: identifique riscos na concepção do software - Alura&lt;br&gt;
O papel do dev no processo de modelagem de ameaças | Izabela Matos - AppSec to Go&lt;br&gt;
Curso Learning Threat Modeling for Security Professionals - LinkedIn Learning&lt;br&gt;
Threat Modeling in 2021 with Adam Shostack - DevSecCon (Youtube)&lt;/p&gt;

</description>
      <category>braziliandevs</category>
      <category>threatmodeling</category>
      <category>security</category>
      <category>appsec</category>
    </item>
    <item>
      <title>Terminologias Utilizadas em Modelagem de Ameaças</title>
      <dc:creator>brmartin | Bruno Martins</dc:creator>
      <pubDate>Sat, 25 Feb 2023 15:11:37 +0000</pubDate>
      <link>https://dev.to/appsec_brasil/terminologias-utilizadas-em-modelagem-de-ameacas-19dm</link>
      <guid>https://dev.to/appsec_brasil/terminologias-utilizadas-em-modelagem-de-ameacas-19dm</guid>
      <description>&lt;p&gt;Em modelagem de ameaças utilizam-se algumas terminologias que podem não ser familiares para alguns profissionais, principalmente em início de carreira. Por isso achei útil compartilhar o guia abaixo:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Ameaça&lt;/strong&gt; - Uma pessoa ou coisa que toma medidas para explorar (ou fazer uso de) as vulnerabilidades do sistema de uma organização-alvo, como parte de atingir ou promover sua meta ou objetivos.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Atacante&lt;/strong&gt;: Quem realizou o ataque. Neste caso, o criminoso que invadiu o sistema e roubou os dados.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ataque&lt;/strong&gt; - Pode ser real ou hipotético, com base em possíveis ações ou ataques tentados por um cibercriminoso, como um ataque à rede da sua empresa. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ativo&lt;/strong&gt; - Coisas importantes para você, informações confidenciais. Por exemplo, dados PCI ou PII. Um ativo é algo que precisa de proteção.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Biblioteca de conteúdo&lt;/strong&gt; - Uma base de conhecimento de padrões de risco, onde cada padrão consiste em um grupo lógico de ameaças de segurança, pontos fracos e contramedidas.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Contramedidas&lt;/strong&gt; - Ações que podem ser implementadas para mitigar o impacto ou a probabilidade de uma ameaça.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Controles&lt;/strong&gt; - São salvaguardas ou contramedidas que você implementa para evitar, detectar, neutralizar ou minimizar possíveis ameaças contra suas informações, sistemas ou outros ativos.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Componentes&lt;/strong&gt; - Partes que compõem a representação como uma instância do EC2 ou uma API ou ainda uma função dentro de uma aplicação web. Os componentes podem ser aninhados uns nos outros.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Exploit&lt;/strong&gt;: Conjunto de técnicas e tecnologia que explora uma vulnerabilidade.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fluxos de dados&lt;/strong&gt; - Como as informações e os ativos se movem entre os componentes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Insider:&lt;/strong&gt; Alguém interno que pode colaborar com o atacante para vazar informações ou comprometer a empresa.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Impacto&lt;/strong&gt; - É uma medida do dano potencial causado por uma ameaça específica. Dependendo do negócio em que você atua, os ataques que expõem as informações do usuário podem resultar em uma ameaça física de dano ou perda de vida para seus usuários, aumentando consideravelmente o impacto das ameaças que permitiriam tal exposição.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Metadados do projeto&lt;/strong&gt; - Nome, identificador, descrição, proprietário da coisa que você está modelando como ameaça.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mitigações&lt;/strong&gt; - São controles implementados para reduzir a probabilidade ou o impacto de uma ameaça, embora não necessariamente a impeçam completamente.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Modelo -&lt;/strong&gt; Os modelos podem ser criados do zero ou gerados a partir de projetos pré-existentes para agilizar a criação de futuros modelos de ameaças. Os modelos costumam ser usados ​​para fornecer o esqueleto de um modelo de ameaça para dar aos colegas uma vantagem inicial na análise do diagrama.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Padrões&lt;/strong&gt; - Cada setor e país tem seus próprios padrões a serem seguidos ou considerados, desde saúde e finanças até organizações governamentais, como por exemplo o RGPD. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pontuação de risco&lt;/strong&gt; - Uma métrica para avaliar o nível de risco do seu negócio.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Probabilidade&lt;/strong&gt; - É uma medida da possibilidade de uma ameaça ser realizada. Uma variedade de fatores pode impactar a probabilidade de uma ameaça ser executada, incluindo quão difícil é a implementação da ameaça e quão gratificante seria para o invasor.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;RBAC/Role Based Access Controls&lt;/strong&gt; - Um meio de restringir o acesso a usuários com base em suas funções, como Admin.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Representações&lt;/strong&gt; - Uma perspectiva sobre o que está sendo modelado como ameaça, por exemplo, diagrama de arquitetura, diagrama de fluxo de dados, código-fonte, JIRA, interface do usuário.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Relatórios&lt;/strong&gt; - Periodicamente, ao longo do ciclo de vida de um projeto, as equipes podem querer gerar relatórios executivos para capacitar internamente e fornecer às partes interessadas as informações de que precisam. Eles podem ser gerados para vários casos de uso, como um resumo de conformidade ou um relatório detalhado de todas as contramedidas identificadas&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Risco&lt;/strong&gt; - Riscos são a combinação de uma ameaça e uma vulnerabilidade. Da-se o nome de risco a potencial perda, dano ou destruição de qualquer coisa que seja valiosa para a empresa, como um sistema, reputação, etc.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Trust Zone&lt;/strong&gt; - Os diferentes níveis de segurança e confiança. Internet x Web x App x Camada de dados.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Unidade de negócios&lt;/strong&gt; - Um grupo de usuários e produtos dentro do sistema. Com permissões básicas, os usuários têm acesso apenas aos Produtos que estão em sua Unidade de Negócios e limitados à função que lhes foi atribuída.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Versionamento&lt;/strong&gt; - O versionamento consiste em estratégias para gerenciar as diferentes versões de um código, de um sistema ou de um modelo. É uma forma de administrar as mudanças que são feitas e de garantir mais segurança na transição de uma versão para outra.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Vulnerabilidade&lt;/strong&gt; - uma fraqueza ou brecha em um de nossos sistemas que pode ser explorado por um atacante e causar danos.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Caso você tenha alguma sugestão de terminologia que não encontrou na lista acima, por favor, deixe nos comentários.&lt;/p&gt;

&lt;p&gt;Você também pode ler mais sobre &lt;a href="https://dev.to/brmartin/principios-de-seguranca-cibernetica-3p4d"&gt;fundamentos de segurança cibernética&lt;/a&gt; em outro post que publiquei por aqui. &lt;/p&gt;

</description>
      <category>threatmodeling</category>
      <category>security</category>
      <category>braziliandevs</category>
      <category>appsec</category>
    </item>
    <item>
      <title>Modelagem de Ameaças - Introdução</title>
      <dc:creator>brmartin | Bruno Martins</dc:creator>
      <pubDate>Wed, 22 Feb 2023 21:43:09 +0000</pubDate>
      <link>https://dev.to/appsec_brasil/modelagem-de-ameacas-parte-1-43k6</link>
      <guid>https://dev.to/appsec_brasil/modelagem-de-ameacas-parte-1-43k6</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;TL:DR&lt;br&gt;
Neste artigo compartilho uma introdução à Modelagem de Ameaças, a partir dos meus estudos sobre o tema.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Objetivos da Modelagem de Ameaças
&lt;/h2&gt;

&lt;p&gt;Entender quem são seus "inimigos". O que os motiva e quais são seus objetivos.&lt;br&gt;
Conhecer bem o seu próprio sistema.&lt;br&gt;
Criar camadas de proteção.&lt;br&gt;
Mitigar os riscos.&lt;/p&gt;

&lt;p&gt;Corrigir um problema de segurança &lt;strong&gt;depois&lt;/strong&gt; que o produto está desenvolvido e em produção pode &lt;strong&gt;custar centenas de vezes mais&lt;/strong&gt; que prevenir ele em sua construção.&lt;/p&gt;

&lt;h2&gt;
  
  
  Visão Geral
&lt;/h2&gt;

&lt;p&gt;A modelagem de ameaças é uma representação estruturada de todas as informações que afetam a segurança de um aplicativo, analisando através da perspectiva de um invasor em potencial, em oposição ao ponto de vista de um defensor. Em essência, é uma visão do aplicativo e seu ambiente pelas lentes da segurança.&lt;/p&gt;

&lt;p&gt;Um modelo de ameaça geralmente inclui:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Descrição do assunto a ser modelado&lt;/li&gt;
&lt;li&gt;  Suposições que podem ser verificadas ou contestadas no futuro conforme mudanças no cenário de ameaças&lt;/li&gt;
&lt;li&gt;  Ameaças potenciais ao sistema&lt;/li&gt;
&lt;li&gt;  Ações que podem ser tomadas para mitigar cada ameaça&lt;/li&gt;
&lt;li&gt;  Uma forma de validação do modelo e ameaças, e verificação do sucesso das ações tomadas&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;O processo de modelagem de ameaças pode ser decomposto em três etapas:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Decompor o aplicativo&lt;/li&gt;
&lt;li&gt;Determinar e Classificar as Ameaças&lt;/li&gt;
&lt;li&gt;Determinar contramedidas e mitigação&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Modelagem de ameaças em todo o ciclo de vida
&lt;/h2&gt;

&lt;p&gt;A modelagem de ameaças é melhor &lt;strong&gt;aplicada continuamente&lt;/strong&gt; ao longo de um projeto de desenvolvimento de software. O processo é essencialmente o mesmo em diferentes níveis de abstração, embora as informações fiquem cada vez mais granulares ao longo do ciclo de vida. &lt;/p&gt;

&lt;p&gt;Idealmente, um modelo de ameaça de alto nível deve ser definido no início do conceito ou fase de planejamento e, em seguida, refinado ao longo do ciclo de vida. À medida que mais detalhes são adicionados ao sistema, novos vetores de ataque são criados e expostos. O processo contínuo de modelagem de ameaças deve examinar, diagnosticar e abordar essas ameaças.&lt;/p&gt;

&lt;p&gt;A atualização dos modelos de ameaças é aconselhável após eventos como:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Um novo recurso é lançado&lt;/li&gt;
&lt;li&gt;  Ocorre um incidente de segurança&lt;/li&gt;
&lt;li&gt;  Mudanças arquitetônicas ou de infraestrutura&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A estrutura de quatro perguntas a seguir pode ajudar a organizar a modelagem de ameaças:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Em que estamos trabalhando? =&amp;gt; &lt;strong&gt;Avalie o escopo&lt;/strong&gt; - Isso pode ser tão pequeno quanto um sprint ou tão grande quanto um sistema inteiro.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;O que pode dar errado? =&amp;gt; &lt;strong&gt;Identifique o que pode dar errado&lt;/strong&gt; - Isso pode ser tão simples quanto um brainstorm ou tão estruturado quanto usar STRIDE, Kill Chains ou Attack Trees.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;O que você irá fazer sobre isso? =&amp;gt; &lt;strong&gt;Identifique contramedidas ou gerencie riscos&lt;/strong&gt; - Decida o que você fará com cada ameaça. Isso pode ser para implementar uma mitigação ou aplicar as abordagens aceitar/transferir/eliminar do gerenciamento de riscos.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fizemos um bom trabalho? =&amp;gt; &lt;strong&gt;Avalie seu trabalho&lt;/strong&gt; - Você fez um trabalho bom o suficiente para o sistema em questão?&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Considerações Finais
&lt;/h2&gt;

&lt;p&gt;Esse artigo foi uma introdução sobre Modelagem de Ameaças, que terá continuidade nas próximas publicações com os temas Decompondo a Aplicação, Determinando e Classificando Ameaças, e Contramedidas e Mitigação.&lt;/p&gt;

&lt;p&gt;Até lá!&lt;/p&gt;

</description>
      <category>posts</category>
    </item>
  </channel>
</rss>
