AddressForAll / site-v2

New AddressForAll website, version 3 of attempts to make it better
Apache License 2.0
1 stars 0 forks source link

auditoria de segurança #10

Closed crebollobr closed 2 years ago

crebollobr commented 2 years ago

pm2@addressforall:/opt/teste2.addressforall.org/site-v2$ npm audit
# npm audit report

nth-check  <2.0.1
Severity: moderate
Inefficient Regular Expression Complexity in nth-check - https://github.com/advisories/GHSA-rp65-9cf3-cjxr
fix available via `npm audit fix --force`
Will install react-scripts@2.1.3, which is a breaking change
node_modules/svgo/node_modules/nth-check
  css-select  <=3.1.0
  Depends on vulnerable versions of nth-check
  node_modules/svgo/node_modules/css-select
    svgo  1.0.0 - 1.3.2
    Depends on vulnerable versions of css-select
    node_modules/svgo
      @svgr/plugin-svgo  <=5.5.0
      Depends on vulnerable versions of svgo
      node_modules/@svgr/plugin-svgo
        @svgr/webpack  4.0.0 - 5.5.0
        Depends on vulnerable versions of @svgr/plugin-svgo
        node_modules/@svgr/webpack
          react-scripts  >=2.1.4
          Depends on vulnerable versions of @svgr/webpack
          node_modules/react-scripts

6 moderate severity vulnerabilities

To address all issues (including breaking changes), run:
  npm audit fix --force
crebollobr commented 2 years ago

O build acima foi feito com:

git clone https://github.com/AddressForAll/site-v2.git

npm install (problema ) npm audit Mensagem acima

npm run build

Precisamos fazer algum procedimento em relação a essas mensagens de segurança?

danilohbp commented 2 years ago

Os 6 warnings são referentes a versão das dependências utilizadas pelo Create-React-App, estamos usando a versão mais atual => 5.0.0, então, num primeiro momento, mesmo que essas dependências estejam depreciadas não necessariamente os warnings são de fato uma vulnerabilidade.

Dependências com Warnings

npm WARN deprecated source-map-resolve@0.6.0: See https://github.com/lydell/source-map-resolve#deprecated
npm WARN deprecated svgo@1.3.2: This SVGO version is no longer supported. Upgrade to v2.x.x.

added 1426 packages, and audited 1427 packages in 29s

169 packages are looking for funding
  run `npm fund` for details

6 moderate severity vulnerabilities

To address all issues (including breaking changes), run:
  npm audit fix --force

Run `npm audit` for details.

Um desenvolvedor do projeto Create-React-App do Facebook detalha o porque dos warnings da versão atual do CRA (Create React App) não são uma vulnerabilidade:

https://github.com/facebook/create-react-app/issues/11174

Mas e essa vulnerabilidade? Embora alguns warnings não sejam de fato vulnerabilidades, é importante analisar se a seguinte dependência nth-check impacta no projeto.

# npm audit report

nth-check  <2.0.1
Severity: moderate
Inefficient Regular Expression Complexity in nth-check - https://github.com/advisories/GHSA-rp65-9cf3-cjxr
fix available via `npm audit fix --force`
Will install react-scripts@2.1.3, which is a breaking change
node_modules/svgo/node_modules/nth-check
  css-select  <=3.1.0
  Depends on vulnerable versions of nth-check
  node_modules/svgo/node_modules/css-select
    svgo  1.0.0 - 1.3.2
    Depends on vulnerable versions of css-select
    node_modules/svgo
      @svgr/plugin-svgo  <=5.5.0
      Depends on vulnerable versions of svgo
      node_modules/@svgr/plugin-svgo
        @svgr/webpack  4.0.0 - 5.5.0
        Depends on vulnerable versions of @svgr/plugin-svgo
        node_modules/@svgr/webpack
          react-scripts  >=2.1.4
          Depends on vulnerable versions of @svgr/webpack
          node_modules/react-scripts

6 moderate severity vulnerabilities

To address all issues (including breaking changes), run:
  npm audit fix --force

O nth-check (https://www.npmjs.com/package/nth-check/v/1.0.2#about) é uma dependência que torna eficiente a leitura de expressões regulares para pseudo-classes nth-child() do CSS, neste npm audit mostra que nth-check é uma dependência com Complexidade Ineficiente para se fazer o parser de um ReGex (Expressão Regular, vide: https://pt.wikipedia.org/wiki/Express%C3%A3o_regular) de fato existe um tipo de ataque DoS (Denial of Service -> https://pt.wikipedia.org/wiki/Ataque_de_nega%C3%A7%C3%A3o_de_servi%C3%A7o) que usa ReGex para explorar um custo de tempo exponencial que um sistema analisador de regex pode levar para ler a expressão fornecida pelo usuário, chama-se: ReDoS (Regex Denial of Service) -> https://pt.wikipedia.org/wiki/ReDoS. Porém, na aplicação atual, não há um analisador de regex do lado do usuário, e não há entrada para esse tipo de ataque, tal dependência é, na verdade, utilizada pelo CSS-Select e este por sua vez é utilizado pela dependência SVGO que no final é usado por um carregador de svg que usa o Webpack -> https://en.wikipedia.org/wiki/Webpack, ou seja, só é utilizado no lado do servidor para carregar os recursos svg para os componentes que irão compor o site.

Minha conclusão quanto a essa suposta "vulnerabilidade" na aplicação é que para uma aplicação estática e sem analisadores de regex do lado do cliente esse Warning não deve ser um problema para o projeto, além de que essa dependência é usada do lado do servidor como parte dos processos do @svgr/webpack -> https://www.npmjs.com/package/@svgr/webpack que é um svg-loader-webpack (carregador de svgs que serão empacotados pelo webpack).