Το αποθετήριο PyPI περιέχει δυνητικά ανασφαλή κώδικα

Ερευνητές από το Πανεπιστήμιο του Τούρκου (Φινλανδία) γίνονται γνωστά πρόσφατα τα αποτελέσματα μιας ανάλυσης έκαναν στα πακέτα στο αποθετήριο από την PyPI για τη χρήση δυνητικά επικίνδυνων κατασκευών που θα μπορούσαν να δημιουργήσουν τρωτά σημεία. Στην ανάλυση ότι πραγματοποιήθηκαν περίπου 197.000 πακέτα και εντοπίστηκαν 749.000 πιθανά προβλήματα ασφαλείας.

Με άλλα λόγια, το 46% των πακέτων έχουν τουλάχιστον ένα από αυτά τα προβλήματα, εκ των οποίων μεταξύ των πιο συνηθισμένων προβλημάτων είναι αυτά που σχετίζονται με τον χειρισμό εξαιρέσεων και τη χρήση δυνατοτήτων υποκατάστασης κώδικα.

Από τα 749 χιλιάδες προβλήματα που εντοπίστηκαν, 442 χιλιάδες (41%) σημειώθηκαν ως ανήλικοι, 227 χιλιάδες (30%) ως μέτρια επικίνδυνα και 80 χιλιάδες (11%) ως επικίνδυνα.

Το σύνολο δεδομένων βασίζεται σε ένα στιγμιότυπο όλων των πακέτων που είναι αποθηκευμένα στο ευρετήριο πακέτων Python (PyPI) ...

Όσον αφορά τους τύπους προβλημάτων, όπως ο χειρισμός εξαιρέσεων και οι διαφορετικές ενέσεις κώδικα ήταν τα πιο κοινά προβλήματα. Με αυτή την έννοια, η ενότητα νημάτων ξεχωρίζει. Λαμβάνοντας υπόψη τα γενικά μικρά μεγέθη πακέτων, οι μετρήσεις μεγέθους λογισμικού δεν προβλέπουν καλά τον αριθμό των ζητημάτων που αποκαλύπτονται μέσω ανάλυσης. 

Ορισμένα πακέτα δεν είναι συνηθισμένα και περιέχουν χιλιάδες προβλήματα: Για παράδειγμα, βρέθηκαν 2589 προβλήματα στο πακέτο PyGGI, που σχετίζονται κυρίως με τη χρήση της κατασκευής "try-only-pass" και 2356 προβλήματα εντοπίστηκαν στο πακέτο appengine-sdk. Υπάρχουν επίσης πολλά προβλήματα στα πακέτα genie.libs.ops, pbcore και genie.libs.parser.

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

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

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

Ο αναλυτής θεωρεί επίσης ότι οποιαδήποτε εξωτερική επεξεργασία δεδομένων σε μη ασφαλείς λειτουργίες όπως τουρσί, yaml.load, υποεπεξεργασία και eval Είναι ένα πρόβλημα, αλλά αυτή η χρήση δεν συνδέεται απαραίτητα με ένα θέμα ευπάθειας και, στην πραγματικότητα, η χρήση αυτών των λειτουργιών μπορεί να είναι ένα πρόβλημα που εφαρμόζεται χωρίς απειλή για την ασφάλεια.

Μεταξύ των ελέγχων που χρησιμοποιήθηκαν στη μελέτη:

  • Χρήση δυνητικά μη ασφαλών συναρτήσεων exec, mktemp, eval, mark_safe κ.λπ.
  • Ανασφαλής διαμόρφωση των δικαιωμάτων πρόσβασης αρχείων.
  • Συνδέστε ένα βύσμα δικτύου σε όλες τις διεπαφές δικτύου.
  • Χρήση κωδικών πρόσβασης και κρυπτογραφημένων κλειδιών.
  • Χρήση προκαθορισμένου προσωρινού καταλόγου.
  • Χρήση pass and continue σε χειριστές εξαίρεσης all-style.
  • Εκκινήστε εφαρμογές ιστού βάσει του πλαισίου ιστού Flask με ενεργοποιημένη τη λειτουργία εντοπισμού σφαλμάτων.
  • Χρησιμοποιώντας ανασφαλείς μεθόδους για την αποστείρωση δεδομένων.
  • Χρησιμοποιώντας λειτουργίες κατακερματισμού MD2, MD4, MD5 και SHA1.
  • Χρήση ανασφαλών κωδικοποιήσεων DES και τρόπων κρυπτογράφησης.
  • Χρησιμοποιώντας μια ανασφαλή εφαρμογή HTTPSConnection σε ορισμένες εκδόσεις της Python.
  • Καθορισμός του αρχείου: // schema στο urlopen.
  • Χρησιμοποιήστε ψευδοτυχαίες γεννήτριες αριθμών κατά την εκτέλεση κρυπτογραφικών εργασιών.
  • Χρησιμοποιώντας το πρωτόκολλο Telnet.
  • Χρήση ανασφαλών αναλυτών XML.

Επιπλέον, αναφέρεται ο εντοπισμός 8 κακόβουλων πακέτων στον κατάλογο PyPI. Τα πακέτα προβλημάτων κατεβάστηκαν περισσότερες από 30 φορές πριν αφαιρεθούν. Για να αποκρύψουμε κακόβουλη δραστηριότητα και να αποφύγουμε απλές στατικές προειδοποιήσεις αναλυτή σε πακέτα, χρησιμοποιήσαμε κωδικοποίηση μπλοκ με κώδικα χρησιμοποιώντας τη μορφή Base64 και σταδιακά την εκτέλεσή του μετά την αποκωδικοποίηση καλώντας το eval.

Ο κωδικός που βρέθηκε στο πακέτο noblesse, genesisbot, είναι, suff, noblesse2 και noblessev2 για να υποκλέψετε αριθμούς πιστωτικών καρτών και κωδικούς πρόσβασης που είναι αποθηκευμένοι στα προγράμματα περιήγησης Chrome και Edge, καθώς και να μεταφέρετε μάρκες λογαριασμού από την εφαρμογή Discord και να στείλετε δεδομένα από το σύστημα, συμπεριλαμβανομένων στιγμιότυπων οθόνης περιεχομένου οθόνης. … Τα πακέτα pytagora και pytagora2 περιελάμβαναν τη δυνατότητα λήψης και εκτέλεσης εκτελέσιμου κώδικα τρίτου μέρους.

Τελικά αν ενδιαφέρεστε να μάθετε περισσότερα γι 'αυτό, μπορείτε να ελέγξετε τις λεπτομέρειες Στον ακόλουθο σύνδεσμο.


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

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

*

*

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