Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
enforcement-coverage — अपने समकक्षों की तुलना में कमज़ोर प्राधिकरण वाले API रूट्स का पता लगाता है। स्रोत से CVE-2026-45316 को पुनर्प्राप्त किया गया। नकारात्मक परिणामों को शामिल करता है। | Kitploit
उपकरण/GitHubGitHub/arian-gogani/enforcement-coverage
स्थैतिक कोड विश्लेषण (SAST)भेद्यता विश्लेषणकोड विश्लेषणपेनिट्रेशन टेस्टिंगDevSecOpsAPI सुरक्षा
GitHubarian-gogani/enforcement-coverage

enforcement-coverage

अपने समकक्षों की तुलना में कमज़ोर प्राधिकरण वाले API रूट्स का पता लगाता है। स्रोत से CVE-2026-45316 को पुनर्प्राप्त किया गया। नकारात्मक परिणामों को शामिल करता है।

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें
रिपॉजिटरी देखें
15घं 48मि पहलेअभी तक समीक्षित नहीं

प्रवर्तन कवरेज (Enforcement Coverage)

उन API रूट्स को खोजता है जो अपने सिबलिंग रूट्स की तुलना में कमज़ोर प्राधिकरण नियंत्रण रखते हैं।

इसने Open WebUI में CVE-2026-45316 को केवल सोर्स कोड से खोजा, बिना किसी एडवाइज़री जानकारी के:

root@kitploit:~
[MISMATCH] POST /notes/{id}/pin  (notes.py:pin_note_by_id)
  3/3 comparable write operations on note require has_access(write);
  this route requires only has_access(read)

    POST   /notes/{id}/update          has_access(write)
    POST   /notes/{id}/access/update   has_access(write)
    DELETE /notes/{id}/delete          has_access(write)

पाँच प्रोडक्शन कोडबेस में 2,568 रूट्स पर इसने 4 निष्कर्ष दिए। दो वास्तविक थे। यह README दोनों संख्याओं की व्याख्या करता है।

विचार (The idea)

प्राधिकरण बगों का एक बड़ा वर्ग कोई टूटा हुआ चेक नहीं है। यह एक अनुपस्थित या कमज़ोर किया गया चेक है, ऐसे रूट पर जिसके सभी सिबलिंग्स ने सही चेक लगाया था।

Portainer ने चार सिबलिंग टेम्पलेट एंडपॉइंट्स को अधिकृत किया और पाँचवें को नहीं। Signal K ने HTTP लॉगिन को रेट-लिमिट किया लेकिन WebSocket लॉगिन को नहीं। Open WebUI का नोट-पिन रूट रीड अनुमति जाँचते हुए नोट को म्यूटेट करता था, जबकि बाकी हर नोट म्यूटेशन राइट जाँचता था।

हमेशा एक जैसा आकार:

root@kitploit:~
✓ ✓ ✓ ✓ ✗

रिपॉज़िटरी में पहले से ही नियम मौजूद है। एक रूट ने उसे तोड़ा। इसलिए नियम को कोड से पुनर्निर्मित करें और अपवाद की रिपोर्ट करें। कोई पॉलिसी फ़ाइल नहीं, कोई कॉन्फ़िग नहीं, कोई एनोटेशन नहीं। प्रमाण-सेट स्वयं सिबलिंग रूट्स हैं।

इसे चलाएँ (Run it)

root@kitploit:~
python3 enforcement_coverage.py /path/to/repo
python3 enforcement_coverage.py /path/to/repo --density
python3 enforcement_coverage.py /path/to/repo --json

Python 3.10+, कोई निर्भरता नहीं। केवल FastAPI।

निर्णय हैं MISSING, MISMATCH, PRESERVED, UNKNOWN। UNKNOWN मतदान से बचता है और कभी रिपोर्ट नहीं किया जाता।

यह क्या करता है (What it does)

निष्कर्षण (Extraction)। सिग्नेचर Depends(), डेकोरेटर dependencies=[], राउटर-स्तरीय डिपेंडेंसी, फ़ंक्शन बॉडीज़, रैपर फ़ंक्शन, और अनुमति-क्लास सूचियों से नियंत्रणों को हल करता है।

बॉडी निष्कर्षण आवश्यक है। Open WebUI में, 608 हैंडलरों में से 216 निर्णायक चेक फ़ंक्शन के अंदर रखते हैं:

root@kitploit:~
if user.role != 'admin' and not await AccessGrants.has_access(
    user_id=user.id, resource_type='note',
    resource_id=note.id, permission='write', db=db,
):
    raise HTTPException(status_code=403)

ऑपरेशन क्लास HTTP वर्ब से नहीं, बल्कि हैंडलर द्वारा रिसोर्स पर किए गए कार्य से आती है। POST /notes/{id}/chat एक POST है जो नोट को पढ़ता है।

