Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
NodeSecurityShield — حزمة صديقة للمطورين ومهندسي الأمن لتأمين تطبيقات NodeJS. | Kitploit
أدوات/GitHubGitHub/domdogsec/nodesecurityshield
أدوات دفاعيةتحليل الثغرات الأمنية
GitHubdomdogsec/nodesecurityshield

NodeSecurityShield

حزمة صديقة للمطورين ومهندسي الأمن لتأمين تطبيقات NodeJS.

عرض المستودع
297منذ 3 سنواتتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

Node Security Shield

Node Security Shield (NSS) هي أداة حماية ذاتية مفتوحة المصدر للتطبيق أثناء التشغيل (RASP) تهدف إلى سد الفجوة في أمان NodeJS الشامل من خلال تمكين المطور ومهندس الأمان من إعلان الموارد التي يمكن للتطبيق الوصول إليها.

مستوحاة من ثغرة Log4Shell (CVE-2021-44228) والتي يمكن استغلالها لأن التطبيق يمكنه إجراء استدعاءات شبكية عشوائية، شعرنا بوجود حاجة إلى أن يكون للتطبيق آلية يمكنها إعلان الصلاحيات التي يسمح بها من أجل جعل استغلال هذه الثغرات أكثر صعوبة من خلال تنفيذ ضوابط إضافية.

لتحقيق ذلك، يحتوي NSS (Node Security Shield) على سياسة الوصول إلى الموارد (RAP)

سياسة الوصول إلى الموارد (RAP)

Resource Access Policy مماثلة لـ CSP(سياسة أمان المحتوى).

تتيح للمطور/مهندس الأمان إعلان الموارد التي يجب على التطبيق الوصول إليها. وسيقوم Node Security Shield بفرضها.

التثبيت

تثبيت NodeSecurityShield باستخدام npm

root@kitploit:~
npm install nodesecurityshield

الاستخدام

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

// Enable Attack Monitoring and/or Blocking
nodeSecurityShield.enableAttackMonitoring("Unique-App-Id",resourceAccessPolicy ,callbackFunction);

نموذج resourceAccessPolicy [BASIC]

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: يحدد السلوك المقبول لـ Outbound Requests
    • ملاحظة: تحتفظ blockedDomains بالأولوية على allowedDomains.
    • أي، يتم فحص الطلبات ضد blockedDomains أولاً ثم ضد allowedDomains.
  • executedCommand: يحدد السلوك المقبول لـ Command Execution
    • يقبل مصفوفة allowedCommands قيمة من نوع String. يمكنك تمرير تعبير نمطي (RegEx) للسماح بنمط من الأوامر.
    • السلوك الافتراضي هو حظر جميع عمليات تنفيذ الأوامر، بشرط أن تحتوي سياسة RAP على خاصية executedCommand معرفة.
    • عند استخدام سياسة RAP أعلاه،
      • يُسمح بتنفيذ الأمر pwd، و

نموذج callbackFunction لتسجيل انتهاكات RAP في وحدة التحكم.

root@kitploit:~
var callbackFunction = function (violationEvent,violations,violationLimitPerMinReached) {
  console.log(JSON.stringify(violationEvent,null, 4));
}
  • violationEvent - انتهاك RAP الذي حدث. يتم تقديمه كانتهاك CSP.

  • violations - عدد انتهاكات RAP. يُعاد تعيينه إلى الصفر كل دقيقة.

  • violationLimitPerMinReached - صحيح إذا تجاوز عدد انتهاكات RAP قيمة 'maxViolationsPerMinute' [خيار في RAP]

  • لحظر هجوم - طرح خطأ

    root@kitploit:~
    throw new Error("Request Blocked. It violates declared Resource Access Policy.")
    

نموذج 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: يحتوي على معرف التطبيق الفريد (Unique-App-Id)، الذي تم تمريره أثناء تهيئة NSS
  • blocked-uri: نطاق الطلب الصادر الذي انتهك سياسة RAP
  • violated-directive: connect-src هو مرادف لـ Outbound Request وكذلك script-src هو مرادف لـ Command Execution
  • original-policy: سياسة الوصول إلى الموارد (RAP) المنتهكة
  • source-file: تتبع المكدس (Stack Trace) لمكان حدوث هذا الانتهاك.

التكامل مع Sentry

