PDA

Επιστροφή στο Forum : Η Oracle θα σταματήσει την υποστήριξη Serialization στην Java επειδή αποτελεί την αιτία για πολλές ευπάθειες της



nnn
29-05-18, 13:40
194094Η Oracle σχεδιάζει να εγκαταλείψει την υποστήριξη για data serialization/deserialization από το κύριο σώμα της γλώσσας Java, σύμφωνα με τον Mark Reinhold, κύριο υπεύθυνο της πλατφόρμας Java στην Oracle.

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



Serializing and deserializing data is not a problem by itself, or when the source of the data is known to be safe. These operations become dangerous when an app works with user-supplied data. For the rest of this article, we'll be referring to this latter case when we're going to refer to serialization and deserialization operations.

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

Οι επιθέσεις μέσω λειτουργιών serialization/deserialization είναι γνωστές εδώ και χρόνια, αλλά έγιναν πολύ γνωστές στις αρχές του 2015 όταν δύο ερευνητές - ο Chris Frohoff και ο Gabriel Lawrence - βρήκαν ένα deserialization flaw στη συλλογή Apache Commons, μια πολύ δημοφιλή Java εφαρμογή.

Οι ερευνητές από την Foxglove Security επέκτειναν την αρχική εργασία στα τέλη του 2015, δείχνοντας πώς ένας επιτιθέμενος θα μπορούσε να χρησιμοποιήσει ένα deserialization flawς σε εφαρμογές Java, όπου οι προγραμματιστές χρησιμοποίησαν λανθασμένα τη βιβλιοθήκη Apache Commons Collection για να χειριστούν τις deserialization λειτουργίες..

Τα πειράματά τους έδειξαν ότι ένας εισβολέας θα μπορούσε να μεταφορτώσει κακόβουλα δεδομένα σε δημοφιλείς εφαρμογές Java όπως WebLogic, WebSphere, JBoss, Jenkins και OpenNMS. Αυτά τα δεδομένα θα είναι σειριοποιημένα και αποθηκευμένα σε μια βάση δεδομένων ή στη μνήμη, αλλά όταν η εφαρμογή θα την επαναφέρει (deserializing), η εφαρμογή θα εκτελεί επίσης επιπλέον κακόβουλο κώδικα.

Το ελάττωμα έπληξε το οικοσύστημα Java το 2016, καθώς επηρέασε και άλλες 70 βιβλιοθήκες Java και μάλιστα χρησιμοποιήθηκε για να θέσει σε κίνδυνο τους διακομιστές του PayPal . Οργανισμοί όπως το Apache , η Oracle , η Cisco , η Red Hat , η Jenkins , η VMWare , η IBM , η Intel , η Adobe , η HP και η SolarWinds.



That particular Java deserialization flaw was so dangerous that Google engineers banded together in their free time to repair open-source Java libraries and limit the flaw's reach, patching over 2,600 projects. Internally at Google, the flaw was referenced to as Mad Gadget, but the world referred to it as the Java Apocalypse.


Ο Reinhold είπε ότι τα προβλήματα της λειτουργίας serialization/deserialization θα μπορούσαν να είναι υπεύθυνα για ένα τρίτο ή ακόμα και το μισό από όλα τα γνωστά Java ελαττώματα.

Πηγή : Bleeping Computer (https://www.bleepingcomputer.com/news/security/oracle-plans-to-drop-java-serialization-support-the-source-of-most-security-bugs/)

machine translated by Google translate

DVader
29-05-18, 15:13
Και αντί να το διορθώσουν επειδή το φτιάξανε λάθος ...το καταργούν .. ή έστω να το επανασχεδιάσουν ..

WAntilles
29-05-18, 15:30
Μήπως μας έχουν φάει οι διαφορετικές αρχιτεκτονικές, με τις διαφορετικού εύρους ίδιου τύπου μεταβλητές, όταν πρόκειται για records όχι στη RAM, αλλά σε μέσο αποθήκευσης (τα λεγόμενα "packed records");

Δεν τα κάνουμε, λέω εγώ, τα packed records, ανεξαρτήτως αρχιτεκτονικής 64-bit να τελειώνουμε;

Ούτως ή άλλως, όποιος εμμονικά εμμένει ύστερα από τόσα χρόνια σε 32-bit codebase, ας πρόσεχε.

tsigarid
29-05-18, 17:36
Εγώ γιατί διαβάζω αυτή την είδηση να λέει "δεν μπορούμε να φιλτράρουμε 100% αποδοτικά και με ασφάλεια οποιοδήποτε user input, οπότε ένα σημείο στο οποίο μας δημιουργεί πρόβλημα, το αφαιρούμε";

Jimi
29-05-18, 19:06
Αυτή τη λογική "πονάει κεφάλη, κόψει κεφάλη" δεν την καταλαβα ποτέ. Ωραία, άντε και την αφαιρούν.Μετά θα κάτσουν μερικοί devs να γράψουν κάτι καλύτερο για να καλύψουν το κενό και θα έρθει μετά η κυρα-Oracle (κεριά και λιβάνια) να το ενσωματώσει στο τσάμπα ή απλά προσφέροντας δουλίτσα στα παιδία που το έφτιαξαν. Είναι πάγια τακτική σας λέω.

dkgr_ser
29-05-18, 20:14
Απο το αρχικό άρθρο φαίνεται ότι ναι μεν ο Reinhold θέλει να υπάρξει πρόοδος προς μια σωστή κατεύθυνση, αλλά μάλλον δεν έχει ιδέα ποια είναι αυτή. Προφανώς το serialization δε γίνεται να καταργηθεί και για το λόγο αυτό μιλάει για μεταφορά του από τον πυρήνα της γλώσσας σε κάποια βιβλιοθήκη επέκτασης.

Το πρόβλημα όμως δεν είναι η υλοποίηση του αυτόματου serialization που υπάρχει στη Java. Στην τελική όποιος θέλει μπορεί απλά να κάνει manual serialization κάθε object του. Το πρόβλημα είναι ότι κατά το deserialization οι εφαρμογές θα πρέπει να περιέχουν κώδικα που θα ελέγχει αν όντως είναι valid αυτά που φορτώθηκαν, είτε η διαδικασία γίνεται στο μεγαλύτερο μέρος αυτόματα είτε όχι. Στη C δηλαδή που κάνεις serialization/deserialization με το χέρι, δε σου ξεφεύγει ποτέ κανένας έλεγχος; Επίσης όταν κάνεις serialization σε object που λαμβάνει δεδομένα χρηστών και αυτό βρίσκεται πριν από κάποιο layer επικύρωσης, απλά παίζεις με τη φωτιά...

@ ADSLgr.com All rights reserved.