Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
NodeSecurityShield — Дружественный к разработчикам и инженерам безопасности пакет для защиты приложений NodeJS. | Kitploit
Инструменты/GitHubGitHub/domdogsec/nodesecurityshield
Оборонительные ИнструментыАнализ уязвимостей
GitHubdomdogsec/nodesecurityshield

NodeSecurityShield

Дружественный к разработчикам и инженерам безопасности пакет для защиты приложений NodeJS.

Репозиторий
297143 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Node Security Shield

Node Security Shield (NSS) — это инструмент самозащиты приложений во время выполнения (RASP) с открытым исходным кодом, предназначенный для устранения пробелов в комплексной безопасности NodeJS. Он позволяет разработчику и инженеру по безопасности указывать, к каким ресурсам может обращаться приложение.

Вдохновением послужила уязвимость Log4Shell (CVE-2021-44228), которая эксплуатируется из-за возможности приложения выполнять произвольные сетевые вызовы. Мы решили, что приложению необходим механизм, позволяющий объявлять разрешённые привилегии, чтобы усложнить эксплуатацию подобных уязвимостей с помощью дополнительных средств контроля.

Для достижения этой цели NSS (Node Security Shield) использует Политику доступа к ресурсам (RAP)

Политика доступа к ресурсам (RAP)

Политика доступа к ресурсам аналогична CSP (Политика безопасности контента).

Она позволяет разработчику/инженеру по безопасности указать, к каким ресурсам должно обращаться приложение. Node Security Shield обеспечивает соблюдение этой политики.

Установка

Установка NodeSecurityShield с помощью npm

npm install nodesecurityshield

Использование

// Подключение Node Security Shield
let nodeSecurityShield = require('nodesecurityshield');

// Включение мониторинга и/или блокировки атак
nodeSecurityShield.enableAttackMonitoring("Уникальный-ID-приложения", resourceAccessPolicy, callbackFunction);

Пример resourceAccessPolicy [БАЗОВЫЙ]

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: определяет допустимое поведение для исходящих запросов
    • Примечание: блокируемые домены (blockedDomains) имеют приоритет над разрешёнными (allowedDomains).
    • То есть запросы сначала проверяются по blockedDomains, затем по allowedDomains.
  • executedCommand: определяет допустимое поведение для выполнения команд
    • Массив allowedCommands принимает строки. Вы можете передать регулярное выражение для разрешения шаблона команд.
    • По умолчанию блокируются все выполнения команд, если в RAP определено свойство executedCommand.
    • При использовании указанной выше RAP:
      • команда pwd разрешена к выполнению;
      • файлы .js внутри helper могут запускаться как процессы node.
    • Примечание: Избегайте использования .* в регулярных выражениях, так как это позволит выполнить любую команду после символа пайпа |.

Пример callbackFunction для вывода нарушений RAP в консоль.

var callbackFunction = function (violationEvent,violations,violationLimitPerMinReached) {
  console.log(JSON.stringify(violationEvent,null, 4));
}
  • violationEvent — произошедшее нарушение RAP. Представлено как нарушение CSP.

  • violations — счётчик нарушений RAP. Сбрасывается в ноль каждую минуту.

  • violationLimitPerMinReached — значение true, если количество нарушений RAP превышает 'maxViolationsPerMinute' [опция в RAP]

  • Для блокировки атаки — выбросить ошибку

    throw new Error("Запрос заблокирован. Он нарушает объявленную политику доступа к ресурсам.")
    

Пример violationEvent

{
    "csp-report": {
        "document-uri": "https://Уникальный-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: содержит Уникальный-ID-приложения, переданный при инициализации NSS
  • blocked-uri: домен исходящего запроса, нарушившего RAP
  • violated-directive: connect-src является синонимом Исходящий запрос, так же как script-src является синонимом Выполнение команды
  • original-policy: нарушенная Политика доступа к ресурсам (RAP)
  • source-file: трассировка стека места возникновения нарушения

Интеграция с Sentry

Пример resourceAccessPolicy для интеграции с Sentry

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: определяет допустимое поведение для исходящих запросов
    • Примечание: блокируемые домены (blockedDomains) имеют приоритет над разрешёнными (allowedDomains).
    • То есть запросы сначала проверяются по blockedDomains, затем по allowedDomains.
  • executedCommand: определяет допустимое поведение для выполнения команд
    • Массив allowedCommands принимает строки. Вы можете передать регулярное выражение для разрешения шаблона команд.
    • По умолчанию блокируются все выполнения команд, если в RAP определено свойство executedCommand.
    • При использовании указанной выше RAP:
      • команда pwd разрешена к выполнению;
      • файлы .js внутри helper могут запускаться как процессы node.
    • Примечание: Избегайте использования .* в регулярных выражениях, так как это позволит выполнить любую команду после символа пайпа |.
  • reportUri : Отправляет нарушения на заданную конечную точку. Поскольку нарушения аналогичны нарушениям Политики безопасности контента, можно использовать любые CSP-решения для мониторинга. В приведённом выше RAP мы использовали конечную точку Sentry.

Скриншот из панели управления Sentry sentry issues sentry issues

Пример resourceAccessPolicy [РАСШИРЕННЫЙ]

Скачать инструмент