CS-527 Software Security Introduction Asst. Prof. Mathias Payer - - PowerPoint PPT Presentation

cs 527 software security
SMART_READER_LITE
LIVE PREVIEW

CS-527 Software Security Introduction Asst. Prof. Mathias Payer - - PowerPoint PPT Presentation

CS-527 Software Security Introduction Asst. Prof. Mathias Payer Department of Computer Science Purdue University TA: Kyriakos Ispoglou https://nebelwelt.net/teaching/17-527-SoftSec/ Spring 2017 Staff Table of Contents Staff 1 Course


slide-1
SLIDE 1

CS-527 Software Security

Introduction

  • Asst. Prof. Mathias Payer

Department of Computer Science Purdue University TA: Kyriakos Ispoglou https://nebelwelt.net/teaching/17-527-SoftSec/

Spring 2017

slide-2
SLIDE 2

Staff

Table of Contents

1

Staff

2

Course overview

3

Software Security Fails

4

Course Mechanics

5

Summary and Conclusion

Mathias Payer (Purdue University) CS-527 Software Security 2017 2 / 28

slide-3
SLIDE 3

Staff

Mathias Payer

  • MSc. ETH in 2006, Dr. sc. ETH in 2012, focusing on runtime

mitigations for binaries: “Safe Loading and Efficient Runtime Confinement: A Foundation for Secure Execution”. Post doc in Dawn Song’s BitBlaze group at UC Berkeley, focusing on memory safety errors and compiler-based mitigations. Faculty at Purdue since fall 2014. Founded b01lers CTF team in 2014. Homepage: http://nebelwelt.net

Mathias Payer (Purdue University) CS-527 Software Security 2017 3 / 28

slide-4
SLIDE 4

Staff

HexHive: Research Focus

Perfect security is unachievable, software will always have bugs. Goal: Protect software in the presence of vulnerabilities, ensure integrity and confidentiality of the system at all times. Several active research projects in compiler-based and binary rewriting-based memory safety, focus on strong defenses. Adversarial research exploiting limitations of software. Contact me (with ideas) for graduate research projects. Group homepage: http://hexhive.github.io

Mathias Payer (Purdue University) CS-527 Software Security 2017 4 / 28

slide-5
SLIDE 5

Staff

Kyriakos Ispoglou (Ispo)

EMail: kispoglo@purdue.edu 3rd year PhD student Long-time CTF player and hacker Will supervise and organize the labs

Mathias Payer (Purdue University) CS-527 Software Security 2017 5 / 28

slide-6
SLIDE 6

Course overview

Table of Contents

1

Staff

2

Course overview

3

Software Security Fails

4

Course Mechanics

5

Summary and Conclusion

Mathias Payer (Purdue University) CS-527 Software Security 2017 6 / 28

slide-7
SLIDE 7

Course overview

Why should you care?

There are multiple levels of caring: Security impacts your day-to-day life. Security impacts everybody’s day-to-day life. Security-aware user: make safe decisions. Security-aware developer: design and build secure systems. Security researcher: identify security flaws, propose mitigations.

Mathias Payer (Purdue University) CS-527 Software Security 2017 7 / 28

slide-8
SLIDE 8

Course overview

Security

Definition: Security Security is the application and enforcement of policies through mechanisms over data and resources. Policies specify what we want to enforce. Mechanisms specify how we enforce the policy (i.e., an implementation/instance of a policy).

Mathias Payer (Purdue University) CS-527 Software Security 2017 8 / 28

slide-9
SLIDE 9

Course overview

Software Security

Definition: Software Security Software Security is the area of Computer Science that focuses on (i) testing, (ii) evaluating, (iii) improving, (iv) enforcing, and (v) proving the security of software.

Mathias Payer (Purdue University) CS-527 Software Security 2017 9 / 28

slide-10
SLIDE 10

Course overview

Software Security

Goals Software running on current systems is exploited by attackers despite many deployed defence mechanisms and best practices for developing new software. In this course you will learn about security threats, attack vectors, and defence mechanisms on current systems. You will work with real world problems and technical challenges of security mechanisms (both in the design and implementation of programming languages, compilers, and runtime systems).

