Top Banner
Fuzzing Android OMX Mingjian Zhou and Chiachih Wu C0RE Team
35

Fuzzing Android OMX HITCON v2hitcon.org/2016/CMT/slide/day2-r2-c-1.pdf · Agenda • Introduction • Fuzzing Android OMX • Confirmed Vulnerabilities • Patterns of OMX Vulnerabilities

Apr 01, 2018

Download

Documents

dohanh
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Fuzzing Android OMX HITCON v2hitcon.org/2016/CMT/slide/day2-r2-c-1.pdf · Agenda • Introduction • Fuzzing Android OMX • Confirmed Vulnerabilities • Patterns of OMX Vulnerabilities

FuzzingAndroidOMX

Mingjian ZhouandChiachih WuC0RETeam

Page 2: Fuzzing Android OMX HITCON v2hitcon.org/2016/CMT/slide/day2-r2-c-1.pdf · Agenda • Introduction • Fuzzing Android OMX • Confirmed Vulnerabilities • Patterns of OMX Vulnerabilities

AboutUs• Mingjian Zhou,周明建

– Securityresearcher@360C0REteam– FocusedonAndroidvulnerabilityresearchandexploit

development• Chiachih Wu,吳家志 (@chiachih_wu)

– Securityresearcher@360C0REteam– Android/Linuxsystemsecurityresearch– C0REteam(c0reteam.org)foundingmember

• C0RETeam– Asecurity-focusedgroupstartedinmid-2015– WitharecentfocusontheAndroid/Linuxplatform,theteam

aimstodiscoverzero-dayvulnerabilities,developproof-of-conceptexploits,andexplorepossibledefenses

Page 3: Fuzzing Android OMX HITCON v2hitcon.org/2016/CMT/slide/day2-r2-c-1.pdf · Agenda • Introduction • Fuzzing Android OMX • Confirmed Vulnerabilities • Patterns of OMX Vulnerabilities
Page 4: Fuzzing Android OMX HITCON v2hitcon.org/2016/CMT/slide/day2-r2-c-1.pdf · Agenda • Introduction • Fuzzing Android OMX • Confirmed Vulnerabilities • Patterns of OMX Vulnerabilities
Page 5: Fuzzing Android OMX HITCON v2hitcon.org/2016/CMT/slide/day2-r2-c-1.pdf · Agenda • Introduction • Fuzzing Android OMX • Confirmed Vulnerabilities • Patterns of OMX Vulnerabilities
Page 6: Fuzzing Android OMX HITCON v2hitcon.org/2016/CMT/slide/day2-r2-c-1.pdf · Agenda • Introduction • Fuzzing Android OMX • Confirmed Vulnerabilities • Patterns of OMX Vulnerabilities

Agenda

• Introduction• FuzzingAndroidOMX• ConfirmedVulnerabilities• PatternsofOMXVulnerabilities

Page 7: Fuzzing Android OMX HITCON v2hitcon.org/2016/CMT/slide/day2-r2-c-1.pdf · Agenda • Introduction • Fuzzing Android OMX • Confirmed Vulnerabilities • Patterns of OMX Vulnerabilities

INTRODUCTIONAboutOMX

Page 8: Fuzzing Android OMX HITCON v2hitcon.org/2016/CMT/slide/day2-r2-c-1.pdf · Agenda • Introduction • Fuzzing Android OMX • Confirmed Vulnerabilities • Patterns of OMX Vulnerabilities

WhatisOMX(1/2)

• OpenMediaAcceleration,akaOpenMAX,oftenshortenedas“OMX”

• WIKI:anon-proprietaryandroyalty-freecross-platform setof C-language programminginterfaces thatprovidesabstractionsforroutinesespeciallyusefulforaudio,video,andstillimagesprocessing.

Page 9: Fuzzing Android OMX HITCON v2hitcon.org/2016/CMT/slide/day2-r2-c-1.pdf · Agenda • Introduction • Fuzzing Android OMX • Confirmed Vulnerabilities • Patterns of OMX Vulnerabilities

