UniSan - Systems Software and Security Labunisan-slides.pdfConfirmed New Infoleaks (Selected) File...

26
UniSan: Proactive Kernel Memory Initialization to Eliminate Data Leakages Kangjie Lu, Chengyu Song, Taesoo Kim, Wenke Lee School of Computer Science, Georgia Tech

Transcript of UniSan - Systems Software and Security Labunisan-slides.pdfConfirmed New Infoleaks (Selected) File...

Page 1: UniSan - Systems Software and Security Labunisan-slides.pdfConfirmed New Infoleaks (Selected) File Object Leak Bytes Cause CVE rtnetlink.c map 4 Pad CVE-2016-4486 devio.c ci 3 Pad

UniSan:ProactiveKernelMemoryInitializationto

EliminateDataLeakages

Kangjie Lu,Chengyu Song,Taesoo Kim,Wenke Lee

SchoolofComputerScience,GeorgiaTech

Page 2: UniSan - Systems Software and Security Labunisan-slides.pdfConfirmed New Infoleaks (Selected) File Object Leak Bytes Cause CVE rtnetlink.c map 4 Pad CVE-2016-4486 devio.c ci 3 Pad

AnyProblemHere?/*File:drivers/usb/core/devio.c*//*definedatastructure“usbdevfs_connectinfo”*/struct usbdevfs_connectinfo {unsigned int devnum;unsigned char slow;

};

/*createandinitializeobject“ci”struct usbdevfs_connectinfo ci={.devnum=ps->dev->devnum,.slow=ps->dev->speed==USB_SPEED_LOW

};/*copy“ci”touserspace*/copy_to_user(arg,&ci,sizeof(ci));

3-bytepadding

Informationleak!

Page 3: UniSan - Systems Software and Security Labunisan-slides.pdfConfirmed New Infoleaks (Selected) File Object Leak Bytes Cause CVE rtnetlink.c map 4 Pad CVE-2016-4486 devio.c ci 3 Pad

SecurityMechanismsinOSKernelskASLR:Randomizingtheaddressofcode/data

– Preventingcode-reuseandprivilegeescalationattacks

StackGuard:Insertingrandomcanaryinstack– Preventingstackcorruption-basedattacks

Code/data

Memory

Code/data

Memory

Code/data

Memory

1st boot 2nd boot 3rd boot

?

n boot…

Page 4: UniSan - Systems Software and Security Labunisan-slides.pdfConfirmed New Infoleaks (Selected) File Object Leak Bytes Cause CVE rtnetlink.c map 4 Pad CVE-2016-4486 devio.c ci 3 Pad

Randomcanary

TheAssumptionofEffectiveness

Assumption:Noinformationleak

Randomizedaddress

Memory

Asingleinformationleakrendersthesesecuritymechanismsineffective!

kASLR

StackGuard

Page 5: UniSan - Systems Software and Security Labunisan-slides.pdfConfirmed New Infoleaks (Selected) File Object Leak Bytes Cause CVE rtnetlink.c map 4 Pad CVE-2016-4486 devio.c ci 3 Pad

Infoleak intheOS(Linux)Kernel

AccordingtotheCVEdatabase

0

20

40

60

2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016

#ofreportedInfoleakbugsintheLinuxkernelNumber

ThesesecuritymechanismsareoftenbypassedinrealitySensitivedata(e.g.,cryptographickeys)canalsobeleaked.

Page 6: UniSan - Systems Software and Security Labunisan-slides.pdfConfirmed New Infoleaks (Selected) File Object Leak Bytes Cause CVE rtnetlink.c map 4 Pad CVE-2016-4486 devio.c ci 3 Pad

OurresearchaimstoeliminateinformationleaksinOSkernels

Page 7: UniSan - Systems Software and Security Labunisan-slides.pdfConfirmed New Infoleaks (Selected) File Object Leak Bytes Cause CVE rtnetlink.c map 4 Pad CVE-2016-4486 devio.c ci 3 Pad

CausesofInfoleaks• Uninitializeddataread:Readingdatabeforeinitialization,whichmaycontainunclearedsensitivedata

• Out-of-boundread:Readingacrossobjectboundaries

• Use-after-free:Usingfreedpointer/sizethatcanbeattackercontrolled

• Others:Missingpermissioncheck,racecondition

Page 8: UniSan - Systems Software and Security Labunisan-slides.pdfConfirmed New Infoleaks (Selected) File Object Leak Bytes Cause CVE rtnetlink.c map 4 Pad CVE-2016-4486 devio.c ci 3 Pad

CausesofInfoleaks (cont.)Infoleak CausesintheLinuxKernel(since2013)

Uninitializeddataread

Out-of-bound anduse-after-freeread

Others(e.g.,logicerror)

OOBandUAFread(29.1%)

Others(13.6%)

Uninitializeddataread(57.3%)

Ourfocus

Similarly,Chenetal.[APSys’11]showed76%infoleaks (Jan.2010-Mar.2011)arecausedbyuninitializeddatareads

Memorysafety

Modelchecking,etc.

