Personal Introduction + History Secure Software ... · Provides storage for local variables....

10
1 Secure Software Engineering and Embedded Systems Jan Jürjens Competence Center for IT Security Software & Systems Engineering TU Munich, Germany [email protected] http://www.jurjens.de/jan Jan Jürjens, TU Munich: Secure Software Engineering and Embedded Systems 2 Personal Introduction + History Me: Leading the Competence Center for IT-Security at Software & Systems Engineering, TU Munich Extensive collaboration with industry (BMW, HypoVereinsbank, T-Systems, Deutsche Bank, Siemens, …) PhD in Computer Science from Oxford Univ., Masters in Mathematics from Bremen Univ. Numerous publications incl. 1 book on the subject This tutorial: part of series of 30 tutorials on secure software engineering. Continuously improved (please fill in feedback forms). Jan Jürjens, TU Munich: Secure Software Engineering and Embedded Systems 3 A Need for Security Society and economies rely on computer networks for communication, finance, energy distribution, transportation... Attacks threaten economical and physical integrity of people and organizations. Interconnected systems can be attacked anonymously and from a safe distance. Networked computers need to be secure. Jan Jürjens, TU Munich: Secure Software Engineering and Embedded Systems 4 Secure Systems Development High quality development of security- critical systems difficult. Many systems developed, deployed, used that do not satisfy security requirements, sometimes with spectacular attacks. Example: NSA hackers break into U.S. Department of Defense computers. Jan Jürjens, TU Munich: Secure Software Engineering and Embedded Systems 5 Causes I Designing secure systems correctly is difficult. Even experts may fail: Needham-Schroeder protocol (1978) Attacks found 1981 (Denning, Sacco), 1995 (Lowe) Designers often lack background in security. Security as an afterthought. Little feedback from customers. Jan Jürjens, TU Munich: Secure Software Engineering and Embedded Systems 6 Causes II „Blind“ use of mechanisms: • Security often compromised by circumventing (rather than breaking) them. Assumptions on system context, physical environment. „Those who think that their problem can be solved by simply applying cryptography don`t understand cryptography and don`t understand their problem“ (R. Needham).

Transcript of Personal Introduction + History Secure Software ... · Provides storage for local variables....

Page 1: Personal Introduction + History Secure Software ... · Provides storage for local variables. Scratch-pad area when process needs temporary storage. “Bookkeeping” information for

2

1

Secure Software Engineering and Embedded Systems

Jan Jürjens

Competence Center for IT Security

Software & Systems Engineering

TU Munich, Germany

[email protected]

http://www.jurjens.de/janJan Jürjens, TU Munich: Secure Software Engineering and Embedded Systems 2

Personal Introduction + History

Me: Leading the Competence Center for IT-Security at Software & Systems Engineering, TU Munich

• Extensive collaboration with industry (BMW, HypoVereinsbank, T-Systems, Deutsche Bank, Siemens, …)

• PhD in Computer Science from Oxford Univ., Masters in Mathematics from Bremen Univ.

• Numerous publications incl. 1 book on the subjectThis tutorial: part of series of 30 tutorials on secure

software engineering. Continuously improved(please fill in feedback forms).

Jan Jürjens, TU Munich: Secure Software Engineering and Embedded Systems 3

A Need for Security

Society and economies rely on computernetworks for communication, finance, energy distribution, transportation...

Attacks threaten economical and physicalintegrity of people and organizations.

Interconnected systems can be attackedanonymously and from a safe distance.

Networked computers need to be secure.

Jan Jürjens, TU Munich: Secure Software Engineering and Embedded Systems 4

Secure Systems Development

High quality development of security-critical systems difficult.

Many systems developed, deployed, used that do not satisfy security requirements, sometimes with spectacular attacks.

Example: NSA hackers break into U.S. Department of Defense computers.

Jan Jürjens, TU Munich: Secure Software Engineering and Embedded Systems 5

Causes I

Designing secure systems correctly isdifficult. Even experts may fail:

• Needham-Schroeder protocol (1978)• Attacks found 1981 (Denning, Sacco),

1995 (Lowe)Designers often lack background in security.Security as an afterthought.Little feedback from customers.

Jan Jürjens, TU Munich: Secure Software Engineering and Embedded Systems 6

