"Any method to set the target of sysret to a non-canonical address can potentially be used"
Könnyű mondani, de ezt nem lehet kivitelezni. A syscall hívásakor nincs rá mód, hogy ring3-ról befolyásold. Plusz, ha meghívódik a GP handler, az minden értelmes kernelben azzal kezd, hogy kivágja a hibát okozó processt a francba. Márpedig hiába szerzel supervisor privilégiumot, ha utána nincs kódod, ami használja... A GPR-ekben tárolható kódmennyiség szánalmasan kevés, és nincs hova ugrani belőle. Plusz, még azt is meg kéne oldanod (amiről a cikk mélyen hallgat), hogy a vezérlés nem adódik csak úgy a lementett GPR-ekre, ennek kivitelezése ráadásul szinte lehetetlen, mivel elég gyorsan törlődni fog a memóriából (megszűnik a process!!!).
De ha mindettől el is tekintünk, ez a leírás akkor is egy rettenetesen hülye kernelt feltételez, nevezetesen enged írható,futtatható frame-t mappelni - fail (pár éve van már RO+NX bit, nem igaz?) Ha egy kernel ezt engedi, akkor nem kell hozzá sysret+GP hókuszpókusz, hogy feltörd.
Végül itt egy írás attól az embertől, aki a sysenter utasítást tervezte: http://semipublic.comp-arch.net/wiki/SYSENTER/SYSEXIT_vs._SYSCALL/SYSRET
Elég világosan fogalmaz annak kapcsán, hogy kell-e address ellenőrzés:
"SYSCALL, by capturing the return address, avoids the need for such validation."