نموذج resourceAccessPolicy للتكامل مع 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: يحدد السلوك المقبول لـ Outbound Requests
    • ملاحظة: تحتفظ blockedDomains بالأولوية على allowedDomains.
    • أي، يتم فحص الطلبات ضد blockedDomains أولاً ثم ضد allowedDomains.
  • executedCommand: يحدد السلوك المقبول لـ Command Execution
    • يقبل مصفوفة allowedCommands قيمة من نوع String. يمكنك تمرير تعبير نمطي (RegEx) للسماح بنمط من الأوامر.
    • السلوك الافتراضي هو حظر جميع عمليات تنفيذ الأوامر، بشرط أن تحتوي سياسة RAP على خاصية executedCommand معرفة.
    • عند استخدام سياسة RAP أعلاه،
      • يُسمح بتنفيذ الأمر pwd، و

لقطة شاشة من لوحة تحكم Sentry sentry issues sentry issues

نموذج resourceAccessPolicy [متقدم]

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: يحدد السلوك المقبول لـ Outbound Requests
    • ملاحظة: تحتفظ blockedDomains بالأولوية على allowedDomains.
    • أي، يتم فحص الطلبات ضد blockedDomains أولاً ثم ضد allowedDomains.
  • executedCommand: يحدد السلوك المقبول لـ Command Execution
    • يقبل مصفوفة allowedCommands قيمة من نوع String. يمكنك تمرير تعبير نمطي (RegEx) للسماح بنمط من الأوامر.
    • السلوك الافتراضي هو حظر جميع عمليات تنفيذ الأوامر، بشرط أن تحتوي سياسة RAP على خاصية executedCommand معرفة.
    • عند استخدام سياسة RAP أعلاه،
      • يُسمح بتنفيذ الأمر pwd، و

الميزات

  • مراقبة الهجمات
    • الاستدعاءات الشبكية الصادرة
    • تنفيذ الأوامر
  • حظر الهجمات
    • الاستدعاءات الشبكية الصادرة
    • تنفيذ الأوامر
  • التحكم الخاص بالوحدة النمطية

خارطة الطريق

  • مراقبة الهجمات
    • استدعاءات الملفات
  • حظر الهجمات
    • استدعاءات الملفات
  • ماسح الثغرات الأمنية

المؤلفون

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

المساهمون

  • Ayusman Samal
    • Github - @p1xxxel

الترخيص

Apache License 2.0

تنزيل الأداة
  • يُسمح للملفات .js داخل helper بالتشغيل كعمليات node.
  • ملاحظة: تجنب استخدام .* في regex. لأن هذا سيسمح بتنفيذ أي أمر بعد أنبوب |.
  • يُسمح للملفات .js داخل helper بالتشغيل كعمليات node.
  • ملاحظة: تجنب استخدام .* في regex. لأن هذا سيسمح بتنفيذ أي أمر بعد أنبوب |.
  • reportUri: يرسل الانتهاكات إلى نقطة نهاية معينة. نظرًا لأن الانتهاكات مشابهة لانتهاكات سياسة أمان المحتوى (CSP)، يمكن استخدام أي حلول مراقبة CSP. استخدمنا نقطة نهاية Sentry في سياسة RAP أعلاه.
  • يُسمح للملفات .js داخل helper بالتشغيل كعمليات node.
  • ملاحظة: تجنب استخدام .* في regex. لأن هذا سيسمح بتنفيذ أي أمر بعد أنبوب |.
  • reportUri: يرسل الانتهاكات إلى نقطة نهاية معينة. نظرًا لأن الانتهاكات مشابهة لانتهاكات سياسة أمان المحتوى (CSP)، يمكن استخدام أي حلول مراقبة CSP. استخدمنا نقطة نهاية Sentry في سياسة RAP أعلاه.
  • التحكم الخاص بالوحدة النمطية (Module Specific Control): تقبل مصفوفة allowedDomain كائنات تحتوي على التالي
    • domain: مصفوفة من النطاقات المسموح بها للملفات المقدمة.
    • modules: مصفوفة من الكائنات تحتوي على مسارات الملفات. يُسمح فقط بالطلبات الصادرة التي تتم من خلال هذه الملفات إلى النطاقات المحددة.
  • maxViolationsPerMinute: الحد الأقصى لعدد الانتهاكات التي سيتم إرسالها إلى reportUri. إذا لم يتم تحديده، يتم استخدام القيمة الافتراضية (100 انتهاك).