part i the basic idea10kstudents.eu/m/files/material/pdf/syssec_10k_basic_bo.pdf · 2014. 10....

22

Upload: others

Post on 22-Jan-2021

12 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Part I The Basic Idea10kstudents.eu/m/files/material/pdf/syssec_10K_Basic_BO.pdf · 2014. 10. 20. · 1020 1021 1022 1023 software 1024 •so how does our CPU know where to return?
Page 2: Part I The Basic Idea10kstudents.eu/m/files/material/pdf/syssec_10K_Basic_BO.pdf · 2014. 10. 20. · 1020 1021 1022 1023 software 1024 •so how does our CPU know where to return?

Part IThe Basic Idea

Page 3: Part I The Basic Idea10kstudents.eu/m/files/material/pdf/syssec_10K_Basic_BO.pdf · 2014. 10. 20. · 1020 1021 1022 1023 software 1024 •so how does our CPU know where to return?

software

• sequence of instructions in memory• logically divided in functions that call

each other– function ‘IE’ calls function ‘getURL’ to read

the corresponding page

• in CPU, the program counter contains the address in memory of the next instruction to execute– normally this is the next address

(instruction 100 is followed by instruction 101, etc)

– not so with function call

200

201

202

203

204

100

101

102

103

IEgetU

RL

104

call getURL

return result

Page 4: Part I The Basic Idea10kstudents.eu/m/files/material/pdf/syssec_10K_Basic_BO.pdf · 2014. 10. 20. · 1020 1021 1022 1023 software 1024 •so how does our CPU know where to return?

software

• sequence of instructions in memory• logically divided in functions that call

each other– function ‘IE’ calls function ‘getURL’ to read

the corresponding page

• in CPU, the program counter contains the address in memory of the next instruction to execute– normally this is the next address

(instruction 100 is followed by instruction 101, etc)

– not so with function call

return result

call getURL

200

201

202

203

204

100

101

102

103

104

PC

PC

PC

PC

PC

PC

PC

PC

PC

PC

IEgetU

RL

Page 5: Part I The Basic Idea10kstudents.eu/m/files/material/pdf/syssec_10K_Basic_BO.pdf · 2014. 10. 20. · 1020 1021 1022 1023 software 1024 •so how does our CPU know where to return?

1020

1021

1022

1023

1024

software

• so how does our CPU know where to return?

– it keeps administration

– on a ‘stack’200

201

202

203

204

100

101

102

103

104

sta

ck

PC

PC

call getURL

return result

103

PC

PC

PC

PC

PC

PC

PC

IEgetU

RL

Page 6: Part I The Basic Idea10kstudents.eu/m/files/material/pdf/syssec_10K_Basic_BO.pdf · 2014. 10. 20. · 1020 1021 1022 1023 software 1024 •so how does our CPU know where to return?

real functions variables

getURL ()

{

char buf[10];

read(keyboard,buf,64);

get_webpage (buf);

}

IE ()

{

getURL ();

}

Page 7: Part I The Basic Idea10kstudents.eu/m/files/material/pdf/syssec_10K_Basic_BO.pdf · 2014. 10. 20. · 1020 1021 1022 1023 software 1024 •so how does our CPU know where to return?

real functions variables

getURL ()

{

char buf[10];

read(keyboard,buf,64);

get_webpage (buf);

}

IE ()

{

getURL ();

}

call read

200

201

202

203

100

101

102

103

IEgetU

RL

104

call getURL

return result

Page 8: Part I The Basic Idea10kstudents.eu/m/files/material/pdf/syssec_10K_Basic_BO.pdf · 2014. 10. 20. · 1020 1021 1022 1023 software 1024 •so how does our CPU know where to return?

real functions variables

call read

200

201

202

203

100

101

102

103

IEgetU

RL

104

call getURL

return result

getURL ()

{

char buf[10];

read(keyboard,buf,64);

get_webpage (buf);

}

IE ()

{

getURL ();

}

sta

ck

103

1022

1023

1024

1019

1021

1020

old FP

1018

1017

1016

1015

1014

1013

1012

1011

1010

Page 9: Part I The Basic Idea10kstudents.eu/m/files/material/pdf/syssec_10K_Basic_BO.pdf · 2014. 10. 20. · 1020 1021 1022 1023 software 1024 •so how does our CPU know where to return?

