Pysa, ένας στατικός αναλυτής για το Python που προσφέρει το Facebook

Το Facebook εισήγαγε έναν στατικό αναλυτή ανοιχτού κώδικα που ονομάζεται "Pysa"»(Python Static Analyzer) που είναι σχεδιαστεί για να εντοπίσει πιθανές ευπάθειες στον κώδικα Python.

Πύσα παρέχει ανάλυση ροής δεδομένων ως αποτέλεσμα της εκτέλεσης κώδικα, η οποία σας επιτρέπει να εντοπίσετε πολλές πιθανές ευπάθειες και προβλήματα απορρήτου που σχετίζεται με τη χρήση δεδομένων σε μέρη όπου δεν πρέπει να εμφανίζονται

Για παράδειγμα, Pysa μπορεί να παρακολουθεί τη χρήση ακατέργαστων εξωτερικών δεδομένων σε κλήσεις που εκτελούν εξωτερικά προγράμματα, σε λειτουργίες αρχείων και σε κατασκευές SQL.

Σήμερα, κοινοποιούμε λεπτομέρειες σχετικά με την Pysa, ένα εργαλείο στατικής ανάλυσης ανοιχτού κώδικα που έχουμε δημιουργήσει για να ανιχνεύσουμε και να αποτρέψουμε ζητήματα ασφάλειας και απορρήτου στον κώδικα Python. Πέρυσι, μοιραστήκαμε πώς δημιουργήσαμε το Zoncolan, ένα εργαλείο στατικής ανάλυσης που μας βοηθά να αναλύσουμε περισσότερες από 100 εκατομμύρια γραμμές κώδικα hack και έχει βοηθήσει τους μηχανικούς να αποτρέψουν χιλιάδες πιθανά προβλήματα ασφάλειας. Αυτή η επιτυχία μας ενέπνευσε να αναπτύξουμε το Pysa, το οποίο είναι αρκτικόλεξο του Python Static Analyzer.

Η Pysa χρησιμοποιεί τους ίδιους αλγόριθμους για να πραγματοποιήσετε στατική ανάλυση και ακόμη και να μοιραστείτε κώδικα με Ζονκόλαν. Όπως ο Zoncolan, η Pysa παρακολουθεί τις ροές δεδομένων μέσω ενός προγράμματος.

Ο χρήστης καθορίζει πηγές (μέρη όπου προέρχονται σημαντικά δεδομένα) καθώς και νεροχύτες (μέρη όπου τα δεδομένα προέλευσης δεν πρέπει να τελειώνουν).

Για εφαρμογές ασφαλείας, οι πιο συνηθισμένοι τύποι πηγών είναι μέρη όπου τα δεδομένα που ελέγχονται από τον χρήστη εισέρχονται στην εφαρμογή, όπως το λεξικό Django.

Οι δέκτες τείνουν να είναι πολύ πιο ποικίλοι, αλλά μπορούν να περιλαμβάνουν API που τρέχουν κώδικα, όπως eval, ή API που έχουν πρόσβαση στο σύστημα αρχείων, όπωςos.open

Η Pysa πραγματοποιεί επαναληπτικούς κύκλους ανάλυσης για τη δημιουργία περιλήψεων για να προσδιορίσετε ποιες συναρτήσεις επιστρέφουν δεδομένα από μια πηγή και ποιες συναρτήσεις έχουν παραμέτρους που τελικά χτυπούν ένα νεροχύτη Εάν η Pysa διαπιστώσει ότι μια πηγή συνδέεται τελικά με έναν νεροχύτη, αναφέρει ένα πρόβλημα. 

Εργασία αναλυτή καταλήγει στην αναγνώριση των εισερχόμενων πηγών δεδομένων και επικίνδυνες κλήσεις, στις οποίες τα αρχικά δεδομένα δεν πρέπει να χρησιμοποιούνται.

Η Pysa παρακολουθεί τη μετάδοση δεδομένων μέσω της αλυσίδας των κλήσεων λειτουργίας και συσχετίζει τα αρχικά δεδομένα με δυνητικά επικίνδυνα μέρη στον κώδικα.