Causes II

„Blind“ use of mechanisms: • Security often compromised

by circumventing (rather thanbreaking) them.

• Assumptions on system context, physicalenvironment.

„Those who think that their problem can be solvedby simply applying cryptography don`t understandcryptography and don`t understand their problem“ (R. Needham).

Page 2: Personal Introduction + History Secure Software ... · Provides storage for local variables. Scratch-pad area when process needs temporary storage. “Bookkeeping” information for

2

2

Jan Jürjens, TU Munich: Secure Software Engineering and Embedded Systems 7

Quality vs. Cost

Correctness in conflict with cost.

Thorough methods of system designnot used if too expensive.

Jan Jürjens, TU Munich: Secure Software Engineering and Embedded Systems 8

Security Requirements

� � � � ��� � � ��� � � ��� � �� � ��� � � � ��� ��� � � ��� � � � � ��� � ��� � � �� ��� � � � � � � ��� � � � ���� � ��� � � � ����� �! "$#&%���' ( � � ��� � � � � )�� � ��� � � � �) � � � * � � � *�* + � � � � ��� � � ��� � � � �,�� � � * � ��� � � � � �� � � � � � � � *�*-�� � * � � ��� � � � �

Protection of the system, against attacks.0/ "�1�2 ! 3 4 Protection of environment, against faults. ��5 / 3 4

6

6

���� �! "$7�1�8�"�3 ! %�8� � ��� � � � � � � � � � �� � � 9�� � � � � � � � � �

� � � 9 � � � : � � � � �)�� ��9 � *&; � � � ��� ;�<

)�� ��9 � *� � � � � � �= � ����� � � > � � � �� � � ��� � � � � �� � � � � �

6

? / "�@���8�! �AB 9�� �C� � � � *,�� * * D0� � � *

( � � � � � � � � �� �� � � ���� � � * *��� � � � � ���� * � � � � �E��� � � ���

� ��� � � ���� � ��9 � ���;&;�� ��� � <��� � � � � � � *� � ��� �= � � * )�� � � � ��� � � �

F� �G / "�3 [Wec03]

Jan Jürjens, TU Munich: Secure Software Engineering and Embedded Systems 9

Basic Security Requirements I

Secrecy

Information

Information

Integrity

Information

Availability

Jan Jürjens, TU Munich: Secure Software Engineering and Embedded Systems 10

Basic Security Requirements II

Information

Authenticity

Sender

Sender

Nonrepudiability

Informa-

tion

Jan Jürjens, TU Munich: Secure Software Engineering and Embedded Systems 11

Internet Attacks: Eavesdropping

H I J

K

Packet sniffer

Jan Jürjens, TU Munich: Secure Software Engineering and Embedded Systems 12

Internet II: Masquerading (Spoofing)

L M N. G�%�%�5

