software security: buffer overflow attacks€¦ · 10/5/16 cse 484 / cse m 584 - fall 2016 4...

41
CSE 484 / CSE M 584: Computer Security and Privacy Software Security: Buffer Overflow Attacks Fall 2016 Adam (Ada) Lerner [email protected] Thanks to Franzi Roesner, Dan Boneh, Dieter Gollmann, Dan Halperin, Yoshi Kohno, John Manferdelli, John Mitchell, Vitaly Shmatikov, Bennet Yee, and many others for sample slides and materials ...

Upload: others

Post on 19-Jul-2020

9 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Software Security: Buffer Overflow Attacks€¦ · 10/5/16 CSE 484 / CSE M 584 - Fall 2016 4 smartphones wearables game platforms cars medical devices voting machines EEG headsets

CSE484/CSEM584:ComputerSecurityandPrivacy

SoftwareSecurity:BufferOverflowAttacks

Fall2016

Adam(Ada)[email protected]

ThankstoFranziRoesner,DanBoneh,DieterGollmann,DanHalperin,YoshiKohno,JohnManferdelli,JohnMitchell,VitalyShmatikov,BennetYee,andmanyothersforsampleslidesandmaterials...

Page 2: Software Security: Buffer Overflow Attacks€¦ · 10/5/16 CSE 484 / CSE M 584 - Fall 2016 4 smartphones wearables game platforms cars medical devices voting machines EEG headsets

Announcements

•  Signtheethicsformbytodayat5!•  Homework1isdueonMonday.

•  Pleasestartforminggroupsforlab1– Youcanusetheforumtofindgroupmembers

10/5/16 CSE484/CSEM584-Fall2016 2

Page 3: Software Security: Buffer Overflow Attacks€¦ · 10/5/16 CSE 484 / CSE M 584 - Fall 2016 4 smartphones wearables game platforms cars medical devices voting machines EEG headsets

Announcements

•  TAofficehourshavebeenmovedtoMondaysat4:30(afterclass),inthesecondfloorbreakout.– Sorryfortheconfusion!

10/5/16 CSE484/CSEM584-Fall2016 3

Page 4: Software Security: Buffer Overflow Attacks€¦ · 10/5/16 CSE 484 / CSE M 584 - Fall 2016 4 smartphones wearables game platforms cars medical devices voting machines EEG headsets

Security:NotJustforPCs

10/5/16 CSE484/CSEM584-Fall2016 4

smartphones

wearables

gameplatforms

cars

medicaldevicesEEGheadsetsvotingmachines

RFID mobilesensingplatforms

airplanes

Page 5: Software Security: Buffer Overflow Attacks€¦ · 10/5/16 CSE 484 / CSE M 584 - Fall 2016 4 smartphones wearables game platforms cars medical devices voting machines EEG headsets

SoftwareProblemsareUbiquitous

10/5/16 CSE484/CSEM584-Fall2016 5

Page 6: Software Security: Buffer Overflow Attacks€¦ · 10/5/16 CSE 484 / CSE M 584 - Fall 2016 4 smartphones wearables game platforms cars medical devices voting machines EEG headsets

SoftwareProblemsareUbiquitous

10/5/16 CSE484/CSEM584-Fall2016 6

Page 7: Software Security: Buffer Overflow Attacks€¦ · 10/5/16 CSE 484 / CSE M 584 - Fall 2016 4 smartphones wearables game platforms cars medical devices voting machines EEG headsets

SoftwareProblemsareUbiquitous

10/5/16 CSE484/CSEM584-Fall2016 7

Page 8: Software Security: Buffer Overflow Attacks€¦ · 10/5/16 CSE 484 / CSE M 584 - Fall 2016 4 smartphones wearables game platforms cars medical devices voting machines EEG headsets

SoftwareProblemsareUbiquitous

•  Otherseriousbugs(manyothersexist)– USVincennestrackingsoftware– MV-22Osprey

– MedtronicModel8870SoftwareApplicationCard

10/5/16 CSE484/CSEM584-Fall2016 8

Page 9: Software Security: Buffer Overflow Attacks€¦ · 10/5/16 CSE 484 / CSE M 584 - Fall 2016 4 smartphones wearables game platforms cars medical devices voting machines EEG headsets

AdversarialFailures

•  Softwarebugsarebad–  Consequencescanbeserious