शब्दावली वर्गीकरण (Vocabulary classification)। एक नियंत्रण परिवार में दो मान आवश्यक रूप से एक शक्ति-पैमाना नहीं बनाते:

root@kitploit:~
has_access             {read, write}                      LEVEL
ensure_flow_permission {create,delete,execute,read,write}  ACTION
has_permission         {features.notes, workspace.tools}   SCOPE

केवल LEVEL शब्दावली शक्ति तुलना का समर्थन करती है। FlowAction.CREATE की तुलना एक प्रभावी WRITE से करने पर Langflow में छह ग़लत सकारात्मक परिणाम (false positives) मिले, इससे पहले कि इसे ठीक किया गया।

दिशा फ़िल्टर। केवल कम प्रतिबंधात्मक नियंत्रण की ओर विचलन ही रिपोर्ट किए जाते हैं। पूर्वनिर्धारित से अधिक सख्त होना कोई भेद्यता नहीं है।

इसने क्या पाया (What it found)

दो वास्तविक सकारात्मक परिणाम (true positives)।

Open WebUI में POST /notes/{id}/pin — CVE-2026-45316।

एक और निष्कर्ष Netflix Dispatch में एक अनुमति असममिति है: POST /{incident_id}/resources IncidentViewPermission का उपयोग करता है जबकि छह सिबलिंग राइट ऑपरेशन IncidentEditPermission का उपयोग करते हैं। IncidentViewPermission किसी भी गैर-प्रतिबंधित घटना के लिए True लौटाता है; IncidentEditPermission के लिए admin, commander, या reporter होना आवश्यक है। यह हैंडलर बिना किसी और जाँच के टिकट और समूह निर्माण को कतारबद्ध करता है।

रिपोर्ट नहीं किया गया, क्योंकि रिपोर्ट करने के लिए कोई जगह नहीं है: रिपॉज़िटरी को Netflix द्वारा 3 सितंबर 2025 को संग्रहीत (archived) कर दिया गया था और यह केवल-पठनीय है, इसमें कोई SECURITY.md नहीं है, संग्रहीत रेपो के लिए निजी भेद्यता रिपोर्टिंग अक्षम है, और Dispatch को Netflix के बाउंटी प्रोग्राम में स्पष्ट रूप से दायरे से बाहर सूचीबद्ध किया गया है। इसे यहाँ प्रकाशित करना ही एकमात्र शेष प्रकटीकरण चैनल है। यह निम्न गंभीरता का है — इसके लिए एक प्रमाणित संगठन सदस्य की आवश्यकता होती है और यह केवल गैर-प्रतिबंधित घटनाओं को प्रभावित करता है — और परियोजना अब अनुरक्षित नहीं है।

दो ग़लत सकारात्मक परिणाम (false positives)। POST /tools/{id}/valves/user/update उपयोगकर्ता की अपनी वाल्व सेटिंग्स लिखता है और उसे वैध रूप से टूल पर केवल रीड की आवश्यकता होती है — म्यूटेशन लक्ष्य प्राधिकरण विषय से भिन्न इकाई है। और एक Langflow नॉलेज-बेस रूट जहाँ सिबलिंग गार्ड आवश्यक नहीं है।

यह अधिकतर काम क्यों नहीं करता (Why it mostly does not work)

यह उपयोगी हिस्सा है।

डेंसिटी निष्कर्षों की भविष्यवाणी नहीं करती

Danswer में 95.9% नियंत्रण कवरेज है और 80.7% UNKNOWN के साथ शून्य निष्कर्ष मिले। इसकी शब्दावली require_permission('basic_access'), ('manage_connectors') है — एक क्षमता नेमस्पेस, न कि शक्ति-पैमाना। आप यह नहीं कह सकते कि manage_connectors, read_connectors से कमज़ोर है।

निष्कर्षों की भविष्यवाणी करने वाली चीज़ है एक रिसोर्स-स्कोप्ड अनुमति कॉल जिसमें क्रमबद्ध शक्ति तर्क हो, जैसे has_access(resource, read|write)। पाँच में से एक कोडबेस में यह था।

हर कोडबेस को अलग निष्कर्षण की आवश्यकता थी

पाँच रिपॉज़िटरीज़ में पाँच अलग-अलग idiomatic शैलियाँ। प्रत्येक को विश्लेषण चलने से पहले एक्सट्रैक्टर कार्य की आवश्यकता थी।

UNKNOWN कभी भी 72% से नीचे नहीं गया

किसी भी रिपॉज़िटरी में, किसी भी कॉन्फ़िगरेशन के तहत। अधिकांश रूट्स तीन या अधिक के सिबलिंग परिवार से संबंधित नहीं होते जिनमें एक समान नियंत्रण हो।

