Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
NodeSecurityShield — Um pacote amigável para Desenvolvedores e Engenheiros de Segurança para proteger Aplicações NodeJS. | Kitploit
Ferramentas/GitHubGitHub/domdogsec/nodesecurityshield
Ferramentas DefensivasAnálise de Vulnerabilidades
GitHubdomdogsec/nodesecurityshield

NodeSecurityShield

Um pacote amigável para Desenvolvedores e Engenheiros de Segurança para proteger Aplicações NodeJS.

Ver Repositório
297há 3 anosRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

Node Security Shield

Node Security Shield (NSS) é uma ferramenta de código aberto de Autoproteção de Aplicação em Tempo de Execução (RASP) que visa preencher a lacuna para uma segurança abrangente do NodeJS, permitindo que Desenvolvedores e Engenheiros de Segurança declarem quais recursos uma aplicação pode acessar.

Inspirados pela vulnerabilidade Log4Shell (CVE-2021-44228), que pode ser explorada porque uma aplicação pode fazer chamadas de rede arbitrárias, sentimos a necessidade de que uma aplicação tenha um mecanismo para declarar quais privilégios ela permite, a fim de dificultar a exploração de tais vulnerabilidades através da implementação de controles adicionais.

Para isso, o NSS (Node Security Shield) possui a Política de Acesso a Recursos (RAP)

Política de Acesso a Recursos (RAP)

A Política de Acesso a Recursos é semelhante à CSP (Content Security Policy).

Ela permite que o desenvolvedor/engenheiro de segurança declare quais recursos uma aplicação deve acessar. E o Node Security Shield a aplicará.

Instalação

Instale o NodeSecurityShield usando npm

root@kitploit:~
npm install nodesecurityshield

Uso

root@kitploit:~
// Requer o Node Security Shield
let nodeSecurityShield = require('nodesecurityshield');

// Habilita o Monitoramento e/ou Bloqueio de Ataques
nodeSecurityShield.enableAttackMonitoring("Unique-App-Id", resourceAccessPolicy, callbackFunction);

Exemplo de resourceAccessPolicy [BÁSICO]

root@kitploit:~
const resourceAccessPolicy = {
  "outBoundRequest": {

      "blockedDomains": ["compromised.domdog.io"],

      "allowedDomains": []
   },
   "executedCommand": {

        "allowedCommands": ["pwd", "(node)[](https://github.com/domdogsec/nodesecurityshield/blob/HEAD/helper%5C/)[a-z|0-9]*(.js)"]
   }
};
  • outBoundRequest: define o comportamento aceito para Requisições de Saída
    • Nota: blockedDomains tem precedência sobre allowedDomains.
    • Ou seja, as requisições são verificadas primeiro contra blockedDomains e depois contra allowedDomains.
  • executedCommand: define o comportamento aceito para Execução de Comandos
    • O array allowedCommands aceita String. Você pode passar uma RegEx para permitir um padrão de comandos.
    • O comportamento padrão é bloquear todas as execuções de comandos, desde que a RAP tenha a propriedade executedCommand definida.
    • Quando a RAP acima é usada,
      • o comando pwd é permitido para execução e
      • arquivos .js dentro de helper são permitidos para serem gerados como processos node.
    • Nota: Evite o uso de .* na regex, pois isso permitirá a execução de qualquer comando após um pipe .

Exemplo de callbackFunction para registrar violações da RAP no console.

root@kitploit:~
var callbackFunction = function (violationEvent, violations, violationLimitPerMinReached) {
  console.log(JSON.stringify(violationEvent, null, 4));
}
  • violationEvent - Violação da RAP que ocorreu. É apresentada como uma violação de CSP.

  • violations - Contagem de violações da RAP. Reinicia para ZERO a cada minuto.

  • violationLimitPerMinReached - verdadeiro se a contagem de violações da RAP exceder 'maxViolationsPerMinute' [uma opção na RAP]

  • Para Bloquear um Ataque - lance um erro

    root@kitploit:~
    throw new Error("Requisição Bloqueada. Viola a Política de Acesso a Recursos declarada.")
    

Exemplo de violationEvent

root@kitploit:~
{
    "csp-report": {
        "document-uri": "https://Unique-App-Id",
        "blocked-uri": "https://compromised.domdog.io:443",
        "violated-directive": "connect-src",
        "effective-directive": "connect-src",
        "original-policy": "{\"outBoundRequest\":{\"blockedDomains\":[\"compromised.domdog.io\"],\"allowedDomains\":[]}}",
        "disposition": "report",
        "status-code": 200,
        "script-sample": "",
        "source-file": "Error\n    at TLSSocket.obj.<computed> [as connect] (/mnt/c/Ironwasp/Product/NodeSecurityShield/lib/hook.js:20:25)\n    at Object.connect (_tls_wrap.js:1606:13)\n    at Agent.createConnection (https.js:126:22)\n    at Agent.createSocket (_http_agent.js:273:26)\n    at Agent.addRequest (_http_agent.js:232:10)\n    at new ClientRequest (_http_client.js:302:16)\n    at request (https.js:310:10)\n    at Object.get (https.js:314:15)\n    at /mnt/c/Ironwasp/RD/Node/SimpleVulnerableNode/routes/ssrf.js:19:19\n    at Layer.handle [as handle_request] (/mnt/c/Ironwasp/RD/Node/SimpleVulnerableNode/node_modules/express/lib/router/layer.js:95:5)"
    }
}
  • document-uri: contém o Unique-App-Id, passado durante a inicialização do NSS
  • blocked-uri: domínio da requisição de saída que violou a RAP
  • violated-directive: connect-src é um sinônimo para Requisição de Saída, assim como script-src é um sinônimo para Execução de Comandos
  • original-policy: a Política de Acesso a Recursos (RAP) violada
  • source-file: Stack Trace de onde ocorreu essa violação.

