Re: x25: remote-triggerable heap overflow in call user data processing
From: Andrew Hendry <hidden>
Date: 2011-10-03 06:51:54
x25_in.c looks straightforward. with af_x25.c we might want to move the incoming call user data check before the call accept block above. Otherwise it could send call accept/call clear right next to each other and it might get bad state On Mon, Oct 3, 2011 at 4:45 PM, Eric Dumazet [off-list ref] wrote:
Le lundi 03 octobre 2011 à 16:23 +1300, matt d a écrit :quoted
Refer to the x25 packet layer's handling of incoming call user data, namely at these two locations, in x25_rx_call_request and x25_state1_machine: https://github.com/mirrors/linux/blob/master/net/x25/af_x25.c#L1039 https://github.com/mirrors/linux/blob/master/net/x25/x25_in.c#L126 Call user data from an incoming message is copied into (make)x25->calluserdata.cuddata buffers, which are 128 bytes long. However, the length copied is based on the remaining message length, and is not limited to the output buffer size. This allows a remote attacker to overflow data onto the heap. There is an appropriate constant defined for the length, but it seemingly isn't used there: https://github.com/mirrors/linux/blob/master/include/net/x25.h#L104 It seems this issue was noticed some time ago: http://www.spinics.net/lists/linux-x25/msg00043.html http://patchwork.ozlabs.org/patch/23917/ ...however nothing was done about the bigger problem. I have written a simple exploit for this vulnerability if it needs to be posted, however I think the problem is pretty straightforward to see as-is.Please send a patch, it seems you have everything done to do it properly ;) -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html