•  Evenworsewhenanintelligentadversarywishestoexploitthem!–  Intelligentadversaries:Forcebugsinto“worstpossible”conditions/states

–  Intelligentadversaries:Picktheirtargets

10/5/16 CSE484/CSEM584-Fall2016 9

Page 10: Software Security: Buffer Overflow Attacks€¦ · 10/5/16 CSE 484 / CSE M 584 - Fall 2016 4 smartphones wearables game platforms cars medical devices voting machines EEG headsets

BUFFEROVERFLOWS

10/5/16 CSE484/CSEM584-Fall2016 10

Page 11: Software Security: Buffer Overflow Attacks€¦ · 10/5/16 CSE 484 / CSE M 584 - Fall 2016 4 smartphones wearables game platforms cars medical devices voting machines EEG headsets

AdversarialFailures

•  Bufferoverflowsbugs:Bigclassofbugs– Normalconditions:Cansometimescausesystemstofail

– Adversarialconditions:Attackerabletoviolatesecurityofyoursystem(control,obtainprivateinformation,...)

10/5/16 CSE484/CSEM584-Fall2016 11

Page 12: Software Security: Buffer Overflow Attacks€¦ · 10/5/16 CSE 484 / CSE M 584 - Fall 2016 4 smartphones wearables game platforms cars medical devices voting machines EEG headsets

ReferenceforQ1

10/5/16 CSE484/CSEM584-Fall2016 12

Text region Heap StackAddr 0x00...0 Addr 0xFF...F

Top Bottom

ret/IP Caller’s frame

Addr 0xFF...F

Saved FP

Executecodeatthisaddressafterfunc()finishes

buf

Localvariables

str

Args

Page 13: Software Security: Buffer Overflow Attacks€¦ · 10/5/16 CSE 484 / CSE M 584 - Fall 2016 4 smartphones wearables game platforms cars medical devices voting machines EEG headsets

ABitofHistory:MorrisWorm

•  Wormwasreleasedin1988byRobertMorris–  GraduatestudentatCornell,sonofNSAchiefscientist–  ConvictedunderComputerFraudandAbuseAct,

sentencedto3yearsofprobationand400hoursofcommunityservice

–  NowanEECSprofessoratMIT•  Wormwasintendedtopropagateslowlyand

harmlesslymeasurethesizeoftheInternet•  Duetoacodingerror,itcreatednewcopiesasfast

asitcouldandoverloadedinfectedmachines•  $10-100Mworthofdamage

10/5/16 CSE484/CSEM584-Fall2016 13

Page 14: Software Security: Buffer Overflow Attacks€¦ · 10/5/16 CSE 484 / CSE M 584 - Fall 2016 4 smartphones wearables game platforms cars medical devices voting machines EEG headsets

MorrisWormandBufferOverflow

•  Oneoftheworm’spropagationtechniqueswasabufferoverflowattackagainstavulnerableversionoffingerdonVAXsystems–  Bysendingspecialstringtofingerdaemon,worm

causedittoexecutecodecreatinganewwormcopy–  UnabletodetermineremoteOSversion,wormalso

attackedfingerdonSunsrunningBSD,causingthemtocrash(insteadofspawninganewcopy)

10/5/16 CSE484/CSEM584-Fall2016 14

Page 15: Software Security: Buffer Overflow Attacks€¦ · 10/5/16 CSE 484 / CSE M 584 - Fall 2016 4 smartphones wearables game platforms cars medical devices voting machines EEG headsets

FamousInternetWorms

•  Bufferoverflows:verycommoncauseofInternetattacks–  In1998,over50%ofadvisoriespublishedbyCERT(computer

securityincidentreportteam)werecausedbybufferoverflows

•  Morrisworm(1988):overflowinfingerd–  6,000machinesinfected

•  CodeRed(2001):overflowinMS-IISserver–  300,000machinesinfectedin14hours

•  SQLSlammer(2003):overflowinMS-SQLserver–  75,000machinesinfectedin10minutes(!!)

•  Sasser(2005):overflowinWindowsLSASS–  Around500,000machinesinfected

10/5/16 CSE484/CSEM584-Fall2016 15

Page 16: Software Security: Buffer Overflow Attacks€¦ · 10/5/16 CSE 484 / CSE M 584 - Fall 2016 4 smartphones wearables game platforms cars medical devices voting machines EEG headsets