Mathias Payer (Purdue University) CS-527 Software Security 2017 10 / 28

slide-11
SLIDE 11

Course overview

Learning outcomes

Understand causes of common weaknesses in software security. Identify security threats, risks, and attack vectors for software. Reason how such problems can be avoided in software. Evaluate and assess current security best practices and defense mechanisms for current software systems. Become aware of limitations of existing defense mechanisms and how to avoid them. Identify security problems in source code and binaries, assess the associated risks, and reason about severity and exploitability. Assess the security of given source code or applications.

Mathias Payer (Purdue University) CS-527 Software Security 2017 11 / 28

slide-12
SLIDE 12

Course overview

Syllabus

1

Introduction to software security

2

Software vulnerabilities: memory (un-)safety

3

Introduction to reverse engineering

4

Dynamic defense mechanisms

5

Static protection through bug finding

6

Finding and exploiting vulnerabilities

7

Operating system security and forensics

8

Protecting data

9

Defense in practice

10 Web security 11 Browser security 12 Android/mobile security 13 Malware analysis Mathias Payer (Purdue University) CS-527 Software Security 2017 12 / 28

slide-13
SLIDE 13

Software Security Fails

Table of Contents

1

Staff

2

Course overview

3

Software Security Fails

4

Course Mechanics

5

Summary and Conclusion

Mathias Payer (Purdue University) CS-527 Software Security 2017 13 / 28

slide-14
SLIDE 14

Software Security Fails

Software Engineering versus Security

Software engineering is a discipline whose aims are: Dependability: producing fault-free software. Productivity: deliver on time, within budget. Usability: satisfy a client’s needs. Maintainability: extensible when needs change. Software engineering combines aspects of computer science (PL, networking, OS, databases, and many more), project management, economics, and many more. Security is of secondary concern and often limited to testing.

Mathias Payer (Purdue University) CS-527 Software Security 2017 14 / 28

slide-15
SLIDE 15

Software Security Fails

Definitions (1)

Software Bug A software bug is an error, flaw, failure, or fault in a computer program or system that causes it to produce an incorrect or unexpected result, or to behave in unintended ways. Most bugs arise from mistakes and errors made by people in either a program’s source code or its design, or in frameworks and operating systems used by such programs, and a few are caused by compilers producing incorrect code.a

aAccording to Wikipedia.

Mathias Payer (Purdue University) CS-527 Software Security 2017 15 / 28

slide-16
SLIDE 16

Software Security Fails

Definitions (2)

Software Vulnerability A vulnerability is a software weakness that allows an attacker to exploit a software bug. A vulnerability requires three key components (i) system is susceptible to flaw, (ii) adversary has access to the flaw (e.g., through information flow), and (iii) adversary has capability to exploit the flaw.

Mathias Payer (Purdue University) CS-527 Software Security 2017 16 / 28

slide-17
SLIDE 17

Software Security Fails

Security Fails

iCloud: leaked pictures HeartBleed: online accounts, passwords, keys Malware: $105B/year industry Stuxnet: governmentally sponsored attack against Iran’s nuclear program

Mathias Payer (Purdue University) CS-527 Software Security 2017 17 / 28

slide-18
SLIDE 18

Software Security Fails

iCloud: The Fappening

More than 500 private pictures leaked on 4chan on Aug-31, 14 Obviously huge privacy invasion but what are the technical aspects of the attack? Initial assumption: hacker gained access to Apple’s servers In reality: brute-forcing of targeted passwords Apple ID has many authentication methods and huge API Access to FindMyiPhone API did not enforce limits on number

  • f authentication attempts

This API was then likely used to brute-force passwords to well-known logins

Mathias Payer (Purdue University) CS-527 Software Security 2017 18 / 28

slide-19
SLIDE 19

Course Mechanics

Table of Contents

1

Staff

2

Course overview

3

Software Security Fails

