Η πρόκληση του κλειδωμένου συστήματος

Το σύστημα πλοήγησης TomTom Carminat LIVE, που ενσωματώνεται σε οχήματα της Renault, παρουσιάζει μια ιδιόμορφη αρχιτεκτονική εξάρτηση: η πρόσβαση στο μενού ρυθμίσεων ώρας απαιτεί την παρουσία μιας έγκυρης κάρτας SD με χάρτες. Χωρίς αυτήν, το σύστημα δεν φορτώνει καν το αντίστοιχο applet, καθιστώντας αδύνατη τη ρύθμιση του ρολογιού. Η προσπάθεια του κατόχου να παρακάμψει αυτόν τον περιορισμό οδήγησε σε μια βαθιά ανάλυση του firmware.

Reverse engineering και εξομοίωση

Μετά την εξαγωγή του root filesystem από το αρχείο ttsystem (το οποίο περιείχε ένα ext3 image), ο ερευνητής χρησιμοποίησε το QEMU για να εξομοιώσει το περιβάλλον Linux 2.6.28.10. Η ανάλυση αποκάλυψε ότι το σύστημα χρησιμοποιούσε αυστηρά mount flags (noexec, ro) για να αποτρέψει την εκτέλεση μη εξουσιοδοτημένου κώδικα από την κάρτα SD. Ωστόσο, η ύπαρξη ενός parser για το master.script προσέφερε μια χαραμάδα.

Εκμετάλλευση μέσω core_pattern

Η λύση ήρθε από μια τεχνική που συναντάται συχνά σε kernel exploits. Εκμεταλλευόμενος ένα path traversal vulnerability στον parser του master.script, ο ερευνητής μπόρεσε να γράψει στο /proc/sys/kernel/core_pattern. Ορίζοντας το pattern ώστε να εκτελεί ένα script (|/bin/sh /media/sdcard/payload.sh) κάθε φορά που μια διεργασία καταρρέει, και προκαλώντας τεχνητά ένα SIGABRT στο dbus-monitor, πέτυχε την εκτέλεση κώδικα με δικαιώματα root.

Τελική διόρθωση

Με την απόκτηση πρόσβασης root, η αλλαγή της ώρας έγινε μια απλή υπόθεση τροποποίησης του αρχείου /mnt/flash/settings.dat. Το σύστημα αποθήκευε το offset της ώρας σε λεπτά, το οποίο ο ερευνητής άλλαξε χειροκίνητα, επιλύοντας το πρόβλημα του συγχρονισμού χωρίς την ανάγκη αγοράς της κάρτας SD.