…AndMore

•  Conficker(2008-08):overflowinWindowsRPC–  Around10millionmachinesinfected(estimatesvary)

•  Stuxnet(2009-10):severalzero-dayoverflows+sameWindowsRPCoverflowasConficker–  Windowsprintspoolerservice–  WindowsLNKshortcutdisplay–  Windowstaskscheduler

•  Flame(2010-12):sameprintspoolerandLNKoverflowsasStuxnet–  Targetedcyperespionagevirus

•  Stillubiquitous,especiallyinembeddedsystems

10/5/16 CSE484/CSEM584-Fall2016 16

Page 17: Software Security: Buffer Overflow Attacks€¦ · 10/5/16 CSE 484 / CSE M 584 - Fall 2016 4 smartphones wearables game platforms cars medical devices voting machines EEG headsets

AttacksonMemoryBuffers

•  Bufferisapre-defineddatastorageareainsidecomputermemory(stackorheap)

•  Typicalsituation:–  Afunctiontakessomeinputthatitwritesintoapre-

allocatedbuffer.–  Thedeveloperforgetstocheckthatthesizeoftheinput

isn’tlargerthanthesizeofthebuffer.–  Uhoh.

•  “Normal”badinput:crash•  “Adversarial”badinput:takecontrolofexecution

10/5/16 CSE484/CSEM584-Fall2016 17

Page 18: Software Security: Buffer Overflow Attacks€¦ · 10/5/16 CSE 484 / CSE M 584 - Fall 2016 4 smartphones wearables game platforms cars medical devices voting machines EEG headsets

StackBuffers

10/5/16 CSE484/CSEM584-Fall2016 18

•  SupposeWebservercontainsthisfunction void func(char *str) {

char buf[126]; ... strcpy(buf,str); ... }

•  Noboundscheckingonstrcpy()•  Ifstrislongerthan126bytes–  Programmaycrash–  Attackermaychangeprogrambehavior

buf uh oh!

Page 19: Software Security: Buffer Overflow Attacks€¦ · 10/5/16 CSE 484 / CSE M 584 - Fall 2016 4 smartphones wearables game platforms cars medical devices voting machines EEG headsets

AnswerQ2

10/5/16 CSE484/CSEM584-Fall2016 19

•  SupposeWebservercontainsthisfunction void func(char *str) {

char buf[126]; ... strcpy(buf,str); ... }

•  Noboundscheckingonstrcpy()•  Ifstrislongerthan126bytes–  Programmaycrash–  Attackermaychangeprogrambehavior

buf uh oh!

Page 20: Software Security: Buffer Overflow Attacks€¦ · 10/5/16 CSE 484 / CSE M 584 - Fall 2016 4 smartphones wearables game platforms cars medical devices voting machines EEG headsets

Example:ChangingFlags

10/5/16 CSE484/CSEM584-Fall2016 20

• authenticated variable

buf authenticated11 ( :-) ! )

Page 21: Software Security: Buffer Overflow Attacks€¦ · 10/5/16 CSE 484 / CSE M 584 - Fall 2016 4 smartphones wearables game platforms cars medical devices voting machines EEG headsets

Example:ChangingFlags

10/5/16 CSE484/CSEM584-Fall2016 21

•  authenticated variable

• Morriswormalsooverflowedabuffertooverwriteanauthenticatedflaginfingerd

buf authenticated11 ( :-) ! )

Page 22: Software Security: Buffer Overflow Attacks€¦ · 10/5/16 CSE 484 / CSE M 584 - Fall 2016 4 smartphones wearables game platforms cars medical devices voting machines EEG headsets

MemoryLayout

•  Textregion:Executablecodeoftheprogram•  Heap:Dynamicallyallocateddata•  Stack:Localvariables,functionreturnaddresses;

growsandshrinksasfunctionsarecalledandreturn

10/5/16 CSE484/CSEM584-Fall2016 22

Text region Heap StackAddr 0x00...0 Addr 0xFF...F

Top Bottom

Page 23: Software Security: Buffer Overflow Attacks€¦ · 10/5/16 CSE 484 / CSE M 584 - Fall 2016 4 smartphones wearables game platforms cars medical devices voting machines EEG headsets

RedirectingProgramFlow

•  Insteadof“normal”string,attackersends2thingsasinput:– Assemblycodeshewantstoexecute– Theaddresswheresheexpectsthatcodetoappear