4

Course Mechanics

5

Summary and Conclusion

Mathias Payer (Purdue University) CS-527 Software Security 2017 19 / 28

slide-20
SLIDE 20

Course Mechanics

The Lab and projects

Software security is an acquired skill. We will expose you to a lot of practical security tasks: A semester long capture-the-flag (CTF) game. In this Jeopardy-style CTF we will release new challenges (riddles/tasks/questions) every week following the class topics. You will use your reverse engineering and hacking skills to solve these challenges. The earlier you solve the challenge, the more points you get. To discourage from “sharing” solutions, the amount of points is reduced with each additional person solving the challenge. Design and implementation of a small application in C. Security evaluation of your peers’ applications. Fixing any reported security vulnerabilities.

Mathias Payer (Purdue University) CS-527 Software Security 2017 20 / 28

slide-21
SLIDE 21

Course Mechanics

Grading policy, projects, exams, and homework

Lab assignments (30% of grade) Programming projects (20% of grade) Midterm (15% of grade) Final (35% of grade)

Mathias Payer (Purdue University) CS-527 Software Security 2017 21 / 28

slide-22
SLIDE 22

Course Mechanics

Submitting homework and projects

Class teaches formal aspects of software security, projects and homework allow practical experience: Use a source repository to check in solutions, Organize your project according to a design document, Peer review and comment the code of other students, Work with a large code base, develop extensions.

Mathias Payer (Purdue University) CS-527 Software Security 2017 22 / 28

slide-23
SLIDE 23

Course Mechanics

Recommended Books

There are no comprehensive books on software security. Software security is defined through best practices, learning experience, and getting pwned. Software Security requires deep understanding of systems to reason across layers. Trent Jaeger, Operating System Security http://www.morganclaypool.com/doi/abs/10.2200/ S00126ED1V01Y200808SPT001. Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau. Operating Systems: Three Easy Pieces. http://pages.cs.wisc.edu/~remzi/OSTEP/ Randal E. Bryant and David R. O’Hallaron, Computer Systems: A Programmer’s Perspective http://csapp.cs.cmu.edu/.

Mathias Payer (Purdue University) CS-527 Software Security 2017 23 / 28

slide-24
SLIDE 24

Course Mechanics

Academic Integrity

All work that you submit in this course must be your own. Unauthorized group efforts are considered academic dishonesty. You are allowed to discuss the problem with your peers but you may not copy or reuse any part of an existing solution or work in a team. We will use automatic tools to compare your solution to those of

  • ther current and past students. The risk of getting caught is too

high!

Mathias Payer (Purdue University) CS-527 Software Security 2017 24 / 28

slide-25
SLIDE 25

Course Mechanics

Course Organization

Homepage: http://www.nebelwelt.net/teaching/17-527-SoftSec Lecture: Monday and Wednesday 3:30p to 4:20p in LWSN B134. Office hours: Monday 2:30p to 3:30p in LWSN 3154M. Homework/projects are generally due at 11:59pm.

Mathias Payer (Purdue University) CS-527 Software Security 2017 25 / 28

slide-26
SLIDE 26

Summary and Conclusion

Table of Contents

1

Staff

2

Course overview

3

Software Security Fails

4

Course Mechanics

5

Summary and Conclusion

Mathias Payer (Purdue University) CS-527 Software Security 2017 26 / 28

slide-27
SLIDE 27

Summary and Conclusion

Summary

Software Security is the area of Computer Science that focuses

  • n (i) testing, (ii) evaluating, (iii) improving, (iv) enforcing, and

(v) proving the security of software. Goal of the class: learn to identify common security threats, risks, and attack vectors for software systems. Evaluate and assess current security best practices and defense mechanisms for current software systems. Design and evaluate secure software. Enjoy the CTF and project.

Mathias Payer (Purdue University) CS-527 Software Security 2017 27 / 28

slide-28
SLIDE 28

Summary and Conclusion

Questions?

?

Mathias Payer (Purdue University) CS-527 Software Security 2017 28 / 28