OQP�R&S T�U VXW&Y VZ P�[�\XS ]�P^HQ_ _ TX]�`

abTXc�d&e&P�[�TXf&P�[

g h Mbi

Page 3: Personal Introduction + History Secure Software ... · Provides storage for local variables. Scratch-pad area when process needs temporary storage. “Bookkeeping” information for

2

3

Jan Jürjens, TU Munich: Secure Software Engineering and Embedded Systems 13

�����

� � ��� � � �

� � �� �� � � ��� � � �

� � � � � � � � � �

� � � � � � � � � �

� � ��� �� � � ��� �� �

Internet III: „Man-in-the-Middle“

Jan Jürjens, TU Munich: Secure Software Engineering and Embedded Systems 14

Defense: Cryptography

Jan Jürjens, TU Munich: Secure Software Engineering and Embedded Systems 15

Cryptographic AlgorithmsSymmetric:

• Digital Encryption Standard (DES), 3DES

• Advanced Encryption Standard (AES): Ryndael 2001

Asymmetric:

• RSA (Rivest/Shamir/Adleman): relies on integer factorization

• ElGamal: relies on diskrete logarithm

• Diffie-Hellman: Generate key shared between twoparties

Jan Jürjens, TU Munich: Secure Software Engineering and Embedded Systems 16

Encryption vs. Secrecy

A B{m}K::K A B

{m}K

Against eavesdropper:

• Secrecy of {m}K::K not preserved• Secrecy of {m}K preserved

Jan Jürjens, TU Munich: Secure Software Engineering and Embedded Systems 17

Hybrid Encryption Schemes������� � ���� �

��� ��� ��� ������� � � ������� � ��������� � �( � ;&; � � � � �"!�� � � ����� � � �

( � ;&; � � � � �"#�� � � ����� � � �

��� � $���� �%��� %&

( � * * � � ��' � �"(

( � * * � � ��' � ��(

!�� � � � ��� � �( � * * � � ��' � �"!�) (�*

!�� � � � ��� � �( � * * � � ��' � ��!�) (�*

� * � ;&; � � � � �!�� � � ����� � � �

� * � ;&; � � � � �#�� � � ����� � � �

Jan Jürjens, TU Munich: Secure Software Engineering and Embedded Systems 18

Hybrid Schemes vs. Secrecy

A B{K}PubB

{m}K

• Secrecy of m not preserved against an attacker who can delete and insert messages.

• Secrecy of m preserved against an attacker who can eavesdrop, but not alter the link.

Page 4: Personal Introduction + History Secure Software ... · Provides storage for local variables. Scratch-pad area when process needs temporary storage. “Bookkeeping” information for

2

4

Creation of digital signatures

� � � � � �

� � �

��� ��� � � �������

� �� � � � � � �� �� � � � � � �

� �� �� � ��� � �� � � � � � � � � � � � �

� � � � � � � �� �� � �

asymmetricDecryption

Jan Jürjens, TU Munich: Secure Software Engineering and Embedded Systems 20

Verification of digital Signatures

��� ��� � � �������

� � � � � � � �� �� � �

� � ��� ����� &�� ��� � ����� ���� � ��� ����� &�� ��� � ����� � �

�$e�&U S ]`�P� �

&�� ��� � ��� ����� ������� ��� ���

�� �4�A A / 3 2 ! "� / "�2 4�G�3 ! %�8

��

Jan Jürjens, TU Munich: Secure Software Engineering and Embedded Systems 21

Cryptographic Protocols

Need to be able to securely determine identity of communication partners. Threats:

• forge identifications• replay old identificationsNeed to manage keys, perform electronic

transactions, ... Use cryptographic protocols: Exchange of

messages for distributing session keys, authenticating principals etc.

Notoriously hard to get right.

Jan Jürjens, TU Munich: Secure Software Engineering and Embedded Systems 22

Protocol: Attack Scenario

A BAdversary

m(x)

Adversaryknowledge:

k-1, y,

m(x)

x

return({ z} k)

[argb,1,1 = x]

{ z} k, z

return({ y::x} z)

Jan Jürjens, TU Munich: Secure Software Engineering and Embedded Systems 23

Using Protocols: Secure Channel

To keep d secret, must be sent encrypted.Jan Jürjens, TU Munich: Secure Software Engineering and Embedded Systems 24

Secure Channel Pattern: Solution

Exchange certificate and send encrypted data over Internet.

Page 5: Personal Introduction + History Secure Software ... · Provides storage for local variables. Scratch-pad area when process needs temporary storage. “Bookkeeping” information for

2

5

Jan Jürjens, TU Munich: Secure Software Engineering and Embedded Systems 25

� � � D0� � '&� � � ��� � � � � �� ! � � � " !

# � � �� � �� � ! � � � �

� � � : D0� � '�� � � ��� � � � � �� ! � � � " !

# � � �� � �� � ! � � � �

( D � � � 9�� � � � � � � �" �

-�� � � * � � � ��� � � � �$ � � � % � # � �

-�� � � * � � � ��� � � � '$ � � � % � # � �( D � � � 9�� � � � � � � �

" �

������� � � � � � � �&� � � � �� # # � ! � � & ' ! �

' � # � ! # � ! �

' & � � ! � ( � ) ! � #

# ���� ��

������� � � � � � � �&� � � � �� # # � ! � � & ' ! �

' � # � ! # � ! �

' & � � ! � ( � ) ! � #

# ���� ��

�� * �� � � � �

+

,

)

-

.

/

0

+

,

)

-

.

/

0

F�G�G�' ! "���3 ! %�8 F�G�G�' ! "���3 ! %�8

� @�4� �! "���'���2 ��8� �G�%�2 3�����4 / 2

