Στρατηγική εκμετάλλευσης: Από το WebKit στο SmileBASIC
Το ns2jb ξεκινά με μια προσπάθεια εκμετάλλευσης του WebKit μέσω ενός custom Wi-Fi captive portal, αναζητώντας native control-flow hijack. Επειδή το WebKit χρησιμοποιεί execute-only memory (XOM) και αυστηρές προστασίες PAC/CFI, η προσέγγιση αυτή δεν γενικεύεται εύκολα σε αυθαίρετες κλήσεις IPC. Η έρευνα στρέφεται τότε σε ένα παιχνίδι Switch 1, το SmileBASIC, το οποίο έχει ήδη μια γνωστή ευπάθεια (smilehax) που παρέχει εκτέλεση κώδικα σε userspace. Ένα integer overflow κατά τη διαγραφή στοιχείων από πίνακες δημιουργεί μια memmove που αντιγράφει προηγούμενα bytes, επιτρέποντας την ανάγνωση/εγγραφή αυθαίρετης μνήμης μέσω ενός string array.
Αξιοποίηση του fs sysmodule: ARW και φόρτωση αυθαίρετου κώδικα
Το fs sysmodule εκτελεί κανονικοποίηση διαδρομών με ένα προσωρινό buffer 0x301 bytes. Μια διαδρομή που περιέχει parent-directory με backslash προκαλεί overflow, επιτρέποντας την καταστροφή ενός αντικειμένου BufferedStorage. Αυτό παρέχει ARW σε ένα cache entry, το οποίο μπορεί να χειριστεί για να αντικαταστήσει pointers και να αποκτήσει έλεγχο στη μνήμη του fs. Με το ARW, το exploit αντικαθιστά το ExeFS του loader με ένα προσαρμοσμένο filesystem που περιέχει το αρχικό main.npdm (για τον έλεγχο υπογραφής του developer) και ένα αυθαίρετο εκτελέσιμο αρχείο main. Η δεύτερη υπογραφή του NCA header έχει ήδη υποβληθεί πριν από την αντικατάσταση, επομένως ο loader αποδέχεται το αυθαίρετο binary.
Εκτέλεση κώδικα ως οποιοδήποτε sysmodule
Για να εκτελεστεί κώδικας με τα προνόμια ενός sysmodule, το exploit χρησιμοποιεί το handle του fs για να αποκτήσει ένα KProcess handle (μέσω του IEventNotifier) και το στέλνει στο ro sysmodule. Το NPDM του ro επιτρέπει MapProcessMemory, επιτρέποντας την χαρτογράφηση της μνήμης του fs ως writable. Με αυτό, το ro μπορεί να patch τον κώδικα του fs ή οποιουδήποτε άλλου sysmodule, επιτυγχάνοντας ουσιαστικά εκτέλεση κώδικα με τα προνόμια οποιουδήποτε sysmodule.
Προοπτικές και επόμενα βήματα
Το jailbreak είναι προς το παρόν tethered και περιορίζεται στο fs sysmodule, αλλά η απόδειξη της έννοιας δείχνει μια ισχυρή διαδρομή για πλήρη CFW στο Switch 2. Τα επόμενα βήματα περιλαμβάνουν την μετάβαση του ARW exploit στο WebKit, την αναζήτηση ευπαθειών σε άλλα built-in sysmodules και την αξιοποίηση του native code execution στο fs για απευθείας χειρισμό του crypto hardware (π.χ. NCA4 decryption). Η τεχνική θα μπορούσε επίσης να προσαρμοστεί για το Switch 1, προσφέροντας μια λύση παρόμοια με το modchip χωρίς εξωτερικό υλικό.