*** This bug is a security vulnerability ***

You have been subscribed to a public security bug by Jamie Strandboge 
(jdstrand):

Binary package hint: vlc

http://www.trapkit.de/advisories/TKADV2008-011.txt

Includes: hardy, Intrepid, jaunty

Advisory:               VLC media player RealText Processing Stack Overflow  
Vulnerability
Advisory ID:            TKADV2008-011
Revision:               1.0              
Release Date:           2008/11/05 
Last Modified:          2008/11/05 
Date Reported:          2008/11/03
Author:                 Tobias Klein (tk at trapkit.de)
Affected Software:      VLC media player < 0.9.6
Remotely Exploitable:   Yes
Locally Exploitable:    No 
Vendor URL:             http://www.videolan.org/ 
Vendor Status:          Vendor has released an updated version
Patch development time: 2 days


======================
Vulnerability details: 
======================

The VLC media player contains a stack overflow vulnerability while parsing
malformed RealText (rt) subtitle files. The vulnerability can be trivially 
exploited by a (remote) attacker to execute arbitrary code in the context 
of VLC media player.

VLC handles subtitles automatically. It just checks the presence of a
subtitle file with the same name of the loaded video. If such a subtitle 
file is found, VLC loads and parses the file.


==================
Technical Details:
==================

Source code file: modules\demux\subtitle.c

[...]
1843  static int ParseRealText( demux_t *p_demux, subtitle_t *p_subtitle, 
                                int i_idx )
1844  {
1845     VLC_UNUSED( i_idx );
1846     demux_sys_t *p_sys = p_demux->p_sys;
1847     text_t      *txt = &p_sys->txt;
1848     char *psz_text = NULL;
1849 [1] char psz_end[12]= "", psz_begin[12] = "";
1850
1851     for( ;; )
1852     {
1853        int h1 = 0, m1 = 0, s1 = 0, f1 = 0;
1854        int h2 = 0, m2 = 0, s2 = 0, f2 = 0;
1855        const char *s = TextGetLine( txt );
1856        free( psz_text );
1857
1858        if( !s )
1859            return VLC_EGENERIC;
1860
1861        psz_text = malloc( strlen( s ) + 1 );
1862        if( !psz_text )
1863            return VLC_ENOMEM;
1864
1865        /* Find the good begining. This removes extra spaces at the 
1866           beginning of the line.*/
1867        char *psz_temp = strcasestr( s, "<time");
1868        if( psz_temp != NULL )
1869        {
1870            /* Line has begin and end */
1871 [2]        if( ( sscanf( psz_temp,
1872                  "<%*[t|T]ime %*[b|B]egin=\"%[^\"]\" 
                        %*[e|E]nd=\"%[^\"]%*[^>]%[^\n\r]",
1873                            psz_begin, psz_end, psz_text) != 3 ) &&
1874                    /* Line has begin and no end */
1875 [3]                ( sscanf( psz_temp,
1876                              "<%*[t|T]ime 
                                    %*[b|B]egin=\"%[^\"]\"%*[^>]%[^\n\r]",
1877                              psz_begin, psz_text ) != 2) )
1878                /* Line is not recognized */
1879            {
1880                continue;
1881            }
[...]

[1] The stack buffers "psz_end" and "psz_begin" can be overflowed
[2] The sscanf() function reads its input from a user controlled character 
    string pointed to by "psz_temp". The user controlled data gets stored 
    in the stack buffers "psz_end" and "psz_begin" without any bounds 
    checking. This leads to a straight stack overflow that can be trivially
    exploited by a (remote) attacker to execute arbitrary code in the 
    context of VLC. 
[3] see [2]


========= 
Solution: 
=========

  See "Workarounds" and "Solution" sections of the VideoLAN-SA-0810 [1].


======== 
History: 
========

  2008/11/03 - Vendor notified
  2008/11/04 - Patch developed by VideoLAN team  
  2008/11/05 - Public disclosure of vulnerability details by the vendor
  2008/11/05 - Release date of this security advisory


======== 
Credits: 
========

  Vulnerability found and advisory written by Tobias Klein.


=========== 
References: 
===========

 [1] http://www.videolan.org/security/sa0810.html
 [2] http://git.videolan.org/?p=vlc.git;a=commitdiff;h=e3cef65
     1125701a2e33a8d75b815b3e39681a447
 [3] http://www.trapkit.de/advisories/TKADV2008-011.txt

** Affects: vlc (Ubuntu)
     Importance: Undecided
         Status: New

-- 
VLC media player RealText Processing Stack Overflow 
https://bugs.launchpad.net/bugs/295464
You received this bug notification because you are a member of Ubuntu Bugs, 
which is a direct subscriber.

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to