Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
NodeSecurityShield — Un package convivial pour développeurs et ingénieurs en sécurité pour sécuriser les applications NodeJS. | Kitploit
Outils/GitHubGitHub/domdogsec/nodesecurityshield
Outils DéfensifsAnalyse des Vulnérabilités
GitHubdomdogsec/nodesecurityshield

NodeSecurityShield

Un package convivial pour développeurs et ingénieurs en sécurité pour sécuriser les applications NodeJS.

Voir le dépôt
297il y a 3 ansVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Node Security Shield

Node Security Shield (NSS) est un outil open source de protection d'application au moment de l'exécution (RASP) qui vise à combler le fossé en matière de sécurité complète de NodeJS en permettant au développeur et à l'ingénieur sécurité de déclarer les ressources auxquelles une application peut accéder.

Inspiré par la vulnérabilité Log4Shell (CVE-2021-44228) qui peut être exploitée car une application peut effectuer des appels réseau arbitraires, nous avons ressenti le besoin qu'une application dispose d'un mécanisme lui permettant de déclarer les privilèges qu'elle autorise afin de rendre l'exploitation de telles vulnérabilités plus difficile en mettant en œuvre des contrôles supplémentaires.

Pour y parvenir, NSS (Node Security Shield) dispose d'une Politique d'Accès aux Ressources (RAP)

Politique d'Accès aux Ressources (RAP)

La Politique d'Accès aux Ressources est similaire à la CSP (Content Security Policy).

Elle permet au développeur/ingénieur sécurité de déclarer les ressources auxquelles une application doit accéder. Et Node Security Shield l'appliquera.

Installation

Installer NodeSecurityShield avec npm

root@kitploit:~
npm install nodesecurityshield

Utilisation

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

// Activer la surveillance et/ou le blocage des attaques
nodeSecurityShield.enableAttackMonitoring("Unique-App-Id",resourceAccessPolicy ,callbackFunction);

Exemple de resourceAccessPolicy [BASIQUE]

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 : définit le comportement accepté pour les Requêtes sortantes
    • Remarque : blockedDomains a priorité sur allowedDomains.
    • c'est-à-dire : les requêtes sont d'abord vérifiées par rapport à blockedDomains, puis à allowedDomains.
  • executedCommand : définit le comportement accepté pour l'Exécution de commande
    • Le tableau allowedCommands accepte une String. Vous pouvez passer une RegEx pour autoriser un modèle de commandes.
    • Le comportement par défaut est de bloquer toutes les exécutions de commandes, à condition que la RAP possède la propriété executedCommand définie.
    • Lorsque la RAP ci-dessus est utilisée,
      • la commande pwd est autorisée à s'exécuter et
      • les fichiers .js dans helper sont autorisés à être lancés en tant que processus node.
    • Remarque : Évitez d'utiliser .* dans les regex. Cela permettrait l'exécution de n'importe quelle commande après un pipe .

Exemple de callbackFunction pour journaliser les violations RAP dans la console.

root@kitploit:~
var callbackFunction = function (violationEvent,violations,violationLimitPerMinReached) {
  console.log(JSON.stringify(violationEvent,null, 4));
}
  • violationEvent - Violation RAP survenue. Elle est présentée comme une violation CSP.

  • violations - Compteur de violations RAP. Remis à ZÉRO chaque minute.

  • violationLimitPerMinReached - true si le nombre de violations RAP dépasse 'maxViolationsPerMinute' [une option dans la RAP]

  • Pour bloquer une attaque - lancer une erreur

    root@kitploit:~
    throw new Error("Requête bloquée. Elle viole la politique d'accès aux ressources déclarée.")
    

Exemple 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: contient Unique-App-Id, transmis lors de l'initialisation de NSS
  • blocked-uri: domaine de la requête sortante qui a violé la RAP
  • violated-directive: connect-src est un synonyme de Requête sortante ; de même script-src est un synonyme d'Exécution de commande
  • original-policy: Politique d'accès aux ressources (RAP) violée
  • source-file: Trace de la pile à l'origine de cette violation.

