Η αρχιτεκτονική αστοχία στο WapPushOverSms
Η ρίζα του προβλήματος εντοπίζεται στη μέθοδο decodeWapPdu() της κλάσης WapPushOverSms.java. Το σύστημα ανακτά το μήκος του WAP header ως uintvar (long), το οποίο στη συνέχεια μετατρέπεται σε int χωρίς να προηγηθεί έλεγχος ορίων (bounds check). Όταν το header περιέχει τιμές που αντιστοιχούν σε αρνητικούς αριθμούς μετά το cast, η προσπάθεια δέσμευσης μνήμης για τον πίνακα byte[] προκαλεί NegativeArraySizeException.
Επιπτώσεις και κλιμάκωση της επίθεσης
Το πρόβλημα δεν περιορίζεται σε μια στιγμιαία κατάρρευση (crash). Η επανάληψη της επίθεσης προκαλεί αλλοίωση (corruption) στη βάση δεδομένων SQLite που διαχειρίζεται τα SMS. Αυτό μετατρέπει ένα προσωρινό σφάλμα σε μόνιμη κατάσταση, όπου η διεργασία com.android.phone αποτυγχάνει κατά την εκκίνηση της συσκευής, καθιστώντας το τηλέφωνο μη λειτουργικό για υπηρεσίες τηλεφωνίας.
Προκλήσεις αποκατάστασης και κανονιστικό πλαίσιο
Η αποκατάσταση είναι ιδιαίτερα περίπλοκη, καθώς η συσκευή μπορεί να συνεχίσει να λαμβάνει τα μηνύματα που προκαλούν το crash αμέσως μετά από ένα factory reset, εφόσον το δίκτυο επιχειρεί επαναποστολή (redelivery). Η αδυναμία κλήσης αριθμών έκτακτης ανάγκης (όπως το 000) καθιστά το ζήτημα κρίσιμο, καθώς σε πολλές δικαιοδοσίες, η απώλεια αυτής της δυνατότητας επιβάλλει τον αποκλεισμό της συσκευής από το δίκτυο από τους παρόχους.
Η στάση της Google και η ανάγκη για patch
Παρά την παροχή έτοιμου κώδικα για τον έλεγχο των ορίων (bounds check) από τον ερευνητή, η Google ταξινόμησε το ζήτημα ως μη ασφαλείας (Non-Security Issue). Η έλλειψη διορθωτικής ενέργειας μετά από 90 ημέρες οδήγησε στη δημοσιοποίηση της ευπάθειας, υπογραμμίζοντας την ανάγκη για αυστηρότερους ελέγχους εισόδου σε κρίσιμα συστήματα τηλεφωνίας.