10/5/16 CSE484/CSEM584-Fall2016 23

Page 24: Software Security: Buffer Overflow Attacks€¦ · 10/5/16 CSE 484 / CSE M 584 - Fall 2016 4 smartphones wearables game platforms cars medical devices voting machines EEG headsets

RedirectingProgramFlow

•  Insteadof“normal”string,attackersends2thingsasinput:– Assemblycodeshewantstoexecute– Theaddresswheresheexpectsthatcodetoappear

10/5/16 CSE484/CSEM584-Fall2016 24

“Shellcode”

Page 25: Software Security: Buffer Overflow Attacks€¦ · 10/5/16 CSE 484 / CSE M 584 - Fall 2016 4 smartphones wearables game platforms cars medical devices voting machines EEG headsets

StackBuffers

•  SupposeWebservercontainsthisfunc3on: void func(char *str) {

char buf[126]; strcpy(buf,str); }

•  Whenthisfunc3onisinvoked,anewframe(ac3va3onrecord)ispushedontothestack.

Allocatelocalbuffer(126bytesreservedonstack)

Copyargumentintolocalbuffer

ret/IP Caller’s frame

Addr 0xFF...F

Saved FP

Executecodeatthisaddressafterfunc()finishes

buf

Localvariables

str

Args

10/5/16 CSE484/CSEM584-Fall2016 25

Page 26: Software Security: Buffer Overflow Attacks€¦ · 10/5/16 CSE 484 / CSE M 584 - Fall 2016 4 smartphones wearables game platforms cars medical devices voting machines EEG headsets

WhatifBufferisOverstuffed?

•  Memorypointedtobystriscopiedontostack… void func(char *str) {

char buf[126]; strcpy(buf,str); }

•  Ifastringlongerthan126bytesiscopiedintobuffer,itwilloverwriteadjacentstacklocations.

strcpydoesNOTcheckwhetherthestringat*strcontainsfewerthan126characters

Thiswillbeinterpretedasreturnaddress!

ret/IP Caller’s frame

Addr 0xFF...F

Saved FPbuf

Localvariables

str

Args

10/5/16 CSE484/CSEM584-Fall2016 26

Page 27: Software Security: Buffer Overflow Attacks€¦ · 10/5/16 CSE 484 / CSE M 584 - Fall 2016 4 smartphones wearables game platforms cars medical devices voting machines EEG headsets

WhatifBufferisOverstuffed?

• Whatifthestringisreadinfromanattackeronthenetwork?

Thiswillbeinterpretedasreturnaddress!

ret/IP Caller’s frame

Addr 0xFF...F

Saved FPbuf

Localvariables

str

Args

10/5/16 CSE484/CSEM584-Fall2016 27

Page 28: Software Security: Buffer Overflow Attacks€¦ · 10/5/16 CSE 484 / CSE M 584 - Fall 2016 4 smartphones wearables game platforms cars medical devices voting machines EEG headsets

WhatifBufferisOverstuffed?

exec(“/bin/sh”) asdf…asdf 0xFFFFFFA2

Thiswillbeinterpretedasreturnaddress!

ret/IP Caller’s frame

Addr 0xFF...F

Saved FPbuf

Localvariables

str

Args

10/5/16 CSE484/CSEM584-Fall2016 28

Page 29: Software Security: Buffer Overflow Attacks€¦ · 10/5/16 CSE 484 / CSE M 584 - Fall 2016 4 smartphones wearables game platforms cars medical devices voting machines EEG headsets

ExecutingAttackCode

•  Whenfunc3onexits,codeinthebufferwillbeexecuted,givingaAackerashell–  Rootshellifthevic3mprogramissetuidroot

ret/IPSaved FPbuf Caller’s stack frame

Addr 0xFF...F

Attackerputsactualassemblyinstructionsintohisinputstring,e.g.,binarycodeofexecve(“/bin/sh”)

exec(“/bin/sh”)

Intheoverflow,apointerbackintothebufferappearsinthelocationwherethesystemexpectstofindreturnaddress

Caller’s framestr

10/5/16 CSE484/CSEM584-Fall2016 29

Page 30: Software Security: Buffer Overflow Attacks€¦ · 10/5/16 CSE 484 / CSE M 584 - Fall 2016 4 smartphones wearables game platforms cars medical devices voting machines EEG headsets