WhatisOMX(2/2)

Page 10: Fuzzing Android OMX HITCON v2hitcon.org/2016/CMT/slide/day2-r2-c-1.pdf · Agenda • Introduction • Fuzzing Android OMX • Confirmed Vulnerabilities • Patterns of OMX Vulnerabilities

OMXinAndroid(1/2)

• OMXIntegrationLayer(IL)– providesastandardizedwayforStagefright torecognizeandusecustomhardware-basedmultimediacodecscalledcomponents.

• VendorsprovidetheOMXpluginwhichlinkscustomcodeccomponentstoStagefright.

• Customcodecsmust beimplementedaccordingtotheOMXILcomponentstandard.

Page 11: Fuzzing Android OMX HITCON v2hitcon.org/2016/CMT/slide/day2-r2-c-1.pdf · Agenda • Introduction • Fuzzing Android OMX • Confirmed Vulnerabilities • Patterns of OMX Vulnerabilities

OMXinAndroid(2/2)

Stagefright

VideoOMXComponent

AudioOMXComponent

MediaPlayerService

VideoDriversAudioDrivers

OMXIL

Kernel

MediaServer

SoftA/VCodecs

MusicUserAPPs MMS …

BinderIPC

IOCTL

Binder

Page 12: Fuzzing Android OMX HITCON v2hitcon.org/2016/CMT/slide/day2-r2-c-1.pdf · Agenda • Introduction • Fuzzing Android OMX • Confirmed Vulnerabilities • Patterns of OMX Vulnerabilities

OMXCodecs

• Androidprovidesbuilt-insoftwarecodecsforcommonmediaformats

• Vendors’codecs

Built-inSoftCodecsExample VendorCodecsExample

Page 13: Fuzzing Android OMX HITCON v2hitcon.org/2016/CMT/slide/day2-r2-c-1.pdf · Agenda • Introduction • Fuzzing Android OMX • Confirmed Vulnerabilities • Patterns of OMX Vulnerabilities

WhyOMX?

• Exposedviamultipleattackvectors

• Medianativecodesareoftenvulnerable

Page 14: Fuzzing Android OMX HITCON v2hitcon.org/2016/CMT/slide/day2-r2-c-1.pdf · Agenda • Introduction • Fuzzing Android OMX • Confirmed Vulnerabilities • Patterns of OMX Vulnerabilities

FUZZINGANDROIDOMXAttackSurface&Flow

Page 15: Fuzzing Android OMX HITCON v2hitcon.org/2016/CMT/slide/day2-r2-c-1.pdf · Agenda • Introduction • Fuzzing Android OMX • Confirmed Vulnerabilities • Patterns of OMX Vulnerabilities

TheAttackSurface(1/2)

Stagefright

VideoOMXComponent

AudioOMXComponent

MediaPlayerService

VideoDriversAudioDrivers

OMXIL

Kernel

MediaServer

SoftA/VCodecs

MusicUserAPPs MMS ……

IOCTL

Binder

BinderIPC

Page 16: Fuzzing Android OMX HITCON v2hitcon.org/2016/CMT/slide/day2-r2-c-1.pdf · Agenda • Introduction • Fuzzing Android OMX • Confirmed Vulnerabilities • Patterns of OMX Vulnerabilities

TheAttackSurface(2/2)MediaServer

IOMX

GoogleSoftOMXCodecsSoftVPX

SoftAMR

SoftMP3

SoftG711

VendorOMXPlugins

Qcom plugin

Nvidia plugin

MTKplugin

OMXNodeInstance

APP

BinderIPC

OMXMaster

Page 17: Fuzzing Android OMX HITCON v2hitcon.org/2016/CMT/slide/day2-r2-c-1.pdf · Agenda • Introduction • Fuzzing Android OMX • Confirmed Vulnerabilities • Patterns of OMX Vulnerabilities

OMXInterfaces

• DefinedinIOMXAPI Functions

