Bug#881138: ffmpeg2theora: use uninitialized stack value as a pointer while running ffmpeg2theora
Joonun Jang
joonun.jang at gmail.com
Wed Nov 8 06:00:05 UTC 2017
Package: ffmpeg2theora
Version: 0.30-1+b2
Severity: important
Tags: security
use uninitialized stack value as a pointer while running ffmpeg2theora with "poc" option
Running 'ffmpeg2theora poc' with the attached file uses uninitialized stack value as a pointer
which may allow a remote attacker to cause unspecified impact including denial-of-service attack
I expected the program to terminate without segfault, but the program crashes as follow
-------------------------------------------
june at yuweol:~/poc/ffmpeg2theora/crash3$ ffmpeg2theora poc
[h263 @ 0x557eb7fb5840] Format h263 detected only with low score of 25, misdetection possible!
Input #0, h263, from 'poc':
Duration: N/A, bitrate: N/A
Stream #0:0: Video: h263, yuv420p, 176x144 [SAR 12:11 DAR 4:3], 29.97 tbr, 1200k tbn, 29.97 tbc
Pixel Aspect Ratio: 1.09/1 Frame Aspect Ratio: 1.33/1
WARNING: Can't get duration of media, not indexing, writing Skeleton 3 track.
[h263 @ 0x557eb7fb6880] I cbpc damaged at 0 0
[h263 @ 0x557eb7fb6880] Error at MB: 0
[h263 @ 0x557eb7fb6880] concealing 99 DC, 99 AC, 99 MV errors in I frame
0:00:00.03 audio: 0kbps video: 16kbps, time elapsed: 00:00:00 Segmentation fault
-------------------------------------------
Starting program: /usr/bin/ffmpeg2theora poc
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[h263 @ 0x555555811820] Format h263 detected only with low score of 25, misdetection possible!
Input #0, h263, from 'poc':
Duration: N/A, bitrate: N/A
Stream #0:0: Video: h263, yuv420p, 176x144 [SAR 12:11 DAR 4:3], 29.97 tbr, 1200k tbn, 29.97 tbc
************************************************************
Breakpoint 1, 0x0000555555563ab8 in ?? ()
(gdb) x/2x $rbp - 0x368
0x7fffffffca18: 0xf493f960 0x00007fff
************************************************************
- This is entry point of function,local variable $rbp - 0x368 is 0x7ffff693f960.
************************************************************
(gdb) c
Continuing.
Pixel Aspect Ratio: 1.09/1 Frame Aspect Ratio: 1.33/1
WARNING: Can't get duration of media, not indexing, writing Skeleton 3 track.
[h263 @ 0x555555812860] I cbpc damaged at 0 0
[h263 @ 0x555555812860] Error at MB: 0
[h263 @ 0x555555812860] concealing 99 DC, 99 AC, 99 MV errors in I frame
0:00:00.03 audio: 0kbps video: 16kbps, time elapsed: 00:01:55
Program received signal SIGSEGV, Segmentation fault.
clear_context (s=0x7ffff493f960) at libswresample/swresample.c:116
116 s->in_buffer_index= 0;
************************************************************
- the value 7ffff493f960 which is same as the above uninitialized value
was passed to clear_context function as a parameter.
************************************************************
(gdb) bt
#0 clear_context (s=0x7ffff493f960) at libswresample/swresample.c:116
#1 0x00005555555648e6 in ?? ()
#2 0x000055555555c8da in main ()
(gdb) f 1
#1 0x00005555555648e6 in ?? ()
(gdb) x/5i $rip-16
0x5555555648d6: mov -0x368(%rbp),%edi
0x5555555648dc: test %rdi,%rdi
0x5555555648df: je 0x5555555648e6
0x5555555648e1: callq 0x55555555b650 <swr_close at plt>
=> 0x5555555648e6: mov -0x38(%rbp),%rax
(gdb) x/2x $rbp - 0x368
0x7fffffffca18: 0xf493f960 0x00007fff
************************************************************
- argument %rdi comes from -0x368(%rbp) which is same position
when we check at the entry point of this function
-------------------------------------------
This bug was found with a fuzzer developed by 'SoftSec' group at KAIST.
-- System Information:
Debian Release: buster/sid
APT prefers unstable-debug
APT policy: (500, 'unstable-debug'), (500, 'testing-debug'), (500, 'stable-updates'), (500, 'testing'), (500, 'stable'), (1, 'experimental-debug')
Architecture: amd64 (x86_64)
Kernel: Linux 4.9.0-3-amd64 (SMP w/1 CPU core)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), LANGUAGE=en_US:en (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)
Versions of packages ffmpeg2theora depends on:
ii libavcodec57 7:3.3.4-2+b2
ii libavdevice57 7:3.3.4-2+b2
ii libavfilter6 7:3.3.4-2+b2
ii libavformat57 7:3.3.4-2+b2
ii libavutil55 7:3.3.4-2+b2
ii libc6 2.24-17
ii libkate1 0.4.1-7+b1
ii libogg0 1.3.2-1+b1
ii liboggkate1 0.4.1-7+b1
ii libpostproc54 7:3.3.4-2+b2
ii libswresample2 7:3.3.4-2+b2
ii libswscale4 7:3.3.4-2+b2
ii libtheora0 1.1.1+dfsg.1-14+b1
ii libvorbis0a 1.3.5-4
ii libvorbisenc2 1.3.5-4
ffmpeg2theora recommends no packages.
ffmpeg2theora suggests no packages.
-- no debconf information
-------------- next part --------------
A non-text attachment was scrubbed...
Name: poc
Type: application/octet-stream
Size: 51 bytes
Desc: not available
URL: <http://lists.alioth.debian.org/pipermail/pkg-multimedia-maintainers/attachments/20171108/ff57b36c/attachment-0001.obj>
More information about the pkg-multimedia-maintainers
mailing list