Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
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
29714il 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

npm install nodesecurityshield

Utilisation

// 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]

const resourceAccessPolicy  = {
  "outBoundRequest" : {

      "blockedDomains" : ["compromised.domdog.io"],
    
      "allowedDomains" : []
   },
	"executedCommand": {

        "allowedCommands": ["pwd" , "(node)[](https://github.com/domdogsec/nodesecurityshield/blob/main/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.

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

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

Exemple de violationEvent

{
    "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/)

const resourceAccessPolicy  = {
  "outBoundRequest" : {

      "blockedDomains" : ["compromised.domdog.io"],
    
      "allowedDomains" : []
    },
	"executedCommand": {

        "allowedCommands": ["pwd" , "(node)[](https://github.com/domdogsec/nodesecurityshield/blob/main/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 |.
  • 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.

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

Exemple de resourceAccessPolicy [Avancé]

Télécharger l’outil