real functions variables

call read

200

201

202

203

100

101

102

103

IEgetU

RL

104

call getURL

return result

getURL ()

{

char buf[10];

read(keyboard,buf,64);

get_webpage (buf);

}

IE ()

{

getURL ();

}

sta

ck

103

1022

1023

1024

1019

1021

1020

old FP

1018

1017

1016

1015

1014

1013

1012

1011

1010

Page 10: Part I The Basic Idea10kstudents.eu/m/files/material/pdf/syssec_10K_Basic_BO.pdf · 2014. 10. 20. · 1020 1021 1022 1023 software 1024 •so how does our CPU know where to return?

real functions variables old FP

call read

200

201

202

203

100

101

102

103

IE

104

call getURL

return result

sta

ck

103

1022

1023

1024

1019

1021

1020

1018 buf

1017

1016

1015

1014

1013

1012

1011

1010

getURL ()

{

char buf[10];

read(keyboard,buf,64);

get_webpage (buf);

}

IE ()

{

getURL ();

}

1009

1008

1007getU

RL

300

301

302

303 return

read

Page 11: Part I The Basic Idea10kstudents.eu/m/files/material/pdf/syssec_10K_Basic_BO.pdf · 2014. 10. 20. · 1020 1021 1022 1023 software 1024 •so how does our CPU know where to return?

real functions variables

call read

200

201

202

203

100

101

102

103

IE

104

call getURL

return result

sta

ck

103

1022

1023

1024

1019

1021

1020

1018

1017

1016

1015

getURL ()

{

char buf[10];

read(keyboard,buf,64);

get_webpage (buf);

}

IE ()

{

getURL ();

}

1014

1013

1012

1011

1010

64

(buf)

fd

old FP

1009

1008

1007

buf

getU

RL

sta

ck

300

301

302

303 return

read

Page 12: Part I The Basic Idea10kstudents.eu/m/files/material/pdf/syssec_10K_Basic_BO.pdf · 2014. 10. 20. · 1020 1021 1022 1023 software 1024 •so how does our CPU know where to return?

real functions variables

call read

200

201

202

203

100

101

102

103

IE

104

call getURL

return result

sta

ck

103

1022

1023

1024

1019

1021

1020

1018

1017

1016

1015

getURL ()

{

char buf[10];

read(keyboard,buf,64);

get_webpage (buf);

}

IE ()

{

getURL ();

}

1014

1013

1012

1011

1010

old FP

1009

1008

1007

64

(buf)

fdbuf

getU

RL

202

300

301

302

303 return

read

Page 13: Part I The Basic Idea10kstudents.eu/m/files/material/pdf/syssec_10K_Basic_BO.pdf · 2014. 10. 20. · 1020 1021 1022 1023 software 1024 •so how does our CPU know where to return?

real functions variables

call read

200

201

202

203

100

101

102

103

IE

104

call getURL

return result

sta

ck

103

1022

1023

1024

1019

1021

1020

1018

1017

1016

1015

getURL ()

{

char buf[10];

read(keyboard,buf,64);

get_webpage (buf);

}

IE ()

{

getURL ();

}

1014

1013

1012

1011

1010

old FP

202

1023

1009

1008

1007

64

(buf)

fd

getU

RL

300

301

302

303 return

read

Page 14: Part I The Basic Idea10kstudents.eu/m/files/material/pdf/syssec_10K_Basic_BO.pdf · 2014. 10. 20. · 1020 1021 1022 1023 software 1024 •so how does our CPU know where to return?

real functions variables

call read

200

201

202

203

100

101

102

103

IE

104

call getURL

return result

sta

ck

103

1022

1023

1024

1019

1021

1020

1018

1017

1016

1015

getURL ()

{

char buf[10];

read(keyboard,buf,64);

get_webpage (buf);

}

IE ()

{

getURL ();

}

1014

1013

1012

1011

1010

old FP

202

1023

1009

1008

1007

64

(buf)

fd

getU

RL

300

301

302

303 return

read

Page 15: Part I The Basic Idea10kstudents.eu/m/files/material/pdf/syssec_10K_Basic_BO.pdf · 2014. 10. 20. · 1020 1021 1022 1023 software 1024 •so how does our CPU know where to return?

real functions variables

