On my system, all SUID binaries are executable yet not readable, e.g.
$ ls -l /bin/su
-rws--x--x 1 root root 52144 Mar 5 2011 /bin/su
Doesn't this effectively stop the exploit? It still works when I insert the <exit@plt> function address, but I don't think it's possible to trace this without root rights, which kind of defeats the purpose.