Libquicktime:allocation failed in quicktime_read_info
Description
Libquicktime is a library for reading and writing quicktime/avi/mp4 files. It provides convenient access to quicktime files with a variety of supported codecs.
An allocation failed was found in function quicktime_read_info in lqt_quicktime.c, which allows attackers to cause a denial of service via a crafted file.
#qtinfo $POC
==2892==ERROR: failed to allocate 0x6c6d769000
(465692954624) bytes of LargeMmapAllocator (error code: 12)
==2892==Process memory map follows:
0x000000400000-0x0000008b5000
/home/test/Downloads/libquicktime-afl-build/bin/qtinfo
0x000000ab5000-0x000000ab6000
/home/test/Downloads/libquicktime-afl-build/bin/qtinfo
0x000000ab6000-0x000000ad2000
/home/test/Downloads/libquicktime-afl-build/bin/qtinfo
0x000000ad2000-0x000001739000
0x00007fff7000-0x00008fff7000
0x00008fff7000-0x02008fff7000
0x02008fff7000-0x10007fff8000
0x600000000000-0x602000000000
0x602000000000-0x602000010000
0x602000010000-0x602e00000000
0x602e00000000-0x602e00010000
0x602e00010000-0x604000000000
0x604000000000-0x604000010000
0x604000010000-0x604e00000000
0x604e00000000-0x604e00010000
0x604e00010000-0x606000000000
0x606000000000-0x606000010000
0x606000010000-0x606e00000000
0x606e00000000-0x606e00010000
0x606e00010000-0x608000000000
0x608000000000-0x608000010000
0x608000010000-0x608e00000000
0x608e00000000-0x608e00010000
0x608e00010000-0x616000000000
0x616000000000-0x616000010000
0x616000010000-0x616e00000000
0x616e00000000-0x616e00010000
0x616e00010000-0x624000000000
0x624000000000-0x624000010000
0x624000010000-0x624e00000000
0x624e00000000-0x624e00010000
0x624e00010000-0x626000000000
0x626000000000-0x626000010000
0x626000010000-0x626e00000000
0x626e00000000-0x626e00010000
0x626e00010000-0x640000000000
0x640000000000-0x640000003000
0x7f9b80b00000-0x7f9b80c00000
0x7f9b80d00000-0x7f9b80e00000
0x7f9b80f00000-0x7f9b81000000
0x7f9b81100000-0x7f9b81200000
0x7f9b8125e000-0x7f9b835b0000
0x7f9b835b0000-0x7f9b83766000 /usr/lib64/libc-2.17.so
0x7f9b83766000-0x7f9b83966000 /usr/lib64/libc-2.17.so
0x7f9b83966000-0x7f9b8396a000 /usr/lib64/libc-2.17.so
0x7f9b8396a000-0x7f9b8396c000 /usr/lib64/libc-2.17.so
0x7f9b8396c000-0x7f9b83971000
0x7f9b83971000-0x7f9b83986000 /usr/lib64/libgcc_s-4.8.5-20150702.so.1
0x7f9b83986000-0x7f9b83b85000 /usr/lib64/libgcc_s-4.8.5-20150702.so.1
0x7f9b83b85000-0x7f9b83b86000 /usr/lib64/libgcc_s-4.8.5-20150702.so.1
0x7f9b83b86000-0x7f9b83b87000 /usr/lib64/libgcc_s-4.8.5-20150702.so.1
0x7f9b83b87000-0x7f9b83b8e000 /usr/lib64/librt-2.17.so
0x7f9b83b8e000-0x7f9b83d8d000 /usr/lib64/librt-2.17.so
0x7f9b83d8d000-0x7f9b83d8e000 /usr/lib64/librt-2.17.so
0x7f9b83d8e000-0x7f9b83d8f000 /usr/lib64/librt-2.17.so
0x7f9b83d8f000-0x7f9b83da6000 /usr/lib64/libpthread-2.17.so
0x7f9b83da6000-0x7f9b83fa5000 /usr/lib64/libpthread-2.17.so
0x7f9b83fa5000-0x7f9b83fa6000 /usr/lib64/libpthread-2.17.so
0x7f9b83fa6000-0x7f9b83fa7000 /usr/lib64/libpthread-2.17.so
0x7f9b83fa7000-0x7f9b83fab000
0x7f9b83fab000-0x7f9b83fad000 /usr/lib64/libdl-2.17.so
0x7f9b83fad000-0x7f9b841ad000 /usr/lib64/libdl-2.17.so
0x7f9b841ad000-0x7f9b841ae000 /usr/lib64/libdl-2.17.so
0x7f9b841ae000-0x7f9b841af000 /usr/lib64/libdl-2.17.so
0x7f9b841af000-0x7f9b841c4000 /usr/lib64/libz.so.1.2.7
0x7f9b841c4000-0x7f9b843c3000 /usr/lib64/libz.so.1.2.7
0x7f9b843c3000-0x7f9b843c4000 /usr/lib64/libz.so.1.2.7
0x7f9b843c4000-0x7f9b843c5000 /usr/lib64/libz.so.1.2.7
0x7f9b843c5000-0x7f9b844c5000 /usr/lib64/libm-2.17.so
0x7f9b844c5000-0x7f9b846c5000 /usr/lib64/libm-2.17.so
0x7f9b846c5000-0x7f9b846c6000 /usr/lib64/libm-2.17.so
0x7f9b846c6000-0x7f9b846c7000 /usr/lib64/libm-2.17.so
0x7f9b846c7000-0x7f9b846e7000 /usr/lib64/ld-2.17.so
0x7f9b8475c000-0x7f9b848cb000
0x7f9b848cb000-0x7f9b848e6000
0x7f9b848e6000-0x7f9b848e7000 /usr/lib64/ld-2.17.so
0x7f9b848e7000-0x7f9b848e8000 /usr/lib64/ld-2.17.so
0x7f9b848e8000-0x7f9b848e9000
0x7ffd55c95000-0x7ffd55cb6000 [stack]
0x7ffd55cfb000-0x7ffd55cfd000 [vdso]
0xffffffffff600000-0xffffffffff601000 [vsyscall]
==2892==End of process memory map.
==2892==AddressSanitizer CHECK failed:
/home/test/Downloads/llvm-clang/llvm/projects/compiler-rt/lib/sanitizer_common/sanitizer_common.cc:120
"((0 && "unable to mmap")) != (0)" (0x0, 0x0)
#0 0x4ea5bf in __asan::AsanCheckFailed(char const*, int, char const*,
unsigned long long, unsigned long long)
/home/test/Downloads/llvm-clang/llvm/projects/compiler-rt/lib/asan/asan_rtl.cc:69
#1 0x501ee5 in __sanitizer::CheckFailed(char const*, int, char const*,
unsigned long long, unsigned long long)
/home/test/Downloads/llvm-clang/llvm/projects/compiler-rt/lib/sanitizer_common/sanitizer_termination.cc:79
#2 0x4f2b80 in __sanitizer::ReportMmapFailureAndDie(unsigned long, char
const*, char const*, int, bool)
/home/test/Downloads/llvm-clang/llvm/projects/compiler-rt/lib/sanitizer_common/sanitizer_common.cc:120
#3 0x4fb35e in __sanitizer::MmapOrDie(unsigned long, char const*, bool)
/home/test/Downloads/llvm-clang/llvm/projects/compiler-rt/lib/sanitizer_common/sanitizer_posix.cc:132
#4 0x42660f in
__sanitizer::LargeMmapAllocator<__asan::AsanMapUnmapCallback>::Allocate(__sanitizer::AllocatorStats*,
unsigned long, unsigned long)
/home/test/Downloads/llvm-clang/llvm/projects/compiler-rt/lib/asan/../sanitizer_common/sanitizer_allocator_secondary.h:41
#5 0x42660f in
__sanitizer::CombinedAllocator<__sanitizer::SizeClassAllocator64<__asan::AP64>,
__sanitizer::SizeClassAllocatorLocalCache<__sanitizer::SizeClassAllocator64<__asan::AP64>
>, __sanitizer::LargeMmapAllocator<__asan::AsanMapUnmapCallback>
>::Allocate(__sanitizer::SizeClassAllocatorLocalCache<__sanitizer::SizeClassAllocator64<__asan::AP64>
>*, unsigned long, unsigned long, bool, bool)
/home/test/Downloads/llvm-clang/llvm/projects/compiler-rt/lib/asan/../sanitizer_common/sanitizer_allocator_combined.h:70
#6 0x42660f in __asan::Allocator::Allocate(unsigned long, unsigned
long, __sanitizer::BufferedStackTrace*, __asan::AllocType, bool)
/home/test/Downloads/llvm-clang/llvm/projects/compiler-rt/lib/asan/asan_allocator.cc:407
#7 0x4dff89 in malloc
/home/test/Downloads/llvm-clang/llvm/projects/compiler-rt/lib/asan/asan_malloc_linux.cc:67
#8 0x5411c9 in quicktime_read_info
/home/test/Downloads/libquicktime-1.2.4/src/lqt_quicktime.c:1784:39
#9 0x5441ca in do_open
/home/test/Downloads/libquicktime-1.2.4/src/lqt_quicktime.c:2026:10
#10 0x515a55 in file_info
/home/test/Downloads/libquicktime-1.2.4/utils/qtinfo.c:45:12
#11 0x515a55 in main
/home/test/Downloads/libquicktime-1.2.4/utils/qtinfo.c:69
#12 0x7f9b835d1b34 in __libc_start_main
/usr/src/debug/glibc-2.17-c758a686/csu/../csu/libc-start.c:274
#13 0x41affb in _start
(/home/test/Downloads/libquicktime-afl-build/bin/qtinfo+0x41affb)
Affected version: 1.2.4
Fixed version:N/A
Commit fix:N/A
Credit: ADLab of Venustech.
CVE:N/A
Reproducer:
https://sourceforge.net/p/libquicktime/mailman/message/35888850/
(in the attachment)
Timeline:
2017-06-11:bug discovered and reported to the Libquicktime`s mailling lists of sourceforge
2017-07-30:blog post about the issue
Permalink:
https://somevulnsofadlab.blogspot.com/2017/07/libquicktimeallocation-failed-in.html
评论
发表评论