StretchBreak

•  Whenfunc3onexits,codeinthebufferwillbeexecuted,givingaAackerashell–  Rootshellifthevic3mprogramissetuidroot

ret/IPSaved FPbuf Caller’s stack frame

Addr 0xFF...F

Attackerputsactualassemblyinstructionsintohisinputstring,e.g.,binarycodeofexecve(“/bin/sh”)

exec(“/bin/sh”)

Intheoverflow,apointerbackintothebufferappearsinthelocationwherethesystemexpectstofindreturnaddress

Caller’s framestr

10/5/16 CSE484/CSEM584-Fall2016 30

Page 31: Software Security: Buffer Overflow Attacks€¦ · 10/5/16 CSE 484 / CSE M 584 - Fall 2016 4 smartphones wearables game platforms cars medical devices voting machines EEG headsets

BufferOverflowscanbeHard

•  OverflowportionofthebuffermustcontaincorrectaddressofattackcodeintheRETposition–  ThevalueintheRETpositionmustpointtothebeginningofattackassemblycodeinthebuffer•  Otherwiseapplicationwill(probably)crashwithsegmentationviolation

– Attackermustcorrectlyguessinwhichstackpositionhis/herbufferwillbewhenthefunctioniscalled

10/5/16 CSE484/CSEM584-Fall2016 31

Page 32: Software Security: Buffer Overflow Attacks€¦ · 10/5/16 CSE 484 / CSE M 584 - Fall 2016 4 smartphones wearables game platforms cars medical devices voting machines EEG headsets

Problem:NoBoundsChecking

•  strcpydoesnotcheckinputsize–  strcpy(buf,str)simplycopiesmemorycontentsintobuf

startingfrom*struntil“\0”isencountered,ignoringthesizeofareaallocatedtobuf

•  ManyClibraryfunctionsareunsafe–  strcpy(char*dest,constchar*src)–  strcat(char*dest,constchar*src)–  gets(char*s)–  scanf(constchar*format,…)–  printf(constchar*format,…)

10/5/16 CSE484/CSEM584-Fall2016 32

Page 33: Software Security: Buffer Overflow Attacks€¦ · 10/5/16 CSE 484 / CSE M 584 - Fall 2016 4 smartphones wearables game platforms cars medical devices voting machines EEG headsets

•  strncpy(char*dest,constchar*src,size_tn)–  Ifstrncpyisusedinsteadofstrcpy,nomorethanncharacterswill

becopiedfrom*srcto*dest•  Programmerhastosupplytherightvalueofn

•  Potentialoverflowinhtpasswd.c(Apache1.3):strcpy(record,user); strcat(record,”:”); strcat(record,cpw);

•  Publishedfix:strncpy(record,user,MAX_STRING_LEN-1); strcat(record,”:”) strncat(record,cpw,MAX_STRING_LEN-1);

DoesBoundsCheckingHelp?

10/5/16 CSE484/CSEM584-Fall2016 33

Copiesusername(“user”)intobuffer(“record”),thenappends“:”andhashedpassword(“cpw”)

Page 34: Software Security: Buffer Overflow Attacks€¦ · 10/5/16 CSE 484 / CSE M 584 - Fall 2016 4 smartphones wearables game platforms cars medical devices voting machines EEG headsets

•  strncpy(char*dest,constchar*src,size_tn)–  Ifstrncpyisusedinsteadofstrcpy,nomorethanncharacterswill

becopiedfrom*srcto*dest•  Programmerhastosupplytherightvalueofn

•  Potentialoverflowinhtpasswd.c(Apache1.3):strcpy(record,user); strcat(record,”:”); strcat(record,cpw);

•  Publishedfix:strncpy(record,user,MAX_STRING_LEN-1); strcat(record,”:”) strncat(record,cpw,MAX_STRING_LEN-1);

AnswerQ3

10/5/16 CSE484/CSEM584-Fall2016 34

Copiesusername(“user”)intobuffer(“record”),thenappends“:”andhashedpassword(“cpw”)

Page 35: Software Security: Buffer Overflow Attacks€¦ · 10/5/16 CSE 484 / CSE M 584 - Fall 2016 4 smartphones wearables game platforms cars medical devices voting machines EEG headsets

Misuseofstrncpyinhtpasswd“Fix”

