Get the App
SLTechnology News&Howtos  ›  Network Security  › 

About the recently popular Android stagefright loophole

Shulou Source: shulou.com Published: 2022-06-01 07:13:27 10月03日 Update

Rotation

Title: [discussion] [share] about the recent popularity of Android stagefright vulnerabilities

By: minczsys

From time to time: 2015-07-29, 12, 14, 41, 42

Link http://bbs.pediy.com/showthread.php?t=202868

It seems that newcomers can only post here.

Seek to become a regular employee

Poc for vulnerabilities

To discuss the poc

I am a rookie, ask for correction

This loophole is attributed to

CVE-2015-1538

CVE-2015-1539

CVE-2015-3824

CVE-2015-3826

CVE-2015-3827

CVE-2015-3828

CVE-2015-3829

Reference website:

1. Http://blog.zimperium.com/experts-found-a-unicorn-in-the-heart-of-android/ (blog of the author who may need scientific access to the Internet to discover this loophole)

2. Https://threatpost.com/android-stagefright-flaws-put-950-million-devices-at-risk/113960(, this is also a news report)

3. Http://www.freebuf.com/news/73411.html(, this is a news report)

4. Http://www.freebuf.com/articles/terminal/73517.html (there is a little information in this)

False details:

The problem code is in media/libstagefright/MPEG4Extractor.cpp,media/libstagefright/SampleTable.cpp.

Media/libstagefright/ESDS.cpp

Among them, 7 sites of MPEG4Extractor.cpp were repaired the most.

SampleTable.cpp,4

ESDS.cpp,3

Attachments will provide these files and their associated header files (before and after repair), hoping to discuss a way to use them as soon as possible, preferably before August. :) to give one of the examples, refer to website 4 for some examples other than these examples, which can also be compared with the diff tool. There are three types of vulnerabilities known this time, namely, out-of-bounds read vulnerability, integer underflow vulnerability and integer overflow vulnerability. A high-risk integer overflow vulnerability has been fixed in SampleTable.cpp.

Here's an example of an out-of-bounds read vulnerability: MPEG4Extractor.cpp (partial fix of this vulnerability, incomplete)

= = before repair =

Status_t MPEG4Extractor::parse3GPPMetaData (off64_t offset, size_t size, int depth) {

/ * pay attention to size*/

If (size

< 4 ) { return ERROR_MALFORMED; } /*注意*/ uint8_t *buffer = new (std::nothrow) uint8_t[size]; if (buffer == NULL) { return ERROR_MALFORMED; } if (mDataSource->

ReadAt (

Offset, buffer, size)! = (ssize_t) size) {

Delete [] buffer

Buffer = NULL

Return ERROR_IO

}

= after repair =

Status_t MPEG4Extractor::parse3GPPMetaData (off64_t offset, size_t size, int depth) {

/ * Note * /

If (size

< 4 || size == SIZE_MAX) { return ERROR_MALFORMED; } /*注意*/ uint8_t *buffer = new (std::nothrow) uint8_t[size + 1]; if (buffer == NULL) { return ERROR_MALFORMED; } if (mDataSource->

ReadAt (

Offset, buffer, size)! = (ssize_t) size) {

Delete [] buffer

Buffer = NULL

Return ERROR_IO

}

= = Analysis = personal understanding, please do not hesitate to give me your advice

The function parse3GPPMetaData, if it doesn't end in NUL,

If (buffer [size-1]! ='\ 0') {

Char tmp [4]

Sprintf (tmp, "% u", buffer [size-1])

MFileMetaData- > setCString (kKeyCDTrackNumber, tmp)

An out-of-bounds read occurs when the setCString does not know where it ends.

=

For details, please see the attached description .txt.

Attachment: http://pan.baidu.com/share/link?shar...&uk=1460778035

Tags: Vulnerabilities examples integers attachments files news news reports websites details references Android generous advice personal code author information functions as much as possible tools newcomers Apple Docker Huawei Linux macOS MariaDB Microsoft MySQL NVidia OPPO Reno Apple OPPO Reno MySQL Shulou Tech Info Xiaomi