listNodes ListnamesofallthecodeccomponentallocateNode Createacodeccomponent

allocateBuffer Allocateinput/output buffersforcodec

useBuffer Provide asharebuffertotheserver

emptyBuffer Request(orreceive)anemptyinputbuffer,fillitupwithdataandsendittothecodecforprocessing

fillBuffer Request(orreceive)afilledoutputbuffer,consumeitscontentsandreleaseitbacktothecodec

sendCommand Sendcommandstocodecs, suchaschangingstate,portdisable/enable

getParameter Getcodecs’parameterssetParameter Setcodecs’parameters

Page 18: Fuzzing Android OMX HITCON v2hitcon.org/2016/CMT/slide/day2-r2-c-1.pdf · Agenda • Introduction • Fuzzing Android OMX • Confirmed Vulnerabilities • Patterns of OMX Vulnerabilities

FuzzingFlow

Changethecodecstatefromloadedtoidle

Changethecodecstatefromidletoexecuting

Empty/Fill buffers

Freenode

Start

end

Getthedefaultcodecparameters

Selectacomponent fromthenode list

Generatenewparametersandset

Prepareinputportbuffers

Prepareoutputportbuffers

Page 19: Fuzzing Android OMX HITCON v2hitcon.org/2016/CMT/slide/day2-r2-c-1.pdf · Agenda • Introduction • Fuzzing Android OMX • Confirmed Vulnerabilities • Patterns of OMX Vulnerabilities

CONFIRMEDVULNERABILITIES

Page 20: Fuzzing Android OMX HITCON v2hitcon.org/2016/CMT/slide/day2-r2-c-1.pdf · Agenda • Introduction • Fuzzing Android OMX • Confirmed Vulnerabilities • Patterns of OMX Vulnerabilities

ConfirmedVulnerabilities(1/3)

• By2016/07/07,total21 vulnerabilitiesareconfirmed.– 16 vulnerabilities(15high,1moderate)havebeendisclosedonAndroidSecurityBulletins.

– Otherswillbedisclosedonlater AndroidSecurityBulletins.

• Almostall thecodecsimplementedbyGoogleandvendors(QualComm,Nvidia,MediaTek)arevulnerable.

Page 21: Fuzzing Android OMX HITCON v2hitcon.org/2016/CMT/slide/day2-r2-c-1.pdf · Agenda • Introduction • Fuzzing Android OMX • Confirmed Vulnerabilities • Patterns of OMX Vulnerabilities

ConfirmedVulnerabilities(2/3)

NO. CVE AndroidID Codec1 CVE-2016-2450 ANDROID-27569635 GoogleSoftVPXencoder2 CVE-2016-2451 ANDROID-27597103 GoogleSoftVPXdecoder3 CVE-2016-2452 ANDROID-27662364 GoogleSoftAMRdecoder4 CVE-2016-2477 ANDROID-27251096 QcomlibOmxVdec5 CVE-2016-2478 ANDROID-27475409 QcomlibOmxVdec6 CVE-2016-2479 ANDROID-27532282 QcomlibOmxVdec7 CVE-2016-2480 ANDROID-27532721 Qcom libOmxVdec8 CVE-2016-2481 ANDROID-27532497 Qcom libOmxVenc9 CVE-2016-2482 ANDROID-27661749 Qcom libOmxVdec10 CVE-2016-2483 ANDROID-27662502 Qcom libOmxVenc

Page 22: Fuzzing Android OMX HITCON v2hitcon.org/2016/CMT/slide/day2-r2-c-1.pdf · Agenda • Introduction • Fuzzing Android OMX • Confirmed Vulnerabilities • Patterns of OMX Vulnerabilities

ConfirmedVulnerabilities(3/3)

