Softwareentwicklung: Facebook veröffentlicht Open-Source-Tool zur Codeanalyse

Das nun quelloffene Pyra nutzt das Unternehmen intern zum Überprüfen des Python-Servercodes von Instagram.

Lesezeit: 2 Min.
In Pocket speichern
vorlesen Druckansicht Kommentare lesen 11 Beiträge
Von
  • Rainald Menge-Sonnentag

Facebook hat mit Pysa ein Open-Source-Werkzeug zur statischen Codeanalyse von Python-Anwendungen veröffentlicht. Der Name steht für Python Static Analyzer, und das Tool ist von Zoncolan inspiriert, einem quelloffenen Analysewerkzeug für Facebooks eigene Programmiersprache Hack.

Pysa untersucht den Datenfluss innerhalb eines Programms, um potenzielle Probleme aufzudecken. Als Grundlage dient der Typechecker Pyre, den das Unternehmen vor zwei Jahren als Open-Source-Projekt freigegeben hat. Er hilft bei der statischen Typisierung, die Python von Haus aus als dynamisch typisierte Sprache nicht vorsieht.

Bei der statischen Analyse untersucht ein Werkzeug den Quellcode, um potenzielle Fehler zu und Ursachen von Schwachstellen zu finden. Wichtige Werkzeuge in dem Bereich sind Linter wie ESLint für JavaScript oder PyLint für Python.

Pysa konzentriert sich darauf, wie die Daten innerhalb der Anwendung fließen. Das Tool testet unter anderem, ob Daten in einer Anwendung oder einem Modul landen, in dem sie nichts verloren haben. Dadurch soll Pysa unter anderem Privacy-Verstöße aufdecken. Über die Analyse versucht das Tool zudem typische Webschwachstellen wie SQL Injection und XSS aufzudecken, die sich auf Platz 1 beziehungsweise 7 der aktuellen OWASP Top 10 befinden.

Facebook selbst nutzt die Anwendung hausintern für die Instagram-Server, die laut dem Beitrag zur Freigabe von Pysa aus mehreren Millionen Zeilen Python-Code bestehen. Der Analyseaufwand spiegelt sich durchaus in der Zeit wider, die das Tool wohl zum Testen von vorgeschlagenen Codeänderungen benötigt: immerhin etwa eine Stunde, was aber im Vergleich zu manuellen Tests verschwindend gering ist. Die Ergebnisse landen je nach gefundenen Problemen beim Entwicklungs- oder Security-Team.

In die Entwicklung von Pysa sind die Erkenntnisse aus dem Zoncolan-Werkzeug eingeflossen. Letzteres zielt auf die von Facebook entwickelte Programmiersprache Hack, von der sich laut den Angaben aus dem Beitrag zu Zoncolan mehr als hundert Millionen Zeilen in der Web-Codebasis von Facebook finden. Hack ist ein Fork von PHP, der aber außerhalb des Unternehmens ebenso kaum eine Rolle spielt wie die darauf ausgelegte Hip Hop Virtual Machine.

Pysa nutzt einige der Algorithmen von Zoncolan und bietet eine ähnliche Datenflussanalyse. Es unterscheidet zwischen Datenquellen und -senken, also den Stellen, an denen die Daten entstehen, und denen, wo sie landen beziehungsweise eben nicht landen sollen. Pysa führt die Analyse in iterativen Analyserunden durch, in denen es ermittelt, welche Funktionen Daten aus Quellen auslesen und welche Funktionen Parameter haben, über die schließlich die Daten in einer Senke landen. Die Ergebnisse pflegt es als Issues mit jeweils potenziell mehreren Ästen für die Quellen und Senken.

Die Issues für den Datenfluss haben eine Baumstruktur.

(Bild: Facebook)

Das Werkzeug ist auf eine kritische Analyse ausgelegt, sodass es möglichst wenige Schwachstellen übersieht (False Negatives), dafür aber gelegentliche Fehlalarme auslöst (False Positives). Letztere versucht Pysa durch Sanitzers sowie Metadaten als Gegenmaßnahmen zu reduzieren.

Weitere Details dazu sowie einige Codebeispiele finden sich in der Ankündigung von Pysa. Das Tool teilt sich auf GitHub ein Repository mit Pyre, auf das es maßgeblich aufsetzt. Es ist aber eine eigenständige Anwendung.

(rme)