(�� + � + !���,�X,�� ,�! + � (�(�(�� � � � � � * � ( !�-�� ( � -�-�,

(�( = � -�= (� , * � �

! ,�� ��,

Encryption and Protocol Layers

Jan Jürjens, TU Munich: Secure Software Engineering and Embedded Systems 26

Mobile Systems: Mobile IP

Mobile computers (laptops).Wireless networks (GPRS, UMTS,…).Move from one link to another without

changing IP address.• Don’t restart communication (VoIP).• IP-v6: provides “everything” with IP

address.Solution: home address vs. care-of

address.

Jan Jürjens, TU Munich: Secure Software Engineering and Embedded Systems 27

IP network(Internet)

HomeNetwork

Router/HomeAgent

Applicationserver

ForeignNetwork

Mobile IP Scenario

Home Address

Care-Of Address = FN Address

GPRS

Hotel

[Noo01]

Triangular Routing.Binding Update (BU) for route optimization.

Jan Jürjens, TU Munich: Secure Software Engineering and Embedded Systems 28

Security Issues

IP network(Internet)

HomeNetwork

Router/HomeAgent

Applicationserver

ForeignNetwork

Home IP Addr

Attacker

Rtr/ Foreign Agent

Attacker may redirect traffic:Man-in-the-middle, Denial-of-Service

Jan Jürjens, TU Munich: Secure Software Engineering and Embedded Systems 29

Routing-based authentication

Foreign network sends secret key to home agent through (hopefully) secure route.

Home agents forwards key to mobile nodethrough secure tunnel.

Mobile node uses key for authenticating binding update to foreign network.

Goal of Mobile IP: as secure as wirednetwork.

Jan Jürjens, TU Munich: Secure Software Engineering and Embedded Systems 30

Embedded Application Security: CEPS

Common Electronic Purse Specifications (CEPS): Globalelectronic purse standard (90% of market).

Smart card contains account balance. Chip performscryptographic operations securing the transactions.

Securer than credit cards (transaction-bound authorization).

Page 6: Personal Introduction + History Secure Software ... · Provides storage for local variables. Scratch-pad area when process needs temporary storage. “Bookkeeping” information for

2

6

Jan Jürjens, TU Munich: Secure Software Engineering and Embedded Systems 31

Load protocol

Unlinked, cash-based load transaction (on-line).Load value on card using cash at load device.Load device contains Load Security Application

Module (LSAM): secure data processing and storage.

Card account balance adjusted; transaction data logged and sent to issuer for financial settlement.

Uses symmetric cryptography.

Jan Jürjens, TU Munich: Secure Software Engineering and Embedded Systems 32

Load protocol

Jan Jürjens, TU Munich: Secure Software Engineering and Embedded Systems 33

Security Threat Model

Card, LSAM, issuer security module assumed tamper-resistant.

Intercept communication links, replacecomponents.

Possible attack motivations:• Cardholder: charge without pay• Load acquirer: keep cardholder's money • Card issuer: demand money from load

acquirerMay coincide or collude.

Jan Jürjens, TU Munich: Secure Software Engineering and Embedded Systems 34

Audit security

No direct communication between card and cardholder. Manipulate load device display.

Use post-transaction settlement scheme.Relies on secure auditing.Verify this here (only executions completed

without exception). For example:Load acquirer security: Load acquirer has to

pay m to card issuer only if load acquirer has received m from cardholder.

Jan Jürjens, TU Munich: Secure Software Engineering and Embedded Systems 35

Load acquirer security: detailsSuppose card issuer I possesses

mln=Signrn(cep::nt::lda::mn::s1::hcnt::hln::h2ln) and card C possesses rln, where hln = Hash (lda::cep::nt::rln).

Then after execution either of following hold:• Llog(cep,lda,mn,nt) has been sent to l:LLog (so load

acquirer L has received and retains mn in cash) or• Llog (cep, lda, 0, nt) has been sent to l : LLog (so L

returns mn to cardholder) and L has received rcnt

with hcnt=Hash(lda::cep::nt::rcnt) (negating mln)."mln provides guarantee that load acquirer owes

transaction amount to card issuer" (CEPS)

Jan Jürjens, TU Munich: Secure Software Engineering and Embedded Systems 36

Flaw

L does not provide load acquirer security against adversaries of type insider.

Automatically detected using UML tools.

Modification: use asymmetric key in , include signature certifying .

Automatically verified this version wrt. above conditions.

Page 7: Personal Introduction + History Secure Software ... · Provides storage for local variables. Scratch-pad area when process needs temporary storage. “Bookkeeping” information for

2

7

Jan Jürjens, TU Munich: Secure Software Engineering and Embedded Systems 37

Code-based attack: Buffer Overflow

Common security vulnerability.Values written into fixed length buffer and

partially written outside buffer’s boundaries.Facilitated by use of vulnerable library

routines (Unix: e.g. get s and st r cpy )

• execute arbitrary code with superuser rights

• often in connection with stack smashing.C, C++, and assembly offer no protection.

Jan Jürjens, TU Munich: Secure Software Engineering and Embedded Systems 38

The Stack

Portion of address space of a process.Provides storage for local variables.Scratch-pad area when process needs

temporary storage.“Bookkeeping” information for function call:• Parameters that won’t fit in registers• Saved values of registers• Address from which function was called.

Jan Jürjens, TU Munich: Secure Software Engineering and Embedded Systems 39

Stack Smashing

Attacker provides input string containing executable binary code.

The buffer overflow lets return address in stack frame for currently active function point to attack code.

������

� � � � � � � ��

� �� ��� � � � � ��� �

� � � � � � � � � �

On function return: control transferred to attack code, not returned to calling routine.

Jan Jürjens, TU Munich: Secure Software Engineering and Embedded Systems 40

Stack Smashing Example

l i ne: 512-byte array allocated on stack

get s( ) provided with more than 512 bytes: still puts data on stack

mai n( ar gc, ar gv){

char l i ne[ 512] ;

. . . get s( l i ne) ;. . .

By choice of data in l i ne, can divert flow of execution to special instruction sequence calling execv( ) to replace running image with a shell.

Jan Jürjens, TU Munich: Secure Software Engineering and Embedded Systems 41

Stack Smashing and Privileges

Often used to attack programs running as root or binaries installed SetUID root:

SetUID permissions in UNIX grant user privilege to run programs or scripts as another user.

Programs that are SetUID root may be executable by underprivileged user, but run with unrestricted system access.

Attacks may allow unprivileged user to acquire root privileges with one exploit.

Jan Jürjens, TU Munich: Secure Software Engineering and Embedded Systems 42

Preventing Stack Smashing in C

Validate all input. Perform bounds checking on all arrays. Let programs execute at lowestnecessary privilege level.

Avoid using functions that do not check bounds (st r cpy ( ) , st r cat ( ) , spr i nt f ( ) , get s ( ) , …).

Use safer alternative functions (st r ncpy( ) ,st r ncat ( ) , snpr i nt f ( ) , f get s( ) , …).

Use libraries and tools that can prevent buffer overflow vulnerabilities.

Page 8: Personal Introduction + History Secure Software ... · Provides storage for local variables. Scratch-pad area when process needs temporary storage. “Bookkeeping” information for

2

8

Jan Jürjens, TU Munich: Secure Software Engineering and Embedded Systems 43

Preventing Stack Smashing: Tools

StackGuard: gcc patch enabling executed codeto detect change in return address (and failsafely). Moderate performance penalty. No modification in source code necessary.

• Canary Words: Write random „canary“ wordbetween local variables and return address. Jump back only if intact.

• MemGuard: Make memory page with returnaddress „read-only“. Emulate write‘s to variables on same memory page. Securer but slower.

Jan Jürjens, TU Munich: Secure Software Engineering and Embedded Systems 44

Tools II

• Linux kernel patch: stack non-executable. Non performance penalty but buffer-overflow attacks still possible.

• gcc patch: array bounds checking. Securer than StackGuard but significant performance penalty.

• Where possible, use type-safe languages (Java).

Jan Jürjens, TU Munich: Secure Software Engineering and Embedded Systems 45

Software Engineering & Security

„Penetrate-and-patch“ (aka „banana strategy):

• insecure• disruptive

Traditional formal methods: expensive.

• training people• constructing formal specifications.

Jan Jürjens, TU Munich: Secure Software Engineering and Embedded Systems 46

Consider security

• from early on

• within development context

• taking an expansive view

• in a seamless way.

Secure design by model analysis.

Secure implementation by test generation.

Goal: Security by Design

Jan Jürjens, TU Munich: Secure Software Engineering and Embedded Systems 47

Model-based Security Engineering

Requirements

Models

Code

Requirements

Models

Code

Analyze

Codegen. Testgen.

Combined strategy:• Analyze models automati-

cally against securityrequirements

• Generate code frommodels where reasonable

• Write code and generatetest-sequences otherwise.

Increase quality with bounded time-to-market and cost.

Jan Jürjens, TU Munich: Secure Software Engineering and Embedded Systems 48

Using UML

UML: unprecedented opportunity forhigh-quality critical systems developmentfeasible in industrial context:

• De-facto standard in industrial modeling: large number of developers trained in UML.

• Relatively precisely defined (given the user community).

• Many tools in development (also for analysis, testing, simulation, transformation).

Page 9: Personal Introduction + History Secure Software ... · Provides storage for local variables. Scratch-pad area when process needs temporary storage. “Bookkeeping” information for

2

9

Jan Jürjens, TU Munich: Secure Software Engineering and Embedded Systems 49

UMLsec: Goals

Extensions for secure systems development.• evaluate UML specifications for weaknesses

in design• encapsulate established rules of prudent

secure engineering as checklist• make available to developers not specialized

in secure systems• consider security requirements from early

design phases, in system context• make certification cost-effective

Jan Jürjens, TU Munich: Secure Software Engineering and Embedded Systems 50

The UMLsec Profile

Recurring security requirements, adversaryscenarios, concepts offered as stereotypes with tags on component-level.

Use associated constraints to evaluatespecifications and indicate possibleweaknesses.

Ensures that UML specification providesdesired level of security requirements.

Link to code via test-sequence generation.

Jan Jürjens, TU Munich: Secure Software Engineering and Embedded Systems 51

Further Applications

Multi-layer security protocol for web applicationof German bank

SAP access control configurations

Biometric authentication system of German telecommunication company

Automobile emergency application of German car manufacturer

Electronic signature architecture of German insurance company

Jan Jürjens, TU Munich: Secure Software Engineering and Embedded Systems 52

Test-generation: Conformance testing

Classical approach in model-based test-generation (much literature).

Can be superfluous when using code-generation [except to check your code-generator, once and for all].

Works independently of criticalityrequirements.

Jan Jürjens, TU Munich: Secure Software Engineering and Embedded Systems 53

Conformance testing: Problems

Complete test-coverage usually infeasible. Need to somehow select test-cases.

Can only test code against what iscontained in behavioral model. Usually, model more abstract than code. So mayhave „blind spots“ in the code.

For both reasons, may miss critical test-cases.

Jan Jürjens, TU Munich: Secure Software Engineering and Embedded Systems 54

Criticality testing

Strategies:

• Ensure test-case selection from behavioralmodels does not miss critical cases: Selectaccording to information on criticality(„internal“ criticality testing).

• Test code against possible environmentinteraction generated from external parts of the model (e.g. deployment diagram withinformation on physical environment).

Page 10: Personal Introduction + History Secure Software ... · Provides storage for local variables. Scratch-pad area when process needs temporary storage. “Bookkeeping” information for

2

10

Jan Jürjens, TU Munich: Secure Software Engineering and Embedded Systems 55

UMLsec Tool

Jan Jürjens, TU Munich: Secure Software Engineering and Embedded Systems 56

Some resourcesBook: Jan Jürjens, Secure Systems

Development with UML, Springer-Verlag, 2004

Tutorials: Sept.: SAFECOMP (Potsdam), ASE (Linz), NODe (Erfurt).

Summer School Lecture: FOSAD (Bertinoro, Italy, Sept.)

Workshop: CSDUML@UML04

More information (papers, slides, tool etc.): http://www4.in.tum.de/~juerjens/csdumltut (user Participant, password Iwasthere)

Jan Jürjens, TU Munich: Secure Software Engineering and Embedded Systems 57

Finally

We are always interested in industrialchallenges for our tools, methods,and ideas to solve practical problems.More info: http://www4.in.tum.de/~secse

Contact me here or via Internet.

Thanks for your attention !