Ethical Hacking Learn to find vulnerabilities before the bad guys do! Gain real world hands on hacking experience in our state of the art hacking lab. Course designed and taught by expert instructors with years of penetration testing experience. 12 student maximum in every class. Certification attempt included in every package. | Computer Forensics Training at InfoSec Institute Gain the in-demand skills of a certified computer examiner, learn to recover trace data left behind by fraud, theft, and cybercrime perpetrators. Discover the source of computer crime and abuse at your organization so that it never happens again. All of our class sizes are guaranteed to be 12 students or less to facilitate one-on-one interaction with one of our expert instructors. |

| Subject: | [NEWS] MPlayer Multiple Remote Overflows (RTSP, MMST, BMP) |
|---|---|
| Date: | 19 Dec 2004 19:48:30 +0200 |
The following security advisory is sent to the securiteam mailing list, and can be found at the SecuriTeam web site: http://www.securiteam.com - - promotion The SecuriTeam alerts list - Free, Accurate, Independent. Get your security news from a reliable source. http://www.securiteam.com/mailinglist.html - - - - - - - - - MPlayer Multiple Remote Overflows (RTSP, MMST, BMP) ------------------------------------------------------------------------ SUMMARY <http://mplayerhq.hu/> MPlayer is a movie player for Linux that also runs on many other Unices, platforms and non-x86 CPUs. It plays most MPEG, VOB, AVI, Ogg/OGM, VIVO, ASF/WMA/WMV, QT/MOV/MP4, FLI, RM, NuppelVideo, YUV4MPEG, FILM, RoQ, PVA files, supported by many native, XAnim, and Win32 DLL codecs. You can watch VideoCD, SVCD, DVD, 3ivx, DivX 3/4/5 and other formats. Heap overflow vulnerabilities exist in the RTSP memory allocation code, the MMST streaming code and the bitmap loading code. The overflows allow an attacker to run arbitrary code on the target system. DETAILS Vulnerable Systems: * MPlayer version 1.0pre5 MPlayer Remote RTSP Heap Overflow Vulnerability The vulnerability exists due to an error in dynamically allocated memory in /libmpdemux/realrtsp/real.c. The vulnerable code is listed below: rmff_header_t *real_setup_and_get_header(rtsp_t *rtsp_session, uint32_t bandwidth) { char *description=NULL; char *session_id=NULL; rmff_header_t *h; char *challenge1; char challenge2[64]; char checksum[34]; char *subscribe; char *buf = xbuffer_init(256); char *mrl=rtsp_get_mrl(rtsp_session); unsigned int size; int status; [...] if (!rtsp_search_answers(rtsp_session,"Content-length")) printf("real: got no Content-length!\n"); else [!] size=atoi(rtsp_search_answers(rtsp_session,"Content-length")); [...] description=malloc(sizeof(char)*(size+1)); if( rtsp_read_data(rtsp_session, description, size) <= 0) { buf = xbuffer_free(buf); return NULL; } description[size]=0; [...] } If a malicious server or anyone posing as a server specifies a content-length of -1 for the stream only 4 bytes are allocated due to an integer overflow. An arbitrary length stream of data is then copied into that 4 byte buffer, corrupting the heap and allowing for possible code execution. Impact Remote exploitation of this vulnerability is difficult because success requires a great deal of precision. If remote exploitation were successful, the attacker would be able to gain access with the privileges of the user who attempted to play the media file. MPlayer MMST Streaming Stack Overflow Vulnerability The vulnerability exists due to a lack of bounds checking in /libmpdemux/asf_mmst_straming.c. If a specially crafted file specifies a large value for the length field, the overflow is triggered in get_data(). The vulnerable code is listed below: static int get_media_packet (int s, int padding, streaming_ctrl_t *stream_ctrl) { unsigned char pre_header[8]; char data[BUF_SIZE]; [...] packet_len = get_32 ((unsigned char*)&packet_len, 0) + 4; [!] if (!get_data (s, data, packet_len)) { printf ("command data read failed\n"); return 0; } [...] Once the get_data() function overwrites stack memory the saved return address can be controlled, thus allowing for execution of arbitrary code. Impact If remote exploitation is successful, the attacker would be able to gain access with the privileges of the user who attempted to view the stream. MPlayer Bitmap Parsing Remote Heap Overflow Vulnerability The vulnerability exists due to a lack of bounds checking within the demux_open_bmp() routine defined in /libmpdemux/demux_bmp.c. If a specially crafted file specifies a large value for the "biClrUsed" field, an overflow is triggered in stream_read(). The vulnerable portion of code is displayed below: demuxer_t* demux_open_bmp(demuxer_t* demuxer) { sh_video_t *sh_video = NULL; unsigned int filesize; unsigned int data_offset; bmp_image_t *bmp_image; ... sh_video->bih->biClrUsed = stream_read_dword_le(demuxer->stream); sh_video->bih->biClrImportant = stream_read_dword_le(demuxer->stream); // fetch the palette [!] stream_read(demuxer->stream, (unsigned char *)(sh_video->bih) + 40, sh_video->bih->biClrUsed * 4); ... } In the given example call to stream_read(), an unchecked amount of data as specified by "biClrUsed" will be read into the fixed size buffer "bih." This allows control of execution by overwriting the saved return address on the stack. Impact Successful exploitation of this vulnerability allows remote attackers to execute arbitrary code under the privileges of the user who attempted to view the bitmap file. Exploitation is not trivial, as a high level of precision is required. It is not a requirement for the malicious file to have an extension of .bmp because MPlayer will correctly determine if it is a bitmap file despite its extension. Workaround Users must be careful when accepting and opening media from untrusted sources. Do not accept media from those you do not trust. Do not stream media from servers you do not trust. Patch Availability The vendor has supplied patches for all three vulnerabilities. They are available at: <http://www1.mplayerhq.hu/MPlayer/patches/rtsp_fix_20041215.diff> http://www1.mplayerhq.hu/MPlayer/patches/rtsp_fix_20041215.diff <http://www1.mplayerhq.hu/MPlayer/patches/mmst_fix_20041215.diff> http://www1.mplayerhq.hu/MPlayer/patches/mmst_fix_20041215.diff <http://www1.mplayerhq.hu/MPlayer/patches/bmp_fix_20041215.diff> http://www1.mplayerhq.hu/MPlayer/patches/bmp_fix_20041215.diff Disclosure Timeline: 12/10/2004 - Initial vendor notification 12/16/2004 - Public disclosure ADDITIONAL INFORMATION The information has been provided by <mailto:idlabs-advisories@idefense.com> iDEFENSE Security Labs. The original article can be found at: <http://www.idefense.com/application/poi/display?id=166> http://www.idefense.com/application/poi/display?id=166 The original article can be found at: <http://www.idefense.com/application/poi/display?id=167> http://www.idefense.com/application/poi/display?id=167 The original article can be found at: <http://www.idefense.com/application/poi/display?id=168> http://www.idefense.com/application/poi/display?id=168 ======================================== This bulletin is sent to members of the SecuriTeam mailing list. To unsubscribe from the list, send mail with an empty subject line and body to: list-unsubscribe@securiteam.com In order to subscribe to the mailing list, simply forward this email to: list-subscribe@securiteam.com ==================== ==================== DISCLAIMER: The information in this bulletin is provided "AS IS" without warranty of any kind. In no event shall we be liable for any damages whatsoever including direct, indirect, incidental, consequential, loss of business profits or special damages.
| <Prev in Thread] | Current Thread | [Next in Thread> |
|---|---|---|
| ||
| Previous by Date: | [NT] Crystal FTP Pro Client LIST Buffer Overflow, SecuriTeam |
|---|---|
| Next by Date: | [UNIX] Multiple Vulnerabilities in Kayako eSupport, SecuriTeam |
| Previous by Thread: | [NT] Crystal FTP Pro Client LIST Buffer Overflow, SecuriTeam |
| Next by Thread: | [UNIX] Multiple Vulnerabilities in Kayako eSupport, SecuriTeam |
| Indexes: | [Date] [Thread] [Top] [All Lists] |