NO. CVE AndroidID Codec11 CVE-2016-2484 ANDROID-27793163 Google SoftG711decoder12 CVE-2016-2485 ANDROID-27793367 Google SoftGSM decoder13 CVE-2016-2486 ANDROID-27793371 GoogleSoftMP3decoder14 CVE-2016-3747 ANDROID-27903498 Qcom libOmxVenc15 CVE-2016-3746 ANDROID-27890802 Qcom libOmxVdec16 CVE-2016-3765 ANDROID-28168413 Google SoftMPEG2decoder17 CVE-2016-3844 AndroidID-28299517 Notdisclosed yet18 CVE-2016-3835 AndroidID-28920116 Notdisclosed yet19 CVE-2016-3825 AndroidID-28816964 Notdisclosed yet20 CVE-2016-3824 AndroidID-28816827 Notdisclosed yet21 CVE-2016-3823 AndroidID-28815329 Notdisclosed yet

Page 23: Fuzzing Android OMX HITCON v2hitcon.org/2016/CMT/slide/day2-r2-c-1.pdf · Agenda • Introduction • Fuzzing Android OMX • Confirmed Vulnerabilities • Patterns of OMX Vulnerabilities

PATTERNSOFCONFIRMEDVULNERABILITIES

Page 24: Fuzzing Android OMX HITCON v2hitcon.org/2016/CMT/slide/day2-r2-c-1.pdf · Agenda • Introduction • Fuzzing Android OMX • Confirmed Vulnerabilities • Patterns of OMX Vulnerabilities

PatternsofConfirmedVulnerabilities

• MismatchbetweenAndroidOMXframeworkandvendorcodecs’implementation

• Time of checktotime of use• Racecondition• Invalidinput/outputbufferlength

Page 25: Fuzzing Android OMX HITCON v2hitcon.org/2016/CMT/slide/day2-r2-c-1.pdf · Agenda • Introduction • Fuzzing Android OMX • Confirmed Vulnerabilities • Patterns of OMX Vulnerabilities

MismatchbetweenAndroidOMXandvendors’codec(1/2)

• CVE-2016-2480

APP

MediaServer

BinderRequestGET_CONFIG

Config Size:16Config Index:2

Config BufferSize:16

AndroidOMX

VendorCodec

memcpy

allocateConfig

Index:0Size:16

ConfigIndex:1Size:256

ConfigIndex:2Size:256

Page 26: Fuzzing Android OMX HITCON v2hitcon.org/2016/CMT/slide/day2-r2-c-1.pdf · Agenda • Introduction • Fuzzing Android OMX • Confirmed Vulnerabilities • Patterns of OMX Vulnerabilities

MismatchbetweenAndroidOMXandvendors’codec(2/2)

• CVE-2016-2477

APP

MediaServer

VendorExtraConfig

Android OMX

VendorCodecBinderRequestSET_CONFIG

pointer:0x1234

VendorExtraConfig

pointer:0x1234

Read/Writewiththepointer

ReadtheconfigfromAPP

Page 27: Fuzzing Android OMX HITCON v2hitcon.org/2016/CMT/slide/day2-r2-c-1.pdf · Agenda • Introduction • Fuzzing Android OMX • Confirmed Vulnerabilities • Patterns of OMX Vulnerabilities

Time of ChecktoTime of Use(1/2)

NO. CVE AndroidID Codec

1 CVE-2016-2479 ANDROID-27532282 Qcom libOmxVdec

2 CVE-2016-2481 ANDROID-27532497 Qcom libOmxVenc

3 CVE-2016-2482 ANDROID-27661749 Qcom libOmxVdec

4 CVE-2016-2483 ANDROID-27662502 Qcom libOmxVenc

Page 28: Fuzzing Android OMX HITCON v2hitcon.org/2016/CMT/slide/day2-r2-c-1.pdf · Agenda • Introduction • Fuzzing Android OMX • Confirmed Vulnerabilities • Patterns of OMX Vulnerabilities

Time of ChecktoTime of Use(2/2)

APP

Setcodecinputbuffercountto8

SET_PARAMETER

Checkthebuffercountandallocatebuffers

Setcodecinputbuffercountto0x1234

