Hi Matjong!
My hack does not change Joomla's session methodology in any respect except the IP address, and then
only if the webmaster chooses to do so (they use the AOL varient). Joomla ceates a singular instance of a sessionid, at the time the session is established. However, the cookie value is not the session id, only a portion of it. In order to get the session, the site cracker has to be coming from the right ip address, or range in the case of the AOL varient.
As a network engineer, I spent a lot of time really thinking this one through. I am familiar with how someone can steal a session, and most of methods for doing it. As you said, if someone wants to spoof an ip address they can do it from the network segment the original user is in. Unfortunately, they can also be on an entirely different network, as long as it is in the routed chain.
For example, if my network address is 192.168.2.33 and I am on a 'C' network address space, there are 253 other potential addresses on my network that can steal my session (assuming they know what they are doing and how to spoof my address). Now lets assume that my network routes to the following network addresses in order to get to the internet: 191.206.2.33, 204.133.5.67, and 56.127.12 . Each of these network addresses share a network segment with other nodes (addresses) and are in the route path of my network to the internet. Using a sniffer, If a cracker manages to access one of these other networks, he can both see my packets, and sniff out return packets to get critical data.
Point is, that if someone wants to sniff my cookie value out, and hijack my session (via spoofing, or simply sniffing), they can do it from any of these connected (via routing) network segments. It doesn't matter if they are in the same IP range on my network or not, if they can grab the packet, they can sniff, or spoof to get what they want.
In reality its a lot tougher than this, since the routers tend to be true routers and only share network segments with other routers, but I can tell you from my own experience (watching sniff traces) that getting traffic on my segment that did not belong to me was real common. Just had to be destined for a router sharing the same segment. If a cracker cracks a router, he's on that segment and open for business.
My problem was this. I run a very popular user community on the internet,
and a large number of the users in this community were AOL users. They could not login unless the used the remember me option, and that caused two additional problems:
1.
They now had a fully authenticable cookie traveling around with them, that could be duplicated by anyone, anywhere and would allow logins from any IP address on the internet. Its a lot easier to login as that user than it is to hack their session, and with these values anyone can do it. They simply duplicate the remember cookie, and they are in.
2.
My session table skyrocketed with single page load sessions. It was off the charts.So I chose the compromise. I realize that it makes it easier to steal a session for the casual site cracker, assuming they were in the right range of IP addreses, but
it was orders of magnitude safer than having my users throwing out fully authenticable 'remember me' cookies with every single page load. It was a compromise that I felt was appropriate, and most secure for the circumstances of my website. I would love to have this as an option in my Site->configuration. For sites where it is appropriate, I would enable it, for others that need to be more secure, I would not.
BTW... I have tested spoofing to test the security of some of my networks, and it is real easy to do. But as you said requires a level of knowledge that very few possess.
As to the question of changing the session id (not the cookie value, but they are related), it does not change with each page load. This works extremely well in environments where state is kept, it fails on the internet. To do it right, you must change the value, then get an acknowledgement from the client that it has been changed before letting it take effect. Otherwise, due to the nature of non-stateful traffic and the potential for packet losses etc.... You run the risk of getting out of sync. Browser based traffic is inherently one way, you make a request, the server returns it. There aren't any standard methods to force that browser to return an acknowledgement. There are a few open source projects playing with this right now, but I am not aware of one that has succesfully deployed it. I would love to find out that this had progressed.
In defense of Joomla, the sessions are stored in the Database, somewhat (although not entirely) reducing the risk of XSS.
XSS security has a lot to do with how your server is configured, and who you have to share it with (ignoring for the moment, security in your scripts). I know thats an oversimplification, but it is where we can have the most impact on the problem.
Unfortunately, the very best way to secure a site right now, is to enable https. I am hoping though, and watching for alternatives that can help.
Final note. If we login and aren't on https, we just sent our password through the internet clear text. Anyone with a sniffer and a will, who happens to be on the path our packet traverses, can have it at will. Its easier than spoofing. But I am working on a fix for that too

Thanks for the input, it is valuable in the context of this thread. I hope you understand why I chose to create the AOL hack, and that I know its not for everyone.
The bigger message here is really the non-AOL hack. The AOL hack is just a varient for those who need it.
The standard hack has a huge impact on sessions being kept in the jos_sessions table, and the resultant server utilization during spider events.Thanks,
GRAM