Συμβουλή ασφαλείας: Σφάλμα ασφαλείας PHP

18 Φεβρουαρίου 2022 | Σύμβουλοι Επιχειρήσεων, Blog Συμβουλή ασφαλείας: Σφάλμα ασφαλείας PHP


συμβουλευτική σημείωση ασφαλείας php

Φεβρουάριος 18th, 2022: Εάν χρησιμοποιείτε PHP στο δίκτυό σας, ελέγξτε ότι χρησιμοποιείτε τις πιο πρόσφατες εκδόσεις, αυτήν τη στιγμή 7.4.28 ή 8.1.3Κυκλοφόρησε χθες [2022-02-17], αυτή η έκδοση διορθώνει διάφορα σφάλματα κακής διαχείρισης μνήμης, Συμπεριλαμβανομένων των CVE-2021-21708, το οποίο είναι ένα σφάλμα χρήσης μετά την αφαίρεση σε μια συνάρτηση που ονομάζεται php_filter_float().

Ένα proof-of-concept exploit που βασίζεται στη χρήση PHP για την υποβολή ερωτημάτων σε μια βάση δεδομένων δείχνει ότι το σφάλμα μπορεί να χρησιμοποιηθεί για να καταρρεύσει η διεργασία PHP, επομένως ένα λειτουργικό Άρνηση παροχής υπηρεσίας (DoS) Η επίθεση είναι ήδη γνωστή ως πιθανή.

Απομακρυσμένη εκτέλεση κώδικα (RCE) είναι επίσης πιθανό, ωστόσο, δεν έχει ακόμη ανακαλυφθεί κώδικας εκμετάλλευσης που να εκτελεί RCE. Εάν γίνει διαθέσιμο ένα εκμετάλλευση RCE, τότε τα δεδομένα που υποβάλλονται εκτός των συστημάτων PHP της εταιρείας μπορούν όχι μόνο να καταρρεύσουν το πρόγραμμα PHP στον υπολογιστή σας, αλλά και να αποκτήσουν τον έλεγχό του στη διαδικασία, κάτι που συνήθως οδηγεί σε εισβολή στο δίκτυο, αποβολή δεδομένων, malware εμφύτευση ή συνδυασμό όλων αυτών.

Μη έγκυρος κωδικός επικύρωσης

Οι συναρτήσεις φίλτρου PHP έχουν σχεδιαστεί για να επικυρώνουν τα εισερχόμενα δεδομένα, για παράδειγμα, για να διασφαλίσουν ότι εάν περιμένετε από κάποιον να σας στείλει έναν ακέραιο αριθμό (π.χ. 5, 7, 11), δεν σας έχει στείλει μια συμβολοσειρά κειμένου που δεν μπορεί να μετατραπεί αξιόπιστα σε ακέραιο αριθμό, όπως 3.14159 or 3/16 inch.

The CVE-2021-21708 Το σφάλμα είναι μέρος του κώδικα που ελέγχει για έγκυρους αριθμούς κινητής υποδιαστολής, έναν όρο για αυτό που πιθανώς ονομάζατε «πραγματικούς αριθμούς» ή «δεκαδικούς» στο σχολείο.

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

Οι αριθμητικές συναρτήσεις φίλτρου της PHP σάς επιτρέπουν να ελέγξετε όχι μόνο ότι ο εισερχόμενος αριθμός είναι έγκυρος, αλλά και ότι βρίσκεται εντός ενός καθορισμένου εύρους, όπως για παράδειγμα να βεβαιωθείτε ότι δεν είναι μεγαλύτερος από 2.71828 ή ότι είναι μεταξύ -1 και 1.

Εάν ο αριθμός που εμφανίζεται είναι ήδη ένας αριθμός κινητής υποδιαστολής (δεκαδικός), τότε ο κώδικας ακολουθεί την παρακάτω διαδικασία, όπου ο παλιός κώδικας PHP (8.1.2) βρίσκεται στα αριστερά και ο νέος κώδικας (8.1.3) στα δεξιά. (Δεν υπάρχει σφάλμα εδώ, επομένως οι δύο εκδόσεις είναι πανομοιότυπες.)

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

Σε περίπτωση που αναρωτιέστε, το περίεργο όνομα zval_ptr_dtor() είναι συντομογραφία για Καταστροφέας δείκτη εσωτερικής μνήμης PHP:

Εάν ο αριθμός εμφανίζεται ως ακέραιος αριθμός, χωρίς δεκαδικό μέρος, χρησιμοποιείται ένας ελαφρώς διαφορετικός κώδικας.

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

Η ακολουθία ήταν «ανακατανομή της μνήμης που χρησιμοποιείται από αυτήν την τιμή PHP, στη συνέχεια εκτέλεση του ελέγχου και έξοδος εάν αποτύχει, αφήνοντας πίσω ένα αντικείμενο PHP που αναφέρεται στη μνήμη που σύντομα θα κατανεμηθεί σε κάτι άλλο και έτσι αργότερα θα προκαλέσει μια σύγκρουση χρήσης μετά την απελευθέρωση· αλλά εάν ο έλεγχος είναι εντάξει, τότε ανακατανομή νέου χώρου αποθήκευσης για τον αριθμό».

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

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

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