Intégration avec Sentry

Exemple de resourceAccessPolicy pour intégrer [Sentry] (https://sentry.io/)

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 : définit le comportement accepté pour les Requêtes sortantes
    • Remarque : blockedDomains a priorité sur allowedDomains.
    • c'est-à-dire : les requêtes sont d'abord vérifiées par rapport à blockedDomains, puis à allowedDomains.
  • executedCommand : définit le comportement accepté pour l'Exécution de commande
    • Le tableau allowedCommands accepte une String. Vous pouvez passer une RegEx pour autoriser un modèle de commandes.
    • Le comportement par défaut est de bloquer toutes les exécutions de commandes, à condition que la RAP possède la propriété executedCommand définie.
    • Lorsque la RAP ci-dessus est utilisée,
      • la commande pwd est autorisée à s'exécuter et
      • les fichiers .js dans helper sont autorisés à être lancés en tant que processus node.
    • Remarque : Évitez d'utiliser .* dans les regex. Cela permettrait l'exécution de n'importe quelle commande après un pipe .

Capture d'écran depuis le tableau de bord Sentry sentry issues sentry issues

Exemple de resourceAccessPolicy [Avancé]

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 : définit le comportement accepté pour les Requêtes sortantes
    • Remarque : blockedDomains a priorité sur allowedDomains.
    • c'est-à-dire : les requêtes sont d'abord vérifiées par rapport à blockedDomains, puis à allowedDomains.
  • executedCommand : définit le comportement accepté pour l'Exécution de commande
    • Le tableau allowedCommands accepte une String. Vous pouvez passer une RegEx pour autoriser un modèle de commandes.
    • Le comportement par défaut est de bloquer toutes les exécutions de commandes, à condition que la RAP possède la propriété executedCommand définie.
    • Lorsque la RAP ci-dessus est utilisée,
      • la commande pwd est autorisée à s'exécuter et
      • les fichiers .js dans helper sont autorisés à être lancés en tant que processus node.
    • Remarque : Évitez d'utiliser .* dans les regex. Cela permettrait l'exécution de n'importe quelle commande après un pipe .

Fonctionnalités

  • Surveillance des attaques
    • Appels réseau sortants
    • Exécution de commandes
  • Blocage des attaques
    • Appels réseau sortants
    • Exécution de commandes
  • Contrôle Spécifique aux Modules

Feuille de route

  • Surveillance des attaques
    • Appels de fichiers
  • Blocage des attaques
    • Appels de fichiers
  • Scanner de vulnérabilités

Auteurs

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

Contributeurs

  • Ayusman Samal
    • Github - @p1xxxel

Licence

Apache License 2.0

Télécharger l’outil
|
|
  • reportUri : Envoie les violations à un point de terminaison donné. Comme les violations sont similaires aux violations de la Content Security Policy, toutes les solutions de surveillance CSP peuvent être utilisées. Nous avons utilisé le point de terminaison Sentry dans la RAP ci-dessus.
  • |
  • reportUri : Envoie les violations à un point de terminaison donné. Comme les violations sont similaires aux violations de la Content Security Policy, toutes les solutions de surveillance CSP peuvent être utilisées. Nous avons utilisé le point de terminaison Sentry dans la RAP ci-dessus.
  • Contrôle Spécifique aux Modules : Le tableau allowedDomain accepte des objets avec les éléments suivants :
    • domain : Tableau de domaines autorisés pour les fichiers fournis.
    • modules : Tableau d'objets contenant des chemins de fichiers. Seules les requêtes sortantes effectuées via ces fichiers vers les domaines spécifiés sont autorisées.
  • maxViolationsPerMinute : Nombre maximum de violations à envoyer à reportUri. S'il n'est pas spécifié, la valeur par défaut (100 violations) est utilisée.