Integração com Sentry

Exemplo de resourceAccessPolicy para integração com Sentry

root@kitploit:~
const resourceAccessPolicy = {
  "outBoundRequest": {

      "blockedDomains": ["compromised.domdog.io"],

      "allowedDomains": []
    },
   "executedCommand": {

        "allowedCommands": ["pwd", "(node)[](https://github.com/domdogsec/nodesecurityshield/blob/HEAD/helper%5C/)[a-z|0-9]*(.js)"]
   },
   "reportUri": "https://ingest.sentry.io/api/6011856/security/?sentry_key=",

};
  • outBoundRequest: define o comportamento aceito para Requisições de Saída
    • Nota: blockedDomains tem precedência sobre allowedDomains.
    • Ou seja, as requisições são verificadas primeiro contra blockedDomains e depois contra allowedDomains.
  • executedCommand: define o comportamento aceito para Execução de Comandos
    • O array allowedCommands aceita String. Você pode passar uma RegEx para permitir um padrão de comandos.
    • O comportamento padrão é bloquear todas as execuções de comandos, desde que a RAP tenha a propriedade executedCommand definida.
    • Quando a RAP acima é usada,
      • o comando pwd é permitido para execução e
      • arquivos .js dentro de helper são permitidos para serem gerados como processos node.
    • Nota: Evite o uso de .* na regex, pois isso permitirá a execução de qualquer comando após um pipe .

Captura de tela do painel do Sentry sentry issues sentry issues

Exemplo de resourceAccessPolicy [AVANÇADO]

root@kitploit:~
const resourceAccessPolicy = {
    "outBoundRequest": {
    
        "blockedDomains": ["compromised.domdog.io"],
        
        "allowedDomains": ["domdog.io", "*.domdog.io",
           
            {
                "domains": [
                    "domgo.at",
                ],
                "modules": [
                    {
                        "file": "\/routes\/ssrf.js",
                    },
                    {
                        "file": "\/node_modules\/axios\/",
                    }
                ]
            },
            {
                "domains": [
                    "cluster0-shard-00-00.lb9jm.mongodb.net",
                    "cluster0-shard-00-01.lb9jm.mongodb.net",
                    "cluster0-shard-00-02.lb9jm.mongodb.net"
                ],
                "modules": [
                    {
                        "file": "\/node_modules\/mongodb\/"
                    }
                ]
            }
          
        ]
    },
    "executedCommand": {

            "allowedCommands": ["pwd", "(node)[](https://github.com/domdogsec/nodesecurityshield/blob/HEAD/helper%5C/)[a-z|0-9]*(.js)"]
    },
    
    "reportUri": "https://endpoint-to-send-violations",
    
    "maxViolationsPerMinute": 50
  }
  • outBoundRequest: define o comportamento aceito para Requisições de Saída
    • Nota: blockedDomains tem precedência sobre allowedDomains.
    • Ou seja, as requisições são verificadas primeiro contra blockedDomains e depois contra allowedDomains.
  • executedCommand: define o comportamento aceito para Execução de Comandos
    • O array allowedCommands aceita String. Você pode passar uma RegEx para permitir um padrão de comandos.
    • O comportamento padrão é bloquear todas as execuções de comandos, desde que a RAP tenha a propriedade executedCommand definida.
    • Quando a RAP acima é usada,
      • o comando pwd é permitido para execução e
      • arquivos .js dentro de helper são permitidos para serem gerados como processos node.
    • Nota: Evite o uso de .* na regex, pois isso permitirá a execução de qualquer comando após um pipe .

Funcionalidades

  • Monitoramento de Ataques
    • Chamadas de Rede de Saída
    • Execução de Comandos
  • Bloqueio de Ataques
    • Chamadas de Rede de Saída
    • Execução de Comandos
  • Controle Específico por Módulo

Roadmap

  • Monitoramento de Ataques
    • Chamadas de Arquivo
  • Bloqueio de Ataques
    • Chamadas de Arquivo
  • Scanner de Vulnerabilidades

Autores

  • Lavakumar Kuppan
    • Github - @lavakumar
    • Twitter - @lavakumark
  • Sukesh Pappu
    • Github - @thelogicalbeard
    • Twitter - @thelogicalbeard

Contribuidores

  • Ayusman Samal
    • Github - @p1xxxel

Licença

Apache License 2.0

Baixar ferramenta
|
|
  • reportUri: Envia Violações para um endpoint específico. Como as violações são semelhantes às violações de Política de Segurança de Conteúdo, qualquer solução de monitoramento de CSP pode ser usada. Usamos o endpoint do Sentry na RAP acima.
  • |
  • reportUri: Envia Violações para um endpoint específico. Como as violações são semelhantes às violações de Política de Segurança de Conteúdo, qualquer solução de monitoramento de CSP pode ser usada. Usamos o endpoint do Sentry na RAP acima.
  • Controle Específico por Módulo: O array allowedDomain aceita Objetos com os seguintes campos:
    • domain: Array de domínios que devem ser permitidos para os arquivos fornecidos.
    • modules: Array de Objetos contendo caminhos de arquivos. Apenas requisições de saída feitas através desses arquivos para os domínios especificados são permitidas.
  • maxViolationsPerMinute: Número máximo de violações a serem enviadas para o reportUri. Se não especificado, o valor padrão (100 violações) é usado.