•  Published“fix”forApachehtpasswdoverflow:strncpy(record,user,MAX_STRING_LEN-1); strcat(record,”:”) strncat(record,cpw,MAX_STRING_LEN-1);

10/5/16 CSE484/CSEM584-Fall2016 35

MAX_STRING_LENbytesallocatedforrecordbuffer

contentsof*user

PutuptoMAX_STRING_LEN-1charactersintobuffer

:

Put“:”

contentsof*cpw

AgainputuptoMAX_STRING_LEN-1charactersintobuffer

Page 36: Software Security: Buffer Overflow Attacks€¦ · 10/5/16 CSE 484 / CSE M 584 - Fall 2016 4 smartphones wearables game platforms cars medical devices voting machines EEG headsets

WhatAboutThis?

•  Home-brewedrange-checkingstringcopy

void mycopy(char *input) { char buffer[512]; int i; for (i=0; i<=512; i++) buffer[i] = input[i]; } void main(int argc, char *argv[]) { if (argc==2) mycopy(argv[1]); }

•  1-byteoverflow:can’tchangeRET,butcanchangepointertopreviousstackframe–  Onlittle-endianarchitecture,makeitpointintobuffer–  RETforpreviousfunctionwillbereadfrombuffer!

10/5/16 CSE484/CSEM584-Fall2016 36

Page 37: Software Security: Buffer Overflow Attacks€¦ · 10/5/16 CSE 484 / CSE M 584 - Fall 2016 4 smartphones wearables game platforms cars medical devices voting machines EEG headsets

Off-By-OneOverflow

•  Home-brewedrange-checkingstringcopy

void mycopy(char *input) { char buffer[512]; int i; for (i=0; i<=512; i++) buffer[i] = input[i]; } void main(int argc, char *argv[]) { if (argc==2) mycopy(argv[1]); }

•  1-byteoverflow:can’tchangeRET,butcanchangepointertopreviousstackframe–  Onlittle-endianarchitecture,makeitpointintobuffer–  RETforpreviousfunctionwillbereadfrombuffer!

10/5/16 CSE484/CSEM584-Fall2016 37

Thiswillcopy513charactersintobuffer.Oops!

Page 38: Software Security: Buffer Overflow Attacks€¦ · 10/5/16 CSE 484 / CSE M 584 - Fall 2016 4 smartphones wearables game platforms cars medical devices voting machines EEG headsets

FramePointerOverflow

ret/IP Caller’s frame

Addr 0xFF...F

Saved FPbuf

Localvariables

str

Args

Fake RETFake FPATTACKCODE

10/5/16 CSE484/CSEM584-Fall2016 38

Page 39: Software Security: Buffer Overflow Attacks€¦ · 10/5/16 CSE 484 / CSE M 584 - Fall 2016 4 smartphones wearables game platforms cars medical devices voting machines EEG headsets

AnotherVariant:FunctionPointerOverflow

•  Cusesfunctionpointersforcallbacks:ifpointertoFisstoredinmemorylocationP,thenanotherfunctionGcancallFas(*P)(…)

10/5/16 CSE484/CSEM584-Fall2016 39

attackcode

Bufferwithattacker-suppliedinputstring

Callbackpointer

Heap

LegitimatefunctionF

overflow

(elsewhereinmemory)

Page 40: Software Security: Buffer Overflow Attacks€¦ · 10/5/16 CSE 484 / CSE M 584 - Fall 2016 4 smartphones wearables game platforms cars medical devices voting machines EEG headsets

OtherOverflowTargets

•  FormatstringsinC– Moredetailsnexttime

•  Heapmanagementstructuresusedbymalloc()– Moredetailsinsection

•  TheseareallattacksyoucanlookforwardtoinLab#1J

10/5/16 CSE484/CSEM584-Fall2016 40

Page 41: Software Security: Buffer Overflow Attacks€¦ · 10/5/16 CSE 484 / CSE M 584 - Fall 2016 4 smartphones wearables game platforms cars medical devices voting machines EEG headsets

LookingForward

•  Ethicsformdueat5!•  Homework#1dueMonday,Oct10•  Nextfewclasses:– Friday:guestlecturebyDavidAucsmith– Monday:morebufferoverflows– Wednesday:guestlecturebyEmilyMcReynolds

•  SectiontomorrowaboutLab1

10/5/16 CSE484/CSEM584-Fall2016 41