Security
Headlines
HeadlinesLatestCVEs

Headline

CVE-2023-27601: [sipmsgops] fix codec_delete_XX() parsing · OpenSIPS/opensips@8f87c7c

OpenSIPS is a Session Initiation Protocol (SIP) server implementation. Prior to versions 3.1.7 and 3.2.4, OpenSIPS crashes when a malformed SDP body is received and is processed by the delete_sdp_line function in the sipmsgops module. This issue can be reproduced by calling the function with an SDP body that does not terminate by a line feed (i.e. \n). The vulnerability was found while performing black-box fuzzing against an OpenSIPS server running a configuration that made use of the functions codec_delete_except_re and codec_delete_re. The same issue was also discovered while performing coverage guided fuzzing on the function codec_delete_except_re. The crash happens because the function delete_sdp_line expects that an SDP line is terminated by a line feed (\n): By abusing this vulnerability, an attacker is able to crash the server. It affects configurations containing functions that rely on the affected code, such as the function codec_delete_except_re. Due to the sanity check that is performed in the del_lump function, exploitation of this issue will generate an abort in the lumps processing function, resulting in a Denial of Service. This issue has been fixed in versions 3.1.7 and 3.2.4.

CVE
#vulnerability#dos

@@ -347,7 +347,10 @@ static int do_for_all_streams(struct sip_msg* msg, str* str1,str * str2,

}

int delete_sdp_line( struct sip_msg * msg, char * s)

/* deletes a SDP line (from a stream) by giving a pointer within the line.

* The stream is used to safeguard the identification of the line boundries.

*/

int delete_sdp_line( struct sip_msg * msg, char * s, struct sdp_stream_cell *stream)

{

char * start,*end;

@@ -357,11 +360,11 @@ int delete_sdp_line( struct sip_msg * msg, char * s)

start = s;

end = s;

while(*start != ‘\n’)

while(*start != ‘\n’ && start > stream->body.s)

start–;

start++;

while(*end != ‘\n’)

while(*end != ‘\n’ && end < (stream->body.s+stream->body.len) )

end++;

end++;

@@ -530,14 +533,14 @@ static int stream_process(struct sip_msg * msg, struct sdp_stream_cell *cell,

{

/* find the full ‘a=…’ entry */

if( delete_sdp_line( msg, payload->rtp_enc.s) < 0 )

if( delete_sdp_line( msg, payload->rtp_enc.s, cell) < 0 )

{

LM_ERR(“Unable to add delete lump for a=\n”);

ret = -1;

goto end;

}

if( delete_sdp_line( msg, payload->fmtp_string.s) < 0 )

if( delete_sdp_line( msg, payload->fmtp_string.s, cell) < 0 )

{

LM_ERR(“Unable to add delete lump for a=\n”);

ret = -1;

CVE: Latest News

CVE-2023-50976: Transactions API Authorization by oleiman · Pull Request #14969 · redpanda-data/redpanda