Page 9: UniSan - Systems Software and Security Labunisan-slides.pdfConfirmed New Infoleaks (Selected) File Object Leak Bytes Cause CVE rtnetlink.c map 4 Pad CVE-2016-4486 devio.c ci 3 Pad

FromUninitializedDataReadtoLeak1. Deallocatedmemoryisnotclearedbydefault.2. Allocatedmemoryisnotinitializedbydefault.3. Readingtheuninitializedmemory->leak.

sensitive

UserAallocatesobjectAand

writes“sensitive”intoit

Memory

ObjectA

UserAdeallocatesobjectA;

“sensitive”isnotcleared

UserBallocatesobjectBwithoutInitialization;“sensitive”kept

UserBreadsObjectB;“sensitive”leaked!

1 2 3 4

sensitive sensitive

ObjectB ObjectB

sensitive

Memory Memory

Page 10: UniSan - Systems Software and Security Labunisan-slides.pdfConfirmed New Infoleaks (Selected) File Object Leak Bytes Cause CVE rtnetlink.c map 4 Pad CVE-2016-4486 devio.c ci 3 Pad

Troublemaker:Developer

Missingelementinitialization:Blamethedeveloper.J

Difficulttoavoid,e.g.,–Datastructuredefinitionandobjectinitializationmaybeimplementedbydifferentdevelopers

Page 11: UniSan - Systems Software and Security Labunisan-slides.pdfConfirmed New Infoleaks (Selected) File Object Leak Bytes Cause CVE rtnetlink.c map 4 Pad CVE-2016-4486 devio.c ci 3 Pad

Troublemaker:CompilerDatastructurepadding:AfundamentalfeatureimprovingCPUefficiency

/*bothfields(5bytes)areinitialized*/struct usbdevfs_connectinfo ci={.devnum =ps->dev->devnum,.slow=ps->dev->speed ==

USB_SPEED_LOW};/*leaking3-byteuninitializedpadding

sizeof(ci)=8 */copy_to_user(arg,&ci,sizeof(ci));

struct usbdevfs_connectinfo {unsigned int devnum;unsigned char slow;/*3-bytespadding*/

};

Page 12: UniSan - Systems Software and Security Labunisan-slides.pdfConfirmed New Infoleaks (Selected) File Object Leak Bytes Cause CVE rtnetlink.c map 4 Pad CVE-2016-4486 devio.c ci 3 Pad

CSpecifications(C11)

Chapter§6.2.6.1/6

“Whenavalueisstoredinanobjectofstructureoruniontype,includinginamemberobject,thebytesoftheobjectrepresentationthatcorrespondtoanypaddingbytestakeunspecifiedvalues.”

Page 13: UniSan - Systems Software and Security Labunisan-slides.pdfConfirmed New Infoleaks (Selected) File Object Leak Bytes Cause CVE rtnetlink.c map 4 Pad CVE-2016-4486 devio.c ci 3 Pad

ResponsesfromtheLinuxCommunity

Doubted

ConfirmedKees Cook:

WillyTarreau:

BlamedGCC

Agreedsolution

LinusTorvalds:

BenHutchings:

Page 14: UniSan - Systems Software and Security Labunisan-slides.pdfConfirmed New Infoleaks (Selected) File Object Leak Bytes Cause CVE rtnetlink.c map 4 Pad CVE-2016-4486 devio.c ci 3 Pad

Detecting/PreventingUninitializedDataLeaks

The-Wuninitialized optionofcompilers?Simplyinitializeallallocations?

OurUniSan approach:1) Conservativelyidentifyunsafeallocations

(i.e.,withpotentialleaks)viastaticprogramanalysis

2) Instrumentthecodetoinitializeonlyunsafeallocations

Page 15: UniSan - Systems Software and Security Labunisan-slides.pdfConfirmed New Infoleaks (Selected) File Object Leak Bytes Cause CVE rtnetlink.c map 4 Pad CVE-2016-4486 devio.c ci 3 Pad

DetectingUnsafeAllocations

Integratingbyte-levelandflow-,context-,andfield-sensitivereachabilityandinitializationanalyses

Sources(i.e.,

allocations)

Sinks(e.g.,

copy_to_user)Dataflow

Reachabilityanalysis

Initializationanalysis

Page 16: UniSan - Systems Software and Security Labunisan-slides.pdfConfirmed New Infoleaks (Selected) File Object Leak Bytes Cause CVE rtnetlink.c map 4 Pad CVE-2016-4486 devio.c ci 3 Pad

MainChallengesinUniSan• Sinkdefinition–Generalrules

• Globalcall-graphconstruction– Typeanalysisforindirectcalls

• Byte-leveltracking–Offset-basedanalysis,“GetElementPtr”

Beconservative!Assumeitisunsafeforspecialcases!

Page 17: UniSan - Systems Software and Security Labunisan-slides.pdfConfirmed New Infoleaks (Selected) File Object Leak Bytes Cause CVE rtnetlink.c map 4 Pad CVE-2016-4486 devio.c ci 3 Pad

Instrumentation

