By Andree Toonk | January 10, 2010
Last Thursday Juniper released advisory PSN-2010-01-623 urging Network administrator running JUNOS versions older then one year to upgrade. The advisory states that by sending ‘malformed’ tcp options will cause JunOS to crash. The advisory does not mention which tcp options will cause this behavior.
So last Friday and Saturday I spend a few hours to trying to generate TCP packets with different kind of options set, trying to see if I could find out the exact options needed. However before I found the magic combination, Jermey Gaddis posted a blog post describing which options need to be set. He also published an exploit.
I tried running this exploit, but for some reason the perl code does not run on my Mac book. After slightly rewriting some of his perl code I managed to get it working and was ready to give it a try on one of our lab routers, a M10 running JunOS 7.x.
I was able to crash the router with only sending one packets, also see the video.
Of course most routers have firewall/acl filters to only allow traffic to the RE from trusted sources. According to the advisory and some resources online firewall filters don’t help in this case. However in my lab testing applying a firewall did seem to help.
To test this I configured my lab router with a firewall blocking all ssh traffic from all sources. I tried the exploit again and nothing happened. So it seems that at least in some cases a firewall filter does help. This might be different on a Olive box, as it doesn’t have hardware filtering in PFE’s. I assume that’s why filtering does work on a ‘real’ box, as it’s probably filtered out by the PFE’s before it reached the kernel.
Although firewall filters do seem to protect you against this issue. It’s still fairly easy to spoof IP addresses and by pass the firewall. As router Ip addresses are easy to find (traceroute) it will also be easy to guess the IP address of a BGP peer. Using that spoofed address will allow an attacker to crash your router. So upgrading to a more recent release is the only real solution.