
वेब एप्लिकेशन रूट्स में प्रमाणीकरण (authn) और प्राधिकरण (authz) सुरक्षा बग खोजें।
वेब एप्लिकेशन रूट्स में प्रमाणीकरण (authn) और प्राधिकरण (authz) सुरक्षा बग खोजें:

koel स्ट्रीमिंग सर्वर से रूट्स
वेब एप्लिकेशन HTTP रूट authn और authz बग आज सबसे सामान्य सुरक्षा समस्याओं में से हैं। ये उद्योग मानक संसाधन समस्या की गंभीरता को उजागर करते हैं:
| भाषा | फ्रेमवर्क | Semgrep | CodeQL |
|---|---|---|---|
| Python | Django | ✅ | ❌ |
| Python | Django REST framework | ✅ | ❌ |
| Python | Flask | ✅ | ❌ |
| Python | Sanic | ✅ | ❌ |
| Python | FastAPI | ✅ | ❌ |
| PHP | Laravel | ✅ | ❌ |
| PHP | Symfony | ✅ | ❌ |
| PHP | CakePHP | ✅ | ❌ |
| Ruby | Rails | ❌ | ✅ |
| Ruby | Grape | ✅ | ❌ |
| Java | JAX-RS | ✅ | ❌ |
| Java | Spring | ✅ | ❌ |
| Go | Gorilla | ✅ | ❌ |
| Go | Gin | ✅ | ❌ |
| Go | Chi | ✅ | ❌ |
| JavaScript/TypeScript | Express | ✅ | ❌ |
| JavaScript/TypeScript | React | ✅ | ❌ |
| JavaScript/TypeScript | Angular | ✅ | ❌ |
route-detect को स्थापित करने के लिए pip का उपयोग करें:
$ python -m pip install --upgrade route-detect
आप निम्नलिखित कमांड से जांच सकते हैं कि route-detect सही ढंग से स्थापित है या नहीं:
$ echo 'print(1 == 1)' | semgrep --config $(routes which test-route-detect) -
Scanning 1 file.
Findings:
/tmp/stdin
routes.rules.test-route-detect
Found '1 == 1', your route-detect installation is working correctly
1┆ print(1 == 1)
Ran 1 rule on 1 file: 1 finding.
route-detect routes CLI कमांड का उपयोग करता है और निम्नलिखित कमांड ट्री प्रदान करता है:
routes
whichvizसबसे पहले, सुनिश्चित करें कि semgrep स्थापित है और आपके PATH पर शामिल है।
[!IMPORTANT]
route-detectद्वारा कोड स्निपेट प्रदर्शित करने के लिए उपयोग की जाने वाली Semgrep कार्यक्षमता को उनके क्लाउड ऐप के पीछे ले जाया गया है। अधिक जानकारी के लिए देखें #10762। हालांकि, Semgrep के पुराने संस्करण अभी भी इस व्यवहार का समर्थन करते हैं।route-detectका उपयोग करते समय,1.97.0से पहले Semgrep का एक संस्करण स्थापित करना सुनिश्चित करें। यह निम्नलिखित कमांड से किया जा सकता है:python -m pip install 'semgrep<1.97.0'।
which उपकमांड का उपयोग करके semgrep को सही वेब एप्लिकेशन नियमों की ओर इंगित करें:
$ semgrep --config $(routes which django) path/to/django/code
अपने ब्राउज़र में रूट जानकारी को विज़ुअलाइज़ करने के लिए viz उपकमांड का उपयोग करें:
$ semgrep --json --config $(routes which django) --output routes.json path/to/django/code
$ routes viz --browser routes.json
यदि आप सुनिश्चित नहीं हैं कि किस फ्रेमवर्क की खोज करनी है, तो आप सब कुछ जांचने के लिए विशेष all ID का उपयोग कर सकते हैं:
$ semgrep --json --config $(routes which all) --output routes.json path/to/code
यदि आपके पास कस्टम authn या authz तर्क है, तो आप route-detect के नियमों की प्रतिलिपि बना सकते हैं:
$ cp $(routes which django) my-django.yml
फिर आप आवश्यकतानुसार नियम को संशोधित कर सकते हैं और इसे ऊपर बताए अनुसार चला सकते हैं:
$ semgrep --json --config my-django.yml --output routes.json path/to/django/code
$ routes viz --browser routes.json
सबसे पहले, सुनिश्चित करें कि codeql स्थापित है और आपके PATH पर शामिल है।
पैक की निर्भरताओं को पहले स्थापित करने के लिए which उपकमांड का उपयोग करें, फिर उपयुक्त क्वेरी चलाएं:
$ codeql pack install $(poetry run routes which -c rails)
$ codeql database analyze \
--output routes.sarif \
--format sarif-latest \
--sarif-add-file-contents \
--no-group-results \
-- \
/path/to/codeql/db \
$(routes which --codeql rails)
अपने ब्राउज़र में रूट जानकारी को विज़ुअलाइज़ करने के लिए viz उपकमांड का उपयोग करें:
$ routes viz --codeql --browser routes.sarif
route-detect निर्भरता और कॉन्फ़िगरेशन प्रबंधन के लिए poetry का उपयोग करता है।
आगे बढ़ने से पहले, निम्नलिखित कमांड के साथ प्रोजेक्ट निर्भरताएं स्थापित करें:
$ poetry install --with dev
निम्नलिखित कमांड के साथ सभी प्रोजेक्ट फ़ाइलों को लिंट करें:
$ poetry run pre-commit run --all-files
निम्नलिखित कमांड के साथ Python परीक्षण चलाएं:
$ poetry run pytest --cov
निम्नलिखित कमांड के साथ Semgrep नियम परीक्षण चलाएं:
$ poetry run semgrep --test --config routes/rules/ tests/test_rules/
निम्नलिखित कमांड के साथ CodeQL क्वेरी परीक्षण चलाएं:
$ codeql test run routes/queries/rails/test/