Zero-initializationsforunsafeallocations:–Stack: Assigningzeroorusingmemset–Heap: Addingthe__GFP_ZEROflagtokmalloc

Instrumentationsaresemanticpreserving–Robust–Tolerantoffalsepositives

Page 18: UniSan - Systems Software and Security Labunisan-slides.pdfConfirmed New Infoleaks (Selected) File Object Leak Bytes Cause CVE rtnetlink.c map 4 Pad CVE-2016-4486 devio.c ci 3 Pad

Implementation• UsingLLVM–Ananalysispassandaninstrumentationpass

• Makingkernelscompilable withLLVM– PatchesfromtheLLVMLinux projectandKenali [NDSS’16]

• Optimizinganalysis–Modelingbasicfunctions

HowtouseUniSan: $unisan @bitcode.list

Page 19: UniSan - Systems Software and Security Labunisan-slides.pdfConfirmed New Infoleaks (Selected) File Object Leak Bytes Cause CVE rtnetlink.c map 4 Pad CVE-2016-4486 devio.c ci 3 Pad

EvaluationEvaluationgoals–Accuracyinidentifyingunsafeallocations– Effectivenessinpreventinguninitializeddataleaks– Theefficiencyofthesecuredkernels

Platforms– LatestmainlineLinuxkernelforx86_64– LatestAndroidkernelforAArch64

Page 20: UniSan - Systems Software and Security Labunisan-slides.pdfConfirmed New Infoleaks (Selected) File Object Leak Bytes Cause CVE rtnetlink.c map 4 Pad CVE-2016-4486 devio.c ci 3 Pad

EvaluationofAccuracy

Statisticsofvariousnumbers:–Only10% ofallocationsaredetectedasunsafe.

Arch Module Alloca Malloc UnsafeAlloca

UnsafeMalloc

Percent

X86_64 2,152 17,878 2,929 1,493 386 9.0%AArch64 2,030 15,628 3,023 1,485 451 10.3%

Page 21: UniSan - Systems Software and Security Labunisan-slides.pdfConfirmed New Infoleaks (Selected) File Object Leak Bytes Cause CVE rtnetlink.c map 4 Pad CVE-2016-4486 devio.c ci 3 Pad

EvaluationofEffectiveness

Preventingknownleaks:–Selected43recentleakswithCVE#–UniSanpreventedallofthem

Detectingunknownleaks–Withmanualverification

Page 22: UniSan - Systems Software and Security Labunisan-slides.pdfConfirmed New Infoleaks (Selected) File Object Leak Bytes Cause CVE rtnetlink.c map 4 Pad CVE-2016-4486 devio.c ci 3 Pad

ConfirmedNewInfoleaks (Selected)File Object Leak

BytesCause CVE

rtnetlink.c map 4 Pad CVE-2016-4486devio.c ci 3 Pad CVE-2016-4482af_llc.c info 1 Pad CVE-2016-4485timer.c tread 8 Pad CVE-2016-4569timer.c r1 8 Pad CVE-2016-4578netlink...c link_info 60 Dev. CVE-2016-5243media-device.c

u_ent 192 P&D AndroidID-28616963

more… more… … … more…

Page 23: UniSan - Systems Software and Security Labunisan-slides.pdfConfirmed New Infoleaks (Selected) File Object Leak Bytes Cause CVE rtnetlink.c map 4 Pad CVE-2016-4486 devio.c ci 3 Pad

EvaluationofEfficiencyRuntimeoverhead(geo-mean%)

Analysestookless3minutes.Binarysizeincreased<0.5%.

Category Benchmarks BlindMode(x86_64)

UniSan(x86_64)

Systemoperations

LMBench 4.74% 1.36%

Serverprograms

ApacheBench 0.8% <0.1%

Userprograms

SPEC Bench 1.92% 0.54%

Page 24: UniSan - Systems Software and Security Labunisan-slides.pdfConfirmed New Infoleaks (Selected) File Object Leak Bytes Cause CVE rtnetlink.c map 4 Pad CVE-2016-4486 devio.c ci 3 Pad

LimitationsandFutureWork

• Customheapallocators–Requireannotations

• Close-sourcedmodules–Notsupported

• Otheruninitializeduses,e.g.,uninitializedpointerdereference

• GCCsupport(inprogress)

Page 25: UniSan - Systems Software and Security Labunisan-slides.pdfConfirmed New Infoleaks (Selected) File Object Leak Bytes Cause CVE rtnetlink.c map 4 Pad CVE-2016-4486 devio.c ci 3 Pad

Conclusions

• InformationleaksarecommoninOSkernels.• Uninitializedreadisthedominantcause.• Developersarenotalwaystoblame—compilersmayalsointroducesecurityproblems.• UniSaneliminatesalluninitializeddataleaks.

Page 26: UniSan - Systems Software and Security Labunisan-slides.pdfConfirmed New Infoleaks (Selected) File Object Leak Bytes Cause CVE rtnetlink.c map 4 Pad CVE-2016-4486 devio.c ci 3 Pad

TryUniSan:https://github.com/sslab-gatech/unisan