.. image:: https://cdn.sourcecode.ai/imgs/logotype.png
:target: https://aura.sourcecode.ai/
======
.. class:: center
|homepage_flair| |docs_flair| |docker_flair|
|license_flair| |travis_flair| |pypi_flair|
Quellcode-Audit und statische Code-Analyse
Aura ist ein statisches Analyse-Framework, das als Reaktion auf die ständig zunehmende Bedrohung durch bösartige Pakete und anfälligen Code, der auf PyPI veröffentlicht wird, entwickelt wurde.
Projektziele:
- Bereitstellung eines automatisierten Überwachungssystems für hochgeladene Pakete auf PyPI, Warnung bei Anomalien, die entweder auf einen laufenden Angriff oder Schwachstellen im Code hinweisen können.
- Ermöglicht einer Organisation, automatisierte Sicherheitsaudits des Quellcodes durchzuführen und sichere Codierungspraktiken zu implementieren, mit Schwerpunkt auf der Überprüfung von Drittanbieter-Code wie Python-Paketabhängigkeiten.
- Ermöglicht es Forschern, Code-Repositorys in großem Maßstab zu scannen, Datensätze zu erstellen und Analysen durchzuführen, um die Forschung im Bereich anfälliger und bösartiger Code-Abhängigkeiten weiter voranzutreiben.
Funktionsliste:
- Geeignet zur Analyse von Malware mit Garantie auf null Code-Ausführung
- Fortschrittliche Entschleierungsmechanismen durch Umschreiben des AST-Baums - Konstantenpropagation, Code-Entrollung und andere fiese Tricks
- Rekursives Scannen entpackt automatisch Archive wie Zips, Wheels usw. und scannt den Inhalt
- Unterstützt auch das Scannen von Nicht-Python-Dateien - Plugins können im 'Raw-File'-Modus arbeiten, wie die integrierte Yara-Integration
- Scannt nach hartcodierten Geheimnissen, Passwörtern und anderen sensiblen Informationen
- Benutzerdefinierte Diff-Engine - Sie können Änderungen zwischen verschiedenen Datenquellen vergleichen, wie z.B. Typosquatting-PyPI-Pakete und welche Änderungen vorgenommen wurden
- Funktioniert sowohl für Python 2.x- als auch Python 3.x-Quellcode
- Hohe Leistung, ausgelegt zum Scannen des gesamten PyPI-Repositorys
- Ausgabe in zahlreichen Formaten wie hübschem Klartext, JSON, SQLite, SARIF usw.
- Getestet auf über 4 TB komprimiertem Python-Quellcode
- Aura kann über Code-Verhalten wie Netzwerkkommunikation, Dateizugriff oder Systembefehlsausführung berichten
- Berechnung des 'Aura-Scores', der angibt, wie vertrauenswürdig der Quellcode/die Eingabedaten sind
- und vieles mehr …
Sie haben nicht gefunden, was Sie suchen? Die Architektur von Aura basiert auf einem robusten Pluginsystem, bei dem Sie fast alles anpassen können, von einer Reihe von Datenanalysatoren über Transportprotokolle bis hin zu benutzerdefinierten Ausgabeformaten.
Installation
::
# Via pip:
pip install aura-security[full]
# or build from source/git
poetry install --no-dev -E full
Oder verwenden Sie einfach ein vorgefertigtes Docker-Image sourcecodeai/aura:dev
Aura ausführen
::
docker run -ti --rm sourcecodeai/aura:dev scan pypi://requests -v
Aura verwendet sogenannte URIs, um das Protokoll und den Speicherort für den Scan zu identifizieren. Wenn kein Protokoll verwendet wird, wird das Scan-Argument als Pfad zur Datei oder zum Verzeichnis auf einem lokalen System behandelt.
.. image:: files/imgs/aura_scan.png
Pakete diffen::
docker run -ti --rm sourcecodeai/aura:dev diff pypi://requests pypi://requests2
.. image:: docs/source/_static/imgs/aura_diff.png
Finde die beliebtesten Typosquatting-Pakete (Sie müssen zuerst aura update aufrufen, um den Datensatz herunterzuladen)::
aura find-typosquatting --max-distance 2 --limit 10
.. image:: https://asciinema.org/a/367999.svg
:target: https://asciinema.org/a/367999
.. image:: files/imgs/download_dataset.png
:target: https://cdn.sourcecode.ai/pypi_datasets/index/datasets.html
:align: center
:width: 256
Warum Aura?
Obwohl es andere Tools mit Funktionalität gibt, die sich mit Aura überschneidet, wie Bandit, dlint, semgrep usw., ist der Fokus dieser Alternativen anders, was die Funktionalität und ihre Verwendung beeinflusst. Diese Alternativen sind hauptsächlich dafür gedacht, ähnlich wie Linter verwendet zu werden, in IDEs integriert, häufig während der Entwicklung ausgeführt, was es wichtig macht, falsch-positive Ergebnisse zu minimieren und mit klaren handlungsorientierten Erklärungen in Idealfällen zu berichten.
Aura hingegen berichtet über das Verhalten des Codes, Anomalien und Schwachstellen mit so vielen Informationen wie möglich, zum Preis von falsch-positiven Ergebnissen. Es gibt viele Dinge, die von Aura gemeldet werden, die für einen Benutzer nicht unbedingt handlungsrelevant sind, aber sie sagen viel über das Verhalten des Codes aus, wie z.B. Netzwerkkommunikation, Zugriff auf sensible Dateien oder die Verwendung von Mechanismen, die mit Verschleierung verbunden sind, was auf einen möglichen bösartigen Code hinweist. Durch das Sammeln dieser Daten und deren Aggregation kann Aura in der Funktionalität mit anderen Sicherheitssystemen wie Antivirenprogrammen, IDS oder Firewalls verglichen werden, die im Wesentlichen die gleiche Analyse durchführen, aber auf einer anderen Art von Daten (Netzwerkkommunikation, laufende Prozesse usw.).
Hier ist ein schneller Überblick über die Unterschiede zwischen Aura und anderen ähnlichen Lindern und SAST-Tools:
- Eingabedaten:
- Andere SAST-Tools - normalerweise auf nur Python (Ziel-)Quellcode und die Python-Version beschränkt, unter der das Tool installiert ist.
- Aura - kann sowohl Binärcode (oder Nicht-Python-Code) als auch Python-Quellcode analysieren. Kann eine Mischung aus Python-Code analysieren, der mit verschiedenen Python-Versionen (py2k & py3k) kompatibel ist, unter Verwendung derselben Aura-Installation.
- Berichterstattung:
- Andere SAST-Tools - Ziel ist eine gute Integration mit anderen Systemen wie IDEs, CI-Systemen mit handlungsrelevanten Ergebnissen, während versucht wird, falsch-positive Ergebnisse zu minimieren, um Benutzer nicht mit zu vielen nicht signifikanten Warnungen zu überfordern.
- Aura - berichtet so viele Informationen wie möglich, die nicht sofort handlungsrelevant sind, wie Verhaltens- und Anomalieanalysen. Das Ausgabeformat ist für einfache maschinelle Verarbeitung und Aggregation ausgelegt, anstatt für menschliche Lesbarkeit.
- Konfiguration:
- Andere SAST-Tools - Die Tools werden auf das Zielprojekt abgestimmt, indem Signaturen angepasst werden, um bestimmte Technologien des Zielprojekts zu adressieren. Die Überschreibung der Konfiguration ist oft möglich, indem Kommentare im Quellcode eingefügt werden, wie
# nosec, die die Warnung an dieser Stelle unterdrücken.
- Aura - Es wird erwartet, dass im Voraus wenig bis gar kein Wissen über die Technologien vorhanden ist, die von dem zu scannenden Code verwendet werden, wie z.B. die Überprüfung eines neuen Python-Pakets zur Genehmigung als Abhängigkeit in einem Projekt. In den meisten Fällen ist es nicht einmal möglich, den gescannten Quellcode zu ändern, z.B. durch Kommentare, um Linter oder Aura anzuzeigen, die Erkennung an dieser Stelle zu überspringen, da eine Kopie dieses Codes gescannt wird, die an einem entfernten Ort gehostet wird.
Autoren & Mitwirkende
Spenden