Accessbufferswith0x1234

USE_BUFFER

SET_PARAMETER

USE_BUFFER/FREE_NODE

OOBwrite&Heapoverflow

MediaServer

Page 29: Fuzzing Android OMX HITCON v2hitcon.org/2016/CMT/slide/day2-r2-c-1.pdf · Agenda • Introduction • Fuzzing Android OMX • Confirmed Vulnerabilities • Patterns of OMX Vulnerabilities

RaceCondition

• CVE-2016-3747

APP

MediaServer

Input/outputbuffers

Decoderthread

BinderIPC

USE_BUFFERSEND_COMMAND

Read/write

freeFREE_NODE Binderthread

NOSYNC.

Page 30: Fuzzing Android OMX HITCON v2hitcon.org/2016/CMT/slide/day2-r2-c-1.pdf · Agenda • Introduction • Fuzzing Android OMX • Confirmed Vulnerabilities • Patterns of OMX Vulnerabilities

InvalidInput/Output BufferLength

• Codecsdon’tcheckthebufferlengthNO. CVE AndroidID Codec1 CVE-2016-2450 ANDROID-27569635 GoogleSoftVPXencoder

2 CVE-2016-2451 ANDROID-27597103 GoogleSoftVPXdecoder

3 CVE-2016-2452 ANDROID-27662364 GoogleSoftAMR decoder

4 CVE-2016-2484 ANDROID-27793163 Google SoftG711decoder

5 CVE-2016-2485 ANDROID-27793367 Google SoftGSM decoder

6 CVE-2016-2486 ANDROID-27793371 GoogleSoftMP3decoder

Page 31: Fuzzing Android OMX HITCON v2hitcon.org/2016/CMT/slide/day2-r2-c-1.pdf · Agenda • Introduction • Fuzzing Android OMX • Confirmed Vulnerabilities • Patterns of OMX Vulnerabilities

InvalidInput/outputBufferLength

APP

MediaServer

InputbuffersSize:256

OutputBuffersSize:8

Decode

MemorysharedwithAPP

BinderIPC

USE_BUFFERBuffersize:256

Read256bytes

Write300bytes

USE_BUFFERBuffersize:8

codec

Page 32: Fuzzing Android OMX HITCON v2hitcon.org/2016/CMT/slide/day2-r2-c-1.pdf · Agenda • Introduction • Fuzzing Android OMX • Confirmed Vulnerabilities • Patterns of OMX Vulnerabilities

Conclusion

• AndroidOMXisvulnerable– OMXinterfacesandOMXcodecsareimplementedbyGoogleandvendorsseparately.

– Mediaprocessingiscomplex.• Fuzzingcombinedwithcodeauditingishelpfulforsuchmodules.– Manycodecs&parameters

Page 33: Fuzzing Android OMX HITCON v2hitcon.org/2016/CMT/slide/day2-r2-c-1.pdf · Agenda • Introduction • Fuzzing Android OMX • Confirmed Vulnerabilities • Patterns of OMX Vulnerabilities

AnyQuestions?

• Ifyouprefertoaskoffline,contactus:– Mingjian Zhou• Twitter/Weibo:@Mingjian_Zhou• Mail:[email protected]

– Chiachih Wu• Twitter:@chiachih_wu

Page 34: Fuzzing Android OMX HITCON v2hitcon.org/2016/CMT/slide/day2-r2-c-1.pdf · Agenda • Introduction • Fuzzing Android OMX • Confirmed Vulnerabilities • Patterns of OMX Vulnerabilities

APPENDIX

Page 35: Fuzzing Android OMX HITCON v2hitcon.org/2016/CMT/slide/day2-r2-c-1.pdf · Agenda • Introduction • Fuzzing Android OMX • Confirmed Vulnerabilities • Patterns of OMX Vulnerabilities

References

• Android– https://source.android.com/devices/media/– https://developer.android.com/reference/android/media/MediaCodec.html

• OMX– https://www.khronos.org/openmax/