Η «διαφορετική» άποψη (ορολογία για διαφορά κώδικα) που δημιουργήθηκε από το Visual Studio Code δείχνει με σαφήνεια πώς η γραμμή που σημειώθηκε με κόκκινο στην έκδοση 8.1.2 μετακινήθηκε προς τα κάτω στο πράσινο σημείο στην έκδοση 8.1.3:

Τι να κάνω?

  • Σάρωση του δικτύου σας για την ύπαρξη συστημάτων PHP που λειτουργούν στο περιβάλλον σας, ώστε να βεβαιωθείτε ότι έχουν αναβαθμιστεί στην έκδοση 8.1.3.
  • Αν είστε χρήστης PHP, ενημέρωση σε 8.1.3Εάν χρησιμοποιείτε μια διανομή Linux που διαχειρίζεται PHP για εσάς, ελέγξτε τη διανομή σας για λεπτομέρειες.
  • Αν είστε προγραμματιστής, να θυμάστε ότι ο κώδικας γραμμένος σε C απαιτεί να προσέχετε τη μνήμη σας παντού και συνεχώς, έτσι ώστε καλά κρυμμένα σφάλματα όπως αυτό να μην εισχωρήσουν απαρατήρητα.
  • Αν είστε προγραμματιστής, προσπαθήστε να γράψετε τον κώδικά σας με τρόπο που να μειώνει τον αριθμό των τρόπων με τους οποίους μπορούν να εισαχθούν σφάλματα από τους κωδικοποιητές που σας ακολουθούν.

Αναμένεται μελλοντική κλιμάκωση της κρισιμότητας

Οι επιθέσεις DDOS αυτού του είδους είναι συχνά εκμεταλλεύσιμες για την Απομακρυσμένη Εκτέλεση Κώδικα (RCE). Εάν αναπτυχθεί ένα exploit τύπου RCE, η εταιρεία σας θα έχει πολύ λίγο χρόνο για να διορθώσει αυτό το κενό ασφαλείας. Η CyberHoot σας προτείνει να αντιμετωπίσετε αυτόν τον κίνδυνο κατά προτεραιότητα και να το διορθώσετε εντός των επόμενων 48 έως 72 ωρών, όπου είναι δυνατόν. Θα συνεχίσουμε να παρακολουθούμε την κατάσταση και θα δημοσιεύσουμε μια ενημέρωση εάν και όταν ένα RCE καταστεί διαθέσιμο. Λάβετε μέτρα τώρα για να το αξιολογήσετε και να το διορθώσετε.

Πηγή

NakedSecurity – Sophos

Ασφαλίστε την επιχείρησή σας με το CyberHoot σήμερα!!!


Εγγραφείτε τώρα

Τελευταία Blogs

Μείνετε ενημερωμένοι με τις τελευταίες εξελίξεις πληροφορίες ασφαλείας

Ανακαλύψτε και μοιραστείτε τις τελευταίες τάσεις, συμβουλές και βέλτιστες πρακτικές στον τομέα της κυβερνοασφάλειας – μαζί με νέες απειλές που πρέπει να προσέξετε.

Όταν ο «Διευθύνων Σύμβουλος» σας καλεί και σας ζητά να μεταφέρετε χρήματα γρήγορα

Όταν ο «Διευθύνων Σύμβουλος» σας καλεί και σας ζητά να μεταφέρετε χρήματα γρήγορα

Ένας οδηγός για τον εντοπισμό απάτης πλαστοπροσωπίας ανώτερων στελεχών πριν ο ψεύτικος διευθύνων σύμβουλος λάβει ένα πραγματικό τραπεζικό έμβασμα. Αυτό...

Διαβάστε περισσότερα
Όταν η Επίθεση Μοιάζει Ακριβώς με Εσένα

Όταν η Επίθεση Μοιάζει Ακριβώς με Εσένα

Η Τεχνητή Νοημοσύνη (ή AI) κάνει τα email ηλεκτρονικού "ψαρέματος" (phishing) πιο έξυπνα, το κακόβουλο λογισμικό πιο ύπουλο και την κλοπή διαπιστευτηρίων ευκολότερη...

Διαβάστε περισσότερα
Οι κυβερνοεγκληματίες εκμεταλλεύονται το DocuSign με προσαρμόσιμα πρότυπα ηλεκτρονικού "ψαρέματος" (phishing)

Οι κυβερνοεγκληματίες εκμεταλλεύονται το DocuSign με προσαρμόσιμα πρότυπα ηλεκτρονικού "ψαρέματος" (phishing)

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

Διαβάστε περισσότερα