Επειδή χρησιμοποιούμε πλαίσια διακομιστή Python ανοιχτού κώδικα όπως το Django και το Tornado για τα δικά μας προϊόντα, η Pysa μπορεί να αρχίσει να αντιμετωπίζει ζητήματα ασφαλείας σε έργα που χρησιμοποιούν αυτά τα πλαίσια από την πρώτη εκτέλεση. Η χρήση του Pysa για πλαίσια για τα οποία δεν έχουμε κάλυψη είναι γενικά τόσο απλή όσο η προσθήκη μερικών γραμμών διαμόρφωσης για να πούμε στην Pysa πού εισέρχονται τα δεδομένα στο διακομιστή.

Μια κοινή ευπάθεια που εντοπίστηκε από την Pysa είναι ένα ζήτημα ανοιχτής ανακατεύθυνσης (CVE-2019-19775) στην πλατφόρμα ανταλλαγής μηνυμάτων Zulip, που προκαλείται από τη μετάδοση ακαθάριστων εξωτερικών παραμέτρων κατά την εμφάνιση μικρογραφιών.

Οι δυνατότητες παρακολούθησης ροής δεδομένων της Pysa μπορούν να χρησιμοποιηθούν για την επικύρωση της χρήσης επιπλέον πλαισίων και για τον προσδιορισμό της συμμόρφωσης με τις πολιτικές χρήσης δεδομένων χρήστη.

Π.χ. Το Pysa χωρίς πρόσθετες διαμορφώσεις μπορεί να χρησιμοποιηθεί για την επαλήθευση έργων χρησιμοποιώντας τα πλαίσια Τζάνγκο και Tornado. Το Pysa μπορεί επίσης να εντοπίσει κοινές ευπάθειες σε εφαρμογές ιστού, όπως υποκατάσταση SQL και δέσμες ενεργειών μεταξύ ιστότοπων (XSS).

Στο Facebook, ο αναλυτής χρησιμοποιείται για την επαλήθευση του κωδικού της υπηρεσίας Instagram. Κατά το πρώτο τρίμηνο του 2020, η Pysa βοήθησε στον εντοπισμό του 44% όλων των προβλημάτων που εντοπίστηκαν από μηχανικούς του Facebook στη βάση κώδικα του διακομιστή του Instagram.

Στη διαδικασία εντοπίστηκαν συνολικά 330 προβλήματα της αυτόματης επαλήθευσης αλλαγών χρησιμοποιώντας Pysa, 49 από τα οποία αξιολογήθηκαν ως σημαντικά και 15 (131%) δεν ήταν επικίνδυνα. Σε 40 περιπτώσεις (150%) τα προβλήματα αποδόθηκαν σε ψευδώς θετικά.

Το νέο πρόγραμμα ανάλυσης έχει σχεδιαστεί ως πρόσθετο στο κιτ εργαλείων επαλήθευσης τύπου Pyre και τοποθετείται στο αποθετήριο σας. Ο κωδικός κυκλοφορεί υπό την άδεια MIT.

Τελικά αν θέλετε να μάθετε περισσότερα για αυτό, μπορείτε να ελέγξετε τις λεπτομέρειες στην αρχική ανάρτηση. Ο σύνδεσμος είναι αυτό.


Αφήστε το σχόλιό σας

Η διεύθυνση email σας δεν θα δημοσιευθεί. Τα υποχρεωτικά πεδία σημειώνονται με *

*

*

  1. Υπεύθυνος για τα δεδομένα: Miguel Ángel Gatón
  2. Σκοπός των δεδομένων: Έλεγχος SPAM, διαχείριση σχολίων.
  3. Νομιμοποίηση: Η συγκατάθεσή σας
  4. Κοινοποίηση των δεδομένων: Τα δεδομένα δεν θα κοινοποιούνται σε τρίτους, εκτός από νομική υποχρέωση.
  5. Αποθήκευση δεδομένων: Βάση δεδομένων που φιλοξενείται από τα δίκτυα Occentus (ΕΕ)
  6. Δικαιώματα: Ανά πάσα στιγμή μπορείτε να περιορίσετε, να ανακτήσετε και να διαγράψετε τις πληροφορίες σας.