Σε καθε αναλυση μιας BSOD, οταν ο debugger ενημερωνει πως καποιος driver της Microsoft ειναι υπευθυνος για το προβλημα, η πρωτη μου σκεψη ειναι “καλα, θα το ψαξω καλυτερα”. Και οπως γραφω και στα προηγουμενα posts επι του θεματος, 99% δεν φταιει καποιος driver ο οποιος ειναι υπογεγραμμενος απο την Microsoft. Αν κατι τετοιο ακουγεται αρκετα απολυτο, καλως ή κακως ισχυει και μια ματια σε μπλε οθονες που εχουν αναλυθει σωστα θα πεισει καθε καχυποπτο.
Παρ ολα αυτα, κατι λειπει για να ολοκληρωθει το puzzle. Ενα κομματι που του αξιζει να παρει τον τιτλο του 1%, ειναι το bug του win32k.sys που ανακαλυψε πριν απο 3 βδομαδες ο webDEViL. Πιο συγκεκριμενα, σε περιπτωση που το υψος ενος iframe ειναι αρκετα μεγαλο, αυτο εχει σαν αποτελεσμα το loading της συγκεκριμενης σελιδας να οδηγει αυτοματα σε μπλε οθονη με πραγματικο φταιχτη τον win32k.sys. Ολα αυτα μονο σε Windows 7, x64. Ο λογος που δεν εχει γινει ευρεως γνωστο το συγκεκριμενο bug ειναι επειδη δεν εχει επηρρεασει πολλους χρηστες, καθως μπορει να εμφανιστει μονο στην περιπτωση που το συγκεκριμενο iframe φορτωθει στον browser της Apple, Safari. Σιγα, τι εγινε, θα αναφωνησει κανεις, το πολυ πολυ οι 3 χρηστες στον κοσμο, που χρησιμοποιουν Safari σε Windows, να ξυπνησουν.
Αξιζει να σημειωθει πως παρα τα οσα γραφτηκαν στις περισσοτερες σελιδες που αναφερθηκαν στο προβλημα, δεν μιλαμε για καποιο bug στο WebKit το οποιο χρησιμοποιει ο Safari και ο Chrome, αλλα σε ενα μαθηματικο λαθος στo NineGrid rendering, το οποιο ειναι υπευθυνο για το resizing εικονων.
Οπως ηταν φυσικο επομενο βημα ηταν να βρεθει εαν ειναι δυνατον να χρησιμοποιηθει το συγκεκριμενο bug για τη δημιουργια καποιου exploit. Εαν κατι τετοιο γινει εφικτο, ο επιτιθεμενος αποκτα αυτοματα προσβαση στο kernel των Windows, οπου ανηκει και ο win32k.sys, με οτι συνεπειες εχει αυτο (βλεπε full compromise του υπολογιστη).
Ενας απο τους πλεον ειδικους σε windows internals θεματα, το εψαξε πιο βαθια και κατεληξε στο εξης συμπερασμα, το οποιο περιεχει και τη εν μερη λυση του προβληματος:
Webkit browsers (along with IE8 — but not IE9, it would seem) attempt to render HTML elements on the page using the native skin of the OS. In this case, in the drawControl function, DrawThemeBackground is called, which handles skinning of OS controls.
Με αλλα λογια, εαν δεν γινεται χρηση καποιου theme στο windows 7 x64 μηχανημα, το bug δεν μπορει να εμφανιστει.
Tην ωρα που γραφονται αυτες οι γραμμες η Microsoft δεν εχει καποιο διαθεσιμο patch.