Recent from talks
Nothing was collected or created yet.
Stagefright (bug)
View on Wikipedia
Logo of the Stagefright library bug | |
| CVE identifiers | CVE-2015-1538, CVE-2015-1539, CVE-2015-3824, CVE-2015-3826, CVE-2015-3827, CVE-2015-3828, CVE-2015-3829, CVE-2015-3864 (Stagefright 1.0), CVE-2015-6602 (Stagefright 2.0) |
|---|---|
| Date discovered | 27 July 2015 |
| Date patched | 3 August 2015 |
| Discoverer | Joshua Drake (Zimperium) |
| Affected software | Android 2.2 "Froyo" and later (Stagefright 1.0), Android 1.5 "Cupcake" to Android 5.1 "Lollipop" (Stagefright 2.0) |
Stagefright is the name given to a group of software bugs that affect versions from 2.2 "Froyo" up until 5.1.1 "Lollipop"[1] of the Android operating system exposing an estimated 950 million devices (95% of all Android devices) at the time.[1] The name is taken from the affected library, which among other things, is used to unpack MMS messages.[2] Exploitation of the bug allows an attacker to perform arbitrary operations on the victim's device through remote code execution and privilege escalation.[3] Security researchers demonstrate the bugs with a proof of concept that sends specially crafted MMS messages to the victim device and in most cases requires no end-user actions upon message reception to succeed—the user does not have to do anything to 'accept' exploits using the bug; it happens in the background. A phone number is the only information needed to carry out the attack.[4][5][6][1]
The underlying attack vector exploits certain integer overflow vulnerabilities in the Android core component called libstagefright,[7][8][9] which is a complex software library implemented primarily in C++ as part of the Android Open Source Project (AOSP) and used as a backend engine for playing various multimedia formats such as MP4 files.[1][10]
The discovered bugs have been provided with multiple Common Vulnerabilities and Exposures (CVE) identifiers, CVE-2015-1538, CVE-2015-1539, CVE-2015-3824, CVE-2015-3826, CVE-2015-3827, CVE-2015-3828, CVE-2015-3829 and CVE-2015-3864 (the latter one has been assigned separately from the others), which are collectively referred to as the Stagefright bug.[11][12][13]
In order to exploit the vulnerability one does not specifically need an MMS message.[14] Any other processing of specifically crafted media by the vulnerable component is enough. Vulnerable software can include media players/galleries, web browsers, and file managers showing thumbnails.
History
[edit]The Stagefright bug was discovered by Joshua Drake from the Zimperium security firm, and was publicly announced for the first time on July 27, 2015. Prior to the announcement, Drake reported the bug to Google in April 2015, which incorporated a related bugfix into its internal source code repositories two days after the report.[4][5][6][1] In July 2015, Evgeny Legerov, a Moscow-based security researcher, announced that he had found at least two similar heap overflow zero-day vulnerabilities in the Stagefright library, claiming at the same time that the library has been already exploited for a while. Legerov also confirmed that the vulnerabilities he discovered become unexploitable by applying the patches Drake submitted to Google.[3][15]
The public full disclosure of the Stagefright bug, presented by Drake, took place on August 5, 2015 at the Black Hat USA[16] computer security conference, and on August 7, 2015 at the DEF CON 23[17] hacker convention.[1] Following the disclosure, on August 5, 2015, Zimperium publicly released the source code of a proof-of-concept exploit, actual patches for the Stagefright library (although the patches were already publicly available since early May 2015 in the AOSP and other open-source repositories[18][19]), and an Android application called "Stagefright detector" that tests whether an Android device is vulnerable to the Stagefright bug.[12][20]
On August 13, 2015, another Stagefright vulnerability, CVE-2015-3864, was published by Exodus Intelligence.[13] This vulnerability was not mitigated by existing fixes of already known vulnerabilities. CyanogenMod team published a notice that patches for CVE-2015-3864 have been incorporated in CyanogenMod 12.1 source on August 13, 2015.[21]
On October 1, 2015, Zimperium released details of further vulnerabilities, also known as Stagefright 2.0. This vulnerability affects specially crafted MP3 and MP4 files that execute their payload when played using the Android Media server. The vulnerability has been assigned identifier CVE-2015-6602 and was found in a core Android library called libutils; a component of Android that has existed since Android was first released. Android 1.5 through 5.1 are vulnerable to this new attack and it is estimated that one billion devices are affected.[22]
Implications
[edit]While Google maintains the Android's primary codebase and firmware, updates for various Android devices are the responsibility of wireless carriers and original equipment manufacturers (OEMs). As a result, propagating patches to the actual devices often introduces long delays due to a large fragmentation between the manufacturers, device variants, Android versions, and various Android customizations performed by the manufacturers;[23][24] furthermore, many older or lower cost devices may never receive patched firmware at all.[25] Many of the unmaintained devices would need to be rooted, which violates the terms of many wireless contracts. Therefore, the nature of Stagefright bug highlights the technical and organizational difficulties associated with the propagation of Android patches.[5][26]
As an attempt to address the delays and issues associated with the propagation of Android patches, on August 1, 2015 Zimperium formed the Zimperium Handset Alliance (ZHA) as an association of different parties interested in exchanging information and receiving timely updates on Android's security-related issues. Members of the ZHA also received source code of the Zimperium's proof-of-concept Stagefright exploit before it was publicly released. As of August 6, 2015[update], 25 of the largest Android device OEMs and wireless carriers have joined the ZHA.[12][18][27]
Mitigation
[edit]Certain mitigations of the Stagefright bug exist for devices that run unpatched versions of Android, including disabling the automatic retrieval of MMS messages and blocking the reception of text messages from unknown senders. However, these two mitigations are not supported in all MMS applications (the Google Hangouts app, for example, only supports the former),[3][5] and they do not cover all feasible attack vectors that make exploitation of the Stagefright bug possible by other means, such as by opening or downloading a malicious multimedia file using the device's web browser.[7][28]
At first it was thought that further mitigation could come from the address space layout randomization (ASLR) feature that was introduced in Android 4.0 "Ice Cream Sandwich", fully enabled in Android 4.1 "Jelly Bean";[7][29] The version of Android 5.1 "Lollipop" includes patches against the Stagefright bug.[11][30] Unfortunately, later results and exploits like Metaphor that bypass ASLR were discovered in 2016.
As of Android 10, software codecs were moved to a sandbox which effectively mitigates this threat for devices capable of running this version of the OS.[7][31]
See also
[edit]- Android version history – a list and descriptions of the released versions of Android
- Another MMS remote code execution vulnerability was found in 2020 for Samsung Android 8.0 (Oreo) to 10.x (Q) smartphones CVE-2020-8899
References
[edit]- ^ a b c d e f "Experts Found a Unicorn in the Heart of Android". zimperium.com. July 27, 2015. Retrieved July 28, 2015.
- ^ "Stagefright: Everything you need to know about Google's Android megabug".
- ^ a b c "How to Protect from StageFright Vulnerability". zimperium.com. July 30, 2015. Retrieved July 31, 2015.
- ^ a b Rundle, Michael (July 27, 2015). "'Stagefright' Android bug is the 'worst ever discovered'". Wired. Retrieved July 28, 2015.
- ^ a b c d Vaughan-Nichols, Steven J. (July 27, 2015). "Stagefright: Just how scary is it for Android users?". ZDNet. Retrieved July 28, 2015.
- ^ a b Hern, Alex (July 28, 2015). "Stagefright: new Android vulnerability dubbed 'heartbleed for mobile'". The Guardian. Retrieved July 29, 2015.
- ^ a b c d Wassermann, Garret (July 29, 2015). "Vulnerability Note VU#924951 – Android Stagefright contains multiple vulnerabilities". CERT. Retrieved July 31, 2015.
- ^ "Android Interfaces: Media". source.android.com. May 8, 2015. Retrieved July 28, 2015.
- ^ "platform/frameworks/av: media/libstagefright". android.googlesource.com. July 28, 2015. Retrieved July 31, 2015.
- ^ Kumar, Mohit (July 27, 2015). "Simple Text Message to Hack Any Android Phone Remotely". thehackernews.com. Retrieved July 28, 2015.
- ^ a b Hackett, Robert (July 28, 2015). "Stagefright: Everything you need to know about Google's Android megabug". Fortune. Retrieved July 29, 2015.
- ^ a b c "Stagefright: Vulnerability Details, Stagefright Detector tool released". zimperium.com. August 5, 2015. Retrieved August 25, 2015.
- ^ a b Gruskovnjak, Jordan; Portnoy, Aaron (August 13, 2015). "Stagefright: Mission Accomplished?". exodusintel.com. Retrieved October 8, 2015.
- ^ "Stagefright Detector - Apps on Google Play".
- ^ Thomas Fox-Brewster (July 30, 2015). "Russian 'Zero Day' Hunter Has Android Stagefright Bugs Primed For One-Text Hacks". Forbes. Retrieved July 31, 2015.
- ^ "Stagefright: Scary Code in the Heart of Android". blackhat.com. August 21, 2015. Retrieved August 25, 2015.
- ^ "Stagefright: Scary Code in the Heart of Android". defcon.org. August 7, 2015. Retrieved August 25, 2015.
- ^ a b "ZHA – Accelerating Roll-out of Security Patches". zimperium.com. August 1, 2015. Retrieved August 25, 2015.
- ^ Joshua J. Drake (May 5, 2015). "Change Ie93b3038: Prevent reading past the end of the buffer in 3GPP". android-review.googlesource.com. Retrieved August 25, 2015.
- ^ Eric Ravenscraft (August 7, 2015). "Stagefright Detector Detects if Your Phone Is Vulnerable to Stagefright". lifehacker.com. Retrieved August 25, 2015.
- ^ "More Stagefright". www.cyanogenmod.org. August 13, 2015. Archived from the original on August 13, 2015. Retrieved August 15, 2015.
- ^ "Stagefright 2.0 Vulnerabilities Affect 1 Billion Android Devices". threatpost.com. October 1, 2015. Retrieved October 1, 2015.
- ^ Jamie Lendino (July 27, 2015). "950M phones at risk for 'Stagefright' text exploit thanks to Android fragmentation". extremetech.com. Retrieved July 31, 2015.
- ^ Jordan Minor (July 30, 2015). "There's (Almost) Nothing You Can Do About Stagefright". PC Magazine. Retrieved July 31, 2015.
- ^ Cooper Quintin (July 31, 2015). "StageFright: Android's Heart of Darkness". Electronic Frontier Foundation. Retrieved August 2, 2015.
- ^ Phil Nickinson (July 27, 2015). "The 'Stagefright' exploit: What you need to know". Android Central. Retrieved July 29, 2015.
- ^ Lucian Armasu (August 6, 2015). "Zimperium Releases Stagefright Vulnerability Detector". Tom's Hardware. Retrieved August 25, 2015.
- ^ Joshua Drake (August 5, 2015). "Stagefright: Scary Code in the Heart of Android – Researching Android Multimedia Framework Security" (PDF). blackhat.com. pp. 31–39. Retrieved August 25, 2015.
- ^ Jon Oberheide (July 16, 2012). "Exploit Mitigations in Android Jelly Bean 4.1". duosecurity.com. Retrieved July 31, 2015.
- ^ Michael Crider (July 28, 2015). "Google Promises a Stagefright Security Update For Nexus Devices Starting Next Week". androidpolice.com. Retrieved July 31, 2015.
- ^ Jeff Vander Stoep, Android Security & Privacy Team and Chong Zhang, Android Media Team (May 9, 2019). "Queue Hardening Enhancements". android-developers.googleblog.com. Retrieved September 25, 2019.
{{cite web}}:|author=has generic name (help)CS1 maint: multiple names: authors list (link)
External links
[edit]- Stagefright demo by zLabs on YouTube, August 5, 2015
- Exploits database for the Android platform
- CVE security vulnerabilities for the Google Android
- Google's Android codebase patches against the Stagefright bug: patch #1, patch #2 and patch #3
Stagefright (bug)
View on GrokipediaBackground
libstagefright Library
libstagefright is an open-source multimedia framework integrated into the Android operating system, functioning as a native-level engine for handling audio and video decoding, encoding, recording, and playback.[7] It provides built-in software codecs for common media formats, supports session management, time-synchronized rendering, transport controls, and digital rights management (DRM), enabling efficient multimedia processing across Android devices.[7] Primarily written in C++, libstagefright serves as the core component for media operations, allowing applications to play and manipulate multimedia content without direct hardware dependencies. libstagefright was developed by adapting and open-sourcing elements from PacketVideo's proprietary OpenCORE multimedia framework.[7] Key components of libstagefright include the AwesomePlayer, which orchestrates playback by connecting media sources to decoders; the MediaExtractor, responsible for parsing container formats such as MP4 and extracting samples; and the OMXCodec, which interfaces with OpenMAX IL (OMX) for codec operations, supporting both software and hardware-accelerated decoding.[8] Parsers for specific formats like AAC and MPEG handle format-specific data extraction, while integration with the higher-level MediaPlayer framework allows Java-based applications to invoke these native capabilities seamlessly.[8] Additionally, the libstagefrighthw.so plugin facilitates custom hardware codec integration via OMX components.[7] libstagefright was added to the Android Open Source Project (AOSP) during the development of Android 2.0 (Eclair) in 2009, with optional use in early devices, becoming the default media engine in Android 2.3 (Gingerbread).[3][9] These developments have been distributed via AOSP releases and monthly security updates, ensuring compatibility and performance improvements over time.[7] Architecturally, libstagefright processes media streams in user space by initiating with the MediaExtractor to demultiplex the file, extract metadata (such as dimensions, frame rates, and thumbnails), and provide access to raw samples.[8] These samples are then routed through OMXCodec to appropriate decoders, where the OMX subsystem manages buffer allocation, queuing, and transfer for efficient data flow and synchronization between audio and video tracks using mechanisms like TimedEventQueue.[8] This pipeline operates via inter-process communication (IPC) invocations, ensuring modular interaction while minimizing latency in playback.[8] libstagefright plays a central role in the broader Android media framework, interfacing with services like MediaPlayerService for application-level control.[7]Android Media Processing
The Android media framework provides a layered architecture for handling multimedia content, encompassing high-level APIs, native services, and hardware interfaces to enable playback, recording, and rendering across applications. At the application level, components such as MediaPlayer offer a straightforward interface for developers to request media operations, abstracting the underlying complexity by managing playback states, buffering, and synchronization. MediaCodec serves as a lower-level API for direct access to encoding and decoding processes, allowing fine-grained control over input/output buffers and codec configurations, while SurfaceFlinger acts as the system compositor responsible for rendering surfaces from decoded frames onto the display. The typical workflow begins with an application invoking MediaPlayer or MediaCodec via the android.media package, which triggers a chain of interactions: data is parsed and decoded in the native layer, hardware acceleration is engaged if available through OpenMAX IL components, and final output is composited by SurfaceFlinger for presentation.[7][8] libstagefright integrates as the core native engine within this framework, serving as the default implementation for parsing container formats like MP4 and decoding common codecs such as H.264 and AAC, thereby handling the bulk of media extraction and processing tasks. Upon receiving a playback request from the application framework, libstagefright is invoked through the MediaPlayerService, which orchestrates session management and resource allocation; this invocation relies on Binder IPC to facilitate secure, efficient inter-process communication between the client application process and the mediaserver process hosting libstagefright. For instance, the AwesomePlayer class within libstagefright coordinates MediaExtractor for demuxing media streams and OMXCodec for interfacing with hardware or software decoders, ensuring seamless transition from raw input files to renderable buffers passed to SurfaceFlinger. This design positions libstagefright as a pivotal middleware, bridging Java-based APIs and kernel-level hardware drivers while supporting extensibility for vendor-specific optimizations.[7][8] Prior to 2015, the security boundaries in Android's media framework were defined primarily by user ID (UID) isolation, with the mediaserver process running under the dedicated UID AID_MEDIA (1013) to process potentially untrusted media inputs, but without robust enforcement mechanisms like mandatory access controls. Design assumptions trusted media inputs to be benign or adequately validated at the application level, leading to insufficient bounds checking in native code and exposing the framework to memory corruption risks during parsing and decoding. Sandboxing was limited to basic Linux user/group separations and discretionary access controls, lacking the fine-grained policies needed to contain exploits within media processes; for example, the mediaserver retained elevated privileges for hardware access, allowing potential privilege escalation if vulnerabilities were triggered. SELinux was introduced in permissive mode in Android 4.3, with partial enforcement for select processes in Android 4.4, reaching full enforcement for all userspace processes in Android 5.0.[10][11] Historically, the media framework evolved from Android 1.0 with rudimentary OpenCORE-based components, but libstagefright was added to AOSP during Android 2.0 (Eclair) development as a more modular, efficient replacement to centralize media handling and reduce dependencies on proprietary libraries. It was optionally used in Android 2.2 (Froyo), becoming the dominant engine in Android 2.3 (Gingerbread) through Android 5.1 (Lollipop), where it processed the majority of multimedia tasks in billions of devices, benefiting from incremental optimizations in codec support and performance but inheriting legacy assumptions about input trustworthiness that amplified its role as a critical attack surface. This era underscored libstagefright's centrality, as it powered default behaviors in core apps like the Gallery and Messaging, directly influencing system-wide media interactions until architectural refinements in subsequent releases diversified the framework.[12][11]Discovery and History
Initial Research and Reporting
The initial research into the Stagefright vulnerabilities began in early 2015 at Zimperium's zLabs, where security researchers focused on analyzing the libstagefright library's media parsers as part of broader mobile exploitation studies.[3] Joshua J. Drake, then Vice President of Platform Research and Exploitation at Zimperium, led the effort, leveraging fuzzing techniques to identify weaknesses in the library's handling of multimedia files.[13] This work built on prior mobile security investigations by Zimperium team members, emphasizing ethical hacking practices to uncover systemic risks in Android's media processing components.[4] By April 2015, the team had uncovered the first set of critical bugs during targeted analysis of libstagefright's MPEG4 parsers, including multiple buffer overflows and integer underflows that could lead to memory corruption.[3] These early findings highlighted vulnerabilities in the native C++ code responsible for parsing binary media formats, potentially exploitable without user interaction.[13] Additional issues were identified through extended fuzzing runs over subsequent weeks, resulting in approximately five critical memory corruptions reported in total from the initial phases.[3] In line with coordinated vulnerability disclosure protocols, Zimperium privately reported the bugs to Google in early April 2015, submitting patches for the initial discoveries and requesting a 90-day embargo to allow for remediation.[13] Google responded promptly, accepting and integrating the fixes into internal Android branches within days and notifying OEM partners to facilitate broader patching.[3] This process involved collaboration with other researchers, including Amir Etemadieh, Collin Mulliner, and Mathew Solnik, who contributed to validating the findings and ensuring responsible handling.[3] The private reporting phase underscored Zimperium's commitment to mitigating widespread risks before public awareness could enable malicious exploitation.[4]Public Disclosure and Variants
The public disclosure of the Stagefright vulnerabilities began with a blog post from Zimperium on July 27, 2015, where researchers detailed the flaws in Android's libstagefright library and highlighted their potential to affect an estimated 950 million devices, representing 95% of Android users at the time.[1] This announcement followed private coordination with Google, which had been notified earlier in the year, marking a shift from internal reporting to broader awareness. The revelation quickly garnered significant media attention, with outlets emphasizing the remote exploitability via MMS messages and the scale of exposure across Android versions from 2.2 to 5.1.1.[14] Further details were presented at major security conferences, including Joshua Drake's talk at Black Hat USA on August 5, 2015, which outlined the vulnerabilities' technical aspects and attack surfaces within the multimedia framework.[3] Two days later, on August 7, 2015, Drake delivered an updated presentation at DEF CON 23, expanding on the implications for Android's media processing ecosystem and demonstrating the bugs' persistence in unpatched devices. In response to the growing concerns, Zimperium announced the formation of the Zimperium Handset Alliance (ZHA) on August 1, 2015, a coalition initially involving more than 16 original equipment manufacturers (OEMs) and carriers, which grew to over 25.[4][15] Subsequent developments revealed variants of the original flaws. On August 13, 2015, Exodus Intelligence publicly disclosed an additional vulnerability, designated CVE-2015-3864, stemming from an incomplete patch in Google's initial remediation efforts, which could still enable remote code execution in affected libstagefright components.[16] Later, on October 1, 2015, Zimperium announced Stagefright 2.0, comprising two new vulnerabilities (CVE-2015-6602 and CVE-2015-3874) in the library's handling of MP3 and MP4 files, potentially impacting over one billion Android devices through web-based or app-triggered processing.[5] Google responded swiftly to the initial disclosure by releasing preliminary patches to the Android Open Source Project (AOSP) on August 3, 2015, targeting Android 5.1 Lollipop, with over-the-air updates beginning for Nexus devices shortly thereafter.[17] These efforts, combined with industry reactions, underscored the vulnerabilities' urgency and prompted a reevaluation of Android's update mechanisms.Technical Vulnerabilities
Stagefright 1.0 Bugs
The Stagefright 1.0 bugs refer to a cluster of critical vulnerabilities discovered in the libstagefright multimedia library of Android versions prior to 5.1.1, primarily affecting MP4 and related media container parsing. These flaws, publicly disclosed in July 2015, encompass multiple Common Vulnerabilities and Exposures (CVEs) that enable remote code execution through memory corruption in the mediaserver process.[2][3] Key vulnerabilities include CVE-2015-1538, an integer overflow in the SampleTable::setSampleToChunkParams function during MP4 atom processing, such as 'stsc', 'ctts', 'stts', and 'stss' atoms, where unchecked 32-bit multiplications of sample counts lead to heap buffer overflows. Similarly, CVE-2015-1539 involves multiple integer underflows in the ESDS::parseESDescriptor function when handling crafted ESDS atoms, resulting in out-of-bounds memory access and potential arbitrary code execution. Additional flaws span CVE-2015-3824 to CVE-2015-3829 and include CVE-2015-3832 and CVE-2015-3836, covering integer overflows and underflows in various media codec parsers: for instance, CVE-2015-3824 triggers an overflow in MPEG4Extractor::parseChunk with 'tx3g' atoms due to mishandled text sample sizes, while CVE-2015-3827 and CVE-2015-3829 affect 'covr' atom processing through underflows in chunk size calculations and overflows when chunk_data_size reaches SIZE_MAX, and CVE-2015-3828 exploits underflows in 3GPP metadata parsing for sizes below 6 bytes. CVE-2015-3832 involves multiple buffer overflows in MPEG4Extractor.cpp, and CVE-2015-3836 is a buffer overflow in the Sonivox Parse_wave function affecting libstagefright. These mechanisms generally involve crafted MP4 metadata that bypasses size validations, causing heap corruption via out-of-bounds writes or reads in libstagefright's C++ code.[18][19][2][9][20][21] The root causes of these bugs stem from inadequate input validation in libstagefright, which assumes media inputs from trusted sources like the system's mediaserver and lacks robust bounds checking for atom sizes, sample counts, and metadata lengths in MP4 and 3GPP containers. This design oversight, common in performance-optimized native code, allows maliciously constructed files to manipulate integer arithmetic and buffer allocations without triggering early errors.[3][9]Stagefright 2.0 Vulnerability
Stagefright 2.0 refers to a pair of critical vulnerabilities identified in Android's media processing libraries shortly after the initial Stagefright flaws, expanding the threat landscape beyond the original parsing issues in libstagefright. These bugs, disclosed by Zimperium zLabs in October 2015, enable remote code execution through malicious multimedia files and affect a wider range of devices than their predecessors.[5][22] The primary vulnerability, designated CVE-2015-6602, resides in the libutils library, which handles metadata parsing for audio and video files. It involves a memory corruption flaw triggered when processing specially crafted metadata in MP3 or MP4 files, allowing attackers to execute arbitrary code within the mediaserver process. This issue stems from improper handling of file data during extraction, leading to out-of-bounds access or similar corruption that can be exploited remotely. A second related flaw, CVE-2015-3876, affects libstagefright directly and similarly permits remote code execution via malformed media metadata, though it is limited to Android 5.0 and later versions. Both can be triggered through third-party applications, web browsers, or other media-handling components that invoke these libraries, without relying on MMS messaging as in the precursor Stagefright 1.0 bugs.[22][23][24] Unlike the initial Stagefright vulnerabilities, which primarily targeted buffer overflows in video parsing on Android 2.2 through 5.1, Stagefright 2.0 has a broader scope due to the libutils component's presence since Android 1.0, potentially impacting devices as old as those running Android 1.5 or later if third-party software utilizes the vulnerable functions. This extends the risk to nearly 1 billion Android devices worldwide at the time, including many unpatched older models. The memory corruption in these flaws is subtler than the more overt overflows of Stagefright 1.0, making detection more challenging as it involves indirect manipulation of memory structures rather than immediate crashes from excessive data writes. Zimperium's analysis highlighted how these issues could evade basic integrity checks in media pipelines, though specific bypasses of mitigations like Address Space Layout Randomization (ASLR) were not detailed in the initial advisory and emerged in later exploit research.[5][25][26]Exploitation Methods
Primary Attack Vectors
The primary attack vector for the Stagefright vulnerabilities exploited the automatic processing of multimedia messaging service (MMS) messages in Android devices. Attackers could send a specially crafted MP4 file embedded in an MMS to the victim's phone number, triggering the libstagefright library to parse the malicious media without any user interaction, enabling remote code execution in the mediaserver process.[27] This zero-click mechanism operated because Android's default settings in apps like Google Hangouts and the native Messenger automatically retrieved and processed MMS content upon receipt, often before notifying the user or displaying the message.[28] The attack required only the target's phone number, making it highly scalable for mass exploitation, and the malicious MMS could be deleted post-processing to leave no visible trace.[12] Beyond MMS, attackers leveraged several other delivery methods to invoke libstagefright parsing. In web-based attacks, malicious media files could be embedded in HTML5<video> tags on websites, prompting browsers like Chrome to automatically download and process the content in the background without user prompts or clicks.[28] App-embedded vectors included files processed by built-in applications such as the Gallery app, Email clients, or the DownloadManager, where scanning or opening infected media triggered the vulnerability.[12] Additionally, proximity-based sharing via Bluetooth (through BluetoothOppService) or NFC could deliver crafted files, with the MediaScanner service automatically invoking libstagefright upon receipt.[28]
For MMS attacks to succeed in default configurations, no user action was necessary, though mitigation like disabling auto-retrieve in messaging apps could block them.[27] Other vectors generally required some form of file delivery, such as visiting a compromised site or receiving shared media, but still often bypassed explicit user consent due to Android's automated media handling.[12]
Following the public disclosure in July 2015, awareness of the vulnerabilities prompted the development and sharing of proof-of-concept exploits that expanded practical demonstrations to web and app contexts, highlighting risks in browser-based media playback and third-party integrations beyond the initial MMS focus.[28] This evolution underscored the library's broad exposure across Android's multimedia ecosystem, with over 11 distinct vectors identified at discovery, including network, physical, and app-mediated paths.