वास्तविक कोड पर चलाने से मिली खामियाँ

इनमें से कोई भी पहले से अनुमानित नहीं थी।

  1. प्राधिकरण फ़ंक्शन बॉडीज़ में रहता है, न कि Depends() में
  2. रूट्स एक साथ कई नियंत्रण परिवार रखते हैं
  3. HTTP वर्ब ऑपरेशन क्लास नहीं है
  4. प्राधिकरण की idiomatic शैली हर रिपॉज़िटरी में भिन्न होती है
  5. क्रिया शब्दावलियाँ शक्ति-पैमाने नहीं होतीं
  6. पूर्वनिर्धारित से अधिक सख्त होना कोई भेद्यता नहीं है
  7. केवल मिसालों से वर्गीकृत शब्दावली एकल-मान परिवारों को छिपा देती है
  8. 422 उठाने वाले सत्यापन सहायक प्राधिकरण नहीं होते
  9. रैपर फ़ंक्शन वास्तविक नियंत्रण छिपाते हैं
  10. अनुमति-क्लास-सूची idiomatic शैलियों को नाम विभाजन की आवश्यकता होती है
  11. सिबलिंग परिवारों को ढीला करने से निष्कर्ष 7.5x बढ़े और परिशुद्धता 50% से गिरकर 13% हो गई
  12. एक रूट जिसके पास भिन्न पर्याप्त नियंत्रण है, वह नियंत्रण-रहित नहीं है
  13. समतुल्य प्रवर्तन डिपेंडेंसी के बजाय इनलाइन लागू किया गया — अनसुलझा

खामी 13 सबसे दिलचस्प है। Dispatch के टैग-अनुशंसा रूट्स में वह CaseViewPermission नहीं है जो उनके सिबलिंग्स रखते हैं। लेकिन वह अनुमति किसी भी गैर-प्रतिबंधित केस के लिए True लौटती है, और सेवा पहले से ही इनलाइन visibility == restricted जाँचता है। दोनों रास्ते समतुल्य हैं। उसे पहचानने के लिए शब्दार्थ समतुल्यता विश्लेषण चाहिए, न कि संरचना।

ईमानदार मूल्यांकन (Honest assessment)

तंत्र काम करता है। इसने एक प्रकाशित CVE और एक अरिपोर्टेड प्राधिकरण अंतराल को सोर्स से, सत्यापन योग्य प्रमाण-सेटों के साथ, केवल उन्हीं सूचनाओं का उपयोग करके पुनर्प्राप्त किया जो संवेदनशील कमिट के विलय से पहले उपलब्ध थीं।

उपज लगभग 1,000 रूट्स पर एक निष्कर्ष है, और इसके लिए एक ऐसी वास्तुकला चाहिए जो पाँच महत्वपूर्ण कोडबेसों में से एक के पास थी।

रिसोर्स-स्कोप्ड अनुमति शब्दावली वाले कोडबेस के लिए ऑडिट टूल के रूप में उपयोगी। इस साक्ष्य पर, एक सामान्य-उद्देश्यीय स्कैनर के रूप में नहीं।

पूर्व कार्य (Prior art)

अंतर्निहित धारणाओं का अनुमान लगाकर पहुँच-नियंत्रण भेद्यताओं का स्थिर पता लगाना USENIX Security 2011 तक जाता है। ACMiner ने Android मिडलवेयर में प्राधिकरण जाँचों का खनन किया। Semgrep लुप्त प्राधिकरण को लक्षित करने वाली AI-संचालित पहचान भेजता है और एक ग्राहक मूल्यांकन में 61% परिशुद्धता की सूचना दी। OWASP एक Authorization Regression Testing चीट शीट प्रकाशित करता है जिसका अनुशंसित दृष्टिकोण Actor × Resource × Action मैट्रिक्स को हाथ से बनाए रखना है।

यह एक संकीर्ण, नियतात्मक दृष्टिकोण है: केवल वही पुनर्प्राप्त करें जो सिबलिंग रूट्स सिद्ध करते हैं, अन्यथा मतदान से बचें।

MIT लाइसेंस।

टूल डाउनलोड करें
reporoutescontrolledfindings
LiteLLM80887.1%0
Danswer / Onyx65395.9%0
Open WebUI52997.2%2
Netflix Dispatch29136.1%1
Langflow28747.4%1
repoidiom
Open WebUIAccessGrants.has_access(resource_type=, permission=)
Langflowensure_<resource>_permission(user, Action.X)
LiteLLMrole compare on user_api_key_dict.user_role
Netflix DispatchDepends(PermissionsDependency([CaseEditPermission]))
Danswerrequire_permission('basic_access')