call read

200

201

202

203

100

101

102

103

IE

104

call getURL

return result

sta

ck

103

1022

1023

1024

1019

1021

1020

1018

1017

1016

1015

getURL ()

{

char buf[10];

read(keyboard,buf,64);

get_webpage (buf);

}

IE ()

{

getURL ();

}

1014

1013

1012

1011

1010

old FP

202

1023

1009

1008

1007

64

(buf)

fd

getU

RL

300

301

302

303 return

read

Page 16: Part I The Basic Idea10kstudents.eu/m/files/material/pdf/syssec_10K_Basic_BO.pdf · 2014. 10. 20. · 1020 1021 1022 1023 software 1024 •so how does our CPU know where to return?

real functions variables

call read

200

201

202

203

100

101

102

103

IE

104

call getURL

return result

sta

ck

103

1022

1023

1024

1019

1021

1020

1018

1017

1016

1015

getURL ()

{

char buf[10];

read(keyboard,buf,64);

get_webpage (buf);

}

IE ()

{

getURL ();

}

1014

1013

1012

1011

1010

old FP

202

1023

1009

1008

1007

64

(buf)

fd

getU

RL

300

301

302

303 return

read

Page 17: Part I The Basic Idea10kstudents.eu/m/files/material/pdf/syssec_10K_Basic_BO.pdf · 2014. 10. 20. · 1020 1021 1022 1023 software 1024 •so how does our CPU know where to return?

real functions variables

call read

200

201

202

203

100

101

102

103

IE

104

call getURL

return result

sta

ck

103

1022

1023

1024

1019

1021

1020

1018

1017

1016

1015

getURL ()

{

char buf[10];

read(keyboard,buf,64);

get_webpage (buf);

}

IE ()

{

getURL ();

}

1014

1013

1012

1011

1010

old FP

202

1023

1009

1008

1007

64

(buf)

fd

getU

RL

300

301

302

303 return

read

Page 18: Part I The Basic Idea10kstudents.eu/m/files/material/pdf/syssec_10K_Basic_BO.pdf · 2014. 10. 20. · 1020 1021 1022 1023 software 1024 •so how does our CPU know where to return?

real functions variables

call read

200

201

202

203

100

101

102

103

IE

104

call getURL

return result

sta

ck

103

1022

1023

1024

1019

1021

1020

1018

1017

1016

1015

getURL ()

{

char buf[10];

read(keyboard,buf,64);

get_webpage (buf);

}

IE ()

{

getURL ();

}

1014

1013

1012

1011

1010

old FP

202

1023

1009

1008

1007

64

(buf)

fd

getU

RL

300

301

302

303 return

read

Page 19: Part I The Basic Idea10kstudents.eu/m/files/material/pdf/syssec_10K_Basic_BO.pdf · 2014. 10. 20. · 1020 1021 1022 1023 software 1024 •so how does our CPU know where to return?

Where is the vulnerability?

Page 20: Part I The Basic Idea10kstudents.eu/m/files/material/pdf/syssec_10K_Basic_BO.pdf · 2014. 10. 20. · 1020 1021 1022 1023 software 1024 •so how does our CPU know where to return?

Exploit 103

1022

1023

1024

1019

1021

1020

1018 buf

1017

1016

1015

1014

1013

1012

1011

1010

getURL ()

{

char buf[10];

read(keyboard, buf, 64);

get_webpage (buf);

}

IE ()

{

getURL ();

}

1013

Page 21: Part I The Basic Idea10kstudents.eu/m/files/material/pdf/syssec_10K_Basic_BO.pdf · 2014. 10. 20. · 1020 1021 1022 1023 software 1024 •so how does our CPU know where to return?

You may also overwrite other things

• For instance:

– Other variables that are also on the stack

– Other addresses

– Etc.

Page 22: Part I The Basic Idea10kstudents.eu/m/files/material/pdf/syssec_10K_Basic_BO.pdf · 2014. 10. 20. · 1020 1021 1022 1023 software 1024 •so how does our CPU know where to return?

Memory CorruptionFinal words Part I

• We have sketched only the most common memory corruption attack– many variations, e.g.:

• heap stack• more complex overflows• off-by-one

• But there are others also– integer overflows– format string attacks– double free– etc.

• Not now, perhaps later…

*different kinds