advanced web technology 11) web security : esapi · advanced web technology 11) web security :...

27
Berner Fachhochschule, Technik und Informatik Advanced Web Technology 11) Web Security : ESAPI Dr. E. Benoist Fall Semester 2010/2011 Advanced Web Technology 11) Web Security : ESAPI 1

Upload: others

Post on 11-Aug-2020

11 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Advanced Web Technology 11) Web Security : ESAPI · Advanced Web Technology 11) Web Security : ESAPI Problems and Solutions: Handling Authentication and Identity 9. The Authenticator

Berner Fachhochschule, Technik und Informatik

Advanced Web Technology11) Web Security : ESAPI

Dr. E. Benoist

Fall Semester 2010/2011

Advanced Web Technology 11) Web Security : ESAPI

1

Page 2: Advanced Web Technology 11) Web Security : ESAPI · Advanced Web Technology 11) Web Security : ESAPI Problems and Solutions: Handling Authentication and Identity 9. The Authenticator

Table of Contents

� Motivations

� Problems and SolutionsDecoding / Encoding Untrusted DataHandling Authentication and IdentityEnforcing Access ControlIntrusion detection

� Configure ESAPI for your business

� Conclusion

Advanced Web Technology 11) Web Security : ESAPI

2

Page 3: Advanced Web Technology 11) Web Security : ESAPI · Advanced Web Technology 11) Web Security : ESAPI Problems and Solutions: Handling Authentication and Identity 9. The Authenticator

OWASP

I The Open Web Application Security Project (OWASP)

• is a worldwide free and open community focused on improvingthe security of application software.

I Products developed within OWASP• OWASP Top 10 : 10 most present vulnerabilities for web sites• Web Goat : a deliberately insecure J2EE web application• Web Scarab : framework for analysing applications that

communicate using the HTTP and HTTPS protocols.• Application Security Verification Standards (ASVS) : defines

four levels of application-level security verification for Webapplications.

I ESAPI• Enterprise Security API: helps software developers guard

against security-related design and implementation flaws.

Advanced Web Technology 11) Web Security : ESAPI

Motivations 3

Page 4: Advanced Web Technology 11) Web Security : ESAPI · Advanced Web Technology 11) Web Security : ESAPI Problems and Solutions: Handling Authentication and Identity 9. The Authenticator

Architecture of a Web Application

I Presentation Layer• Responsible for decoding requests and encoding html responses• For us uses JSF• Can be a templating system in PHP (Smarty for instance)

I Business Layer• Responsible for business logic• Written in POJO for us• Contains PHP commands

I Persistence Layer• Responsible for transferring objects in DataBase and vice-versa• For use a JPA implementation (Hibernate or TopLink for

instance)• In PHP the PEAR MDB2 library

I DataBase Layer

Advanced Web Technology 11) Web Security : ESAPI

Motivations 4

Page 5: Advanced Web Technology 11) Web Security : ESAPI · Advanced Web Technology 11) Web Security : ESAPI Problems and Solutions: Handling Authentication and Identity 9. The Authenticator

Security Needs in a Web ApplicationI Presentation Layer

• Encoding in HTML (against XSS attacks)• Verification of authentication for accessing resources• Validate the strings as numbers or valid passwords (string or

weak)• Encode reference to resource (transform direct to indirect

reference)I Business Layer

• Rights managements of users on functions• Encryption of configuration parameters•

I Data / Database layer• Encode SQL (against SQL injection)• Access to resource using an alias (transform indirect to direct

reference)• Verify the rights a user has on a specific resource

I . . .

Advanced Web Technology 11) Web Security : ESAPI

Motivations 5

Page 6: Advanced Web Technology 11) Web Security : ESAPI · Advanced Web Technology 11) Web Security : ESAPI Problems and Solutions: Handling Authentication and Identity 9. The Authenticator

Decoding / Encoding UntrustedData1

1Source: Javadoc documentation of the ESAPI packageAdvanced Web Technology 11) Web Security : ESAPI

Problems and Solutions: Decoding / Encoding Untrusted Data 6

Page 7: Advanced Web Technology 11) Web Security : ESAPI · Advanced Web Technology 11) Web Security : ESAPI Problems and Solutions: Handling Authentication and Identity 9. The Authenticator

Decoding / Encoding Untrusted Data(Cont.)

I One should never trust input given by the user• It must be first canonicalized using function canonicalize()• It reduces a possibly encoded string down to its simplest form.

I Work with the simplest stringI May be stored encoded

• In the DataBase using encodeForSQL()• In a LDAP server encodeForLDAP or encodeForDN (for

distinguished name).

I Encode for the output• For use in a HTML document encodeForHTML orencodeForHTMLAttribute

• For use in a Javascript program encodeForJavascript

Advanced Web Technology 11) Web Security : ESAPI

Problems and Solutions: Decoding / Encoding Untrusted Data 7

Page 8: Advanced Web Technology 11) Web Security : ESAPI · Advanced Web Technology 11) Web Security : ESAPI Problems and Solutions: Handling Authentication and Identity 9. The Authenticator

Handling Authentication and Identity

Advanced Web Technology 11) Web Security : ESAPI

Problems and Solutions: Handling Authentication and Identity 8

Page 9: Advanced Web Technology 11) Web Security : ESAPI · Advanced Web Technology 11) Web Security : ESAPI Problems and Solutions: Handling Authentication and Identity 9. The Authenticator

The Authenticator InterfaceI defines a set of methods for generating and handling

account credentials and session identifiers.I Application must set current user as soon as possible

• The value of getCurrentUser() is used in several otherplaces in this API.

I Method for login uses request and or session parameterto retrieve the user

try {User user = ESAPI.authenticator().login(request, response);// continue with authenticated user} catch (AuthenticationException e) {// handle failed authentication (it’s already been logged)}

Advanced Web Technology 11) Web Security : ESAPI

Problems and Solutions: Handling Authentication and Identity 9

Page 10: Advanced Web Technology 11) Web Security : ESAPI · Advanced Web Technology 11) Web Security : ESAPI Problems and Solutions: Handling Authentication and Identity 9. The Authenticator

The Authenticator Interface (Cont.)

I Handle password• Can change the password of the current user withchangePassword()

• Can generate a new strong passwordgenerateStrongPassword()

• Method verifyPasswordStrength() ensures that the pwdsite-specific complexity requirements, like length or number ofcharacter sets.

• Generate a hash of the password using account name as a salthashPassword()

I Handles login / logout• Get username, password or User in session from request

information in method login()• logout()

Advanced Web Technology 11) Web Security : ESAPI

Problems and Solutions: Handling Authentication and Identity 10

Page 11: Advanced Web Technology 11) Web Security : ESAPI · Advanced Web Technology 11) Web Security : ESAPI Problems and Solutions: Handling Authentication and Identity 9. The Authenticator

Enforcing Access Control

Advanced Web Technology 11) Web Security : ESAPI

Problems and Solutions: Enforcing Access Control 11

Page 12: Advanced Web Technology 11) Web Security : ESAPI · Advanced Web Technology 11) Web Security : ESAPI Problems and Solutions: Handling Authentication and Identity 9. The Authenticator

Enforcing Access Control

I Use the login done by AuthenticatorI Interface AccessController must be extended according

to firm policy• An existing DefaultAccessController class exists• Reads its rules out of a configuration file• Uses AccessControlRules described in the file

Advanced Web Technology 11) Web Security : ESAPI

Problems and Solutions: Enforcing Access Control 12

Page 13: Advanced Web Technology 11) Web Security : ESAPI · Advanced Web Technology 11) Web Security : ESAPI Problems and Solutions: Handling Authentication and Identity 9. The Authenticator

AccessControllerI Each time a resource is accessed, one must “Assert” its

availability

try {ESAPI.accessController().assertAuthorized(”↘→businessFunction”,runtimeData);// execute BUSINESS FUNCTION

} catch (AccessControlException ace) {... attack in progress}

I an attacker can attempt to invoke any business functionor access any data in your application.• Access control checks in the user interface should be repeated

in both the business logic and data layers.

Advanced Web Technology 11) Web Security : ESAPI

Problems and Solutions: Enforcing Access Control 13

Page 14: Advanced Web Technology 11) Web Security : ESAPI · Advanced Web Technology 11) Web Security : ESAPI Problems and Solutions: Handling Authentication and Identity 9. The Authenticator

Direct Access Reference

I Vulnerability: gives access to internal structure• Can be fileswww.toto.com/download.do?res=mysecretfile.pdf

• Can be a database index edit.do?page=123• and other types of direct object references

I As a rule, developers should not expose their directobject references as it enables attackers to attempt tomanipulate them.

Advanced Web Technology 11) Web Security : ESAPI

Problems and Solutions: Enforcing Access Control 14

Page 15: Advanced Web Technology 11) Web Security : ESAPI · Advanced Web Technology 11) Web Security : ESAPI Problems and Solutions: Handling Authentication and Identity 9. The Authenticator

AccessReferenceMap

Advanced Web Technology 11) Web Security : ESAPI

Problems and Solutions: Enforcing Access Control 15

Page 16: Advanced Web Technology 11) Web Security : ESAPI · Advanced Web Technology 11) Web Security : ESAPI Problems and Solutions: Handling Authentication and Identity 9. The Authenticator

AccessReferenceMap

I Indirect references are handled as strings, to facilitatetheir use in HTML

I When a reference is sent to the browser• Internal reference is stored in the map,• the indirect reference is sent to the browser• it is random generated

I When a reference is received from the browser• The indirect reference is received• It is converted back to a direct reference using the map.

I If per-user AccessReferenceMaps are used, then requestforgery (CSRF) attacks will also be prevented.

Advanced Web Technology 11) Web Security : ESAPI

Problems and Solutions: Enforcing Access Control 16

Page 17: Advanced Web Technology 11) Web Security : ESAPI · Advanced Web Technology 11) Web Security : ESAPI Problems and Solutions: Handling Authentication and Identity 9. The Authenticator

AccessReferenceMap (Cont.)I Example of use

Set fileSet = new HashSet();fileSet.addAll(...); // add direct references (e.g. File objects)AccessReferenceMap map = new AccessReferenceMap( fileSet )↘→;// store the map somewhere safe − like the session!String indRef = map.getIndirectReference( file1 );String href = ”http://www.aspectsecurity.com/esapi?file=” + ↘

→indRef );...// if the indirect reference doesn’t exist, it’s likely an attack// getDirectReference throws an AccessControlException// you should handle as appropriateString indref = request.getParameter( ”file” );File file = (File)map.getDirectReference( indref );

Advanced Web Technology 11) Web Security : ESAPI

Problems and Solutions: Enforcing Access Control 17

Page 18: Advanced Web Technology 11) Web Security : ESAPI · Advanced Web Technology 11) Web Security : ESAPI Problems and Solutions: Handling Authentication and Identity 9. The Authenticator

Intrusion Detection

I Based on two classes• Logger charged to write all the information gathered in the

application• IntrusionDetector that “analyses” the values gathered and

reacts according to given “rules”.

Advanced Web Technology 11) Web Security : ESAPI

Problems and Solutions: Intrusion detection 18

Page 19: Advanced Web Technology 11) Web Security : ESAPI · Advanced Web Technology 11) Web Security : ESAPI Problems and Solutions: Handling Authentication and Identity 9. The Authenticator

Logger

Advanced Web Technology 11) Web Security : ESAPI

Problems and Solutions: Intrusion detection 19

Page 20: Advanced Web Technology 11) Web Security : ESAPI · Advanced Web Technology 11) Web Security : ESAPI Problems and Solutions: Handling Authentication and Identity 9. The Authenticator

Logger (Cont.)

I The Logger interface defines a set of methods that canbe used to log security events.

I hierarchy of logging levels• Can be configured at runtime level• All events bellow a the current threshold are discarded.• Levels are :fatal (highest value), error, warning, info, debug,

trace (lowest value)•

I Loggers must fulfil the following requirements• Ensure that HTML characters are encoded (for persons looking

at stats in a browser)• Encode and CLRF in order to prevent log injection attacks.• Record for each event : the identity of the user, the description

of the event, success/failure of the event, security level, IPaddress, a time stamp

Advanced Web Technology 11) Web Security : ESAPI

Problems and Solutions: Intrusion detection 20

Page 21: Advanced Web Technology 11) Web Security : ESAPI · Advanced Web Technology 11) Web Security : ESAPI Problems and Solutions: Handling Authentication and Identity 9. The Authenticator

IntrusionDetector

Advanced Web Technology 11) Web Security : ESAPI

Problems and Solutions: Intrusion detection 21

Page 22: Advanced Web Technology 11) Web Security : ESAPI · Advanced Web Technology 11) Web Security : ESAPI Problems and Solutions: Handling Authentication and Identity 9. The Authenticator

IntrusionDetector (Cont.)

I Track security relevant events and identify attackbehavior.

I The interface is currently designed to accept exceptionsas well as custom events.

I Implemented in the DefaultIntrusionDetector class• This implementation monitors EnterpriseSecurityExceptions to

see if any user exceeds a configurable threshold in aconfigurable time period.

• For instance, if a user exceeds 10 input validation issues in a 1minute period.

• Or if there are more than 3 authentication problems in a 10second period.

I More complex implementation are possible

Advanced Web Technology 11) Web Security : ESAPI

Problems and Solutions: Intrusion detection 22

Page 23: Advanced Web Technology 11) Web Security : ESAPI · Advanced Web Technology 11) Web Security : ESAPI Problems and Solutions: Handling Authentication and Identity 9. The Authenticator

Configure ESAPI for your business

I Default implementation can be configured• Use config files for defining users and roles, such as business

rules• Very generic and simplified• Needs to be extended

I Develop your own implementation of InterfacesI Need to integrate the new classes in the framework

• Done using “(pseudo)-singleton pattern” or “(pseudo)-FactoryPattern”

Advanced Web Technology 11) Web Security : ESAPI

Configure ESAPI for your business 23

Page 24: Advanced Web Technology 11) Web Security : ESAPI · Advanced Web Technology 11) Web Security : ESAPI Problems and Solutions: Handling Authentication and Identity 9. The Authenticator

Pseudo-Singleton Pattern

(uses only static methods)

myauthenticator = new MyAuthenticator();ESAPI.setAuthenticator(myauthenticator); //register with ↘

→locator classauthenticator = ESAPI.getAuthenticator();authenticator.login(...); //use your implementation

Advanced Web Technology 11) Web Security : ESAPI

Configure ESAPI for your business 24

Page 25: Advanced Web Technology 11) Web Security : ESAPI · Advanced Web Technology 11) Web Security : ESAPI Problems and Solutions: Handling Authentication and Identity 9. The Authenticator

Change the instances

I At runtime change the instance used in the

I The instance of class ESAPI contains the default values/ changed values

Advanced Web Technology 11) Web Security : ESAPI

Configure ESAPI for your business 25

Page 26: Advanced Web Technology 11) Web Security : ESAPI · Advanced Web Technology 11) Web Security : ESAPI Problems and Solutions: Handling Authentication and Identity 9. The Authenticator

Conclusion

I ESAPI groups all the security items in one place• Easyer to maintain than code in all the application

I ESAPI has been tested and developed by securityspecialists• Never reinvent the wheel• Amateurism in security is no security

I ESAPI can easily be tailored for your business needs• Implement the interfaces• Replace the default implementation in the ESAPI class (using

set methods).

Advanced Web Technology 11) Web Security : ESAPI

Conclusion 26

Page 27: Advanced Web Technology 11) Web Security : ESAPI · Advanced Web Technology 11) Web Security : ESAPI Problems and Solutions: Handling Authentication and Identity 9. The Authenticator

References

I The ESAPI Toolkit web pages http://www.owasp.org

I OWASP Javadoc of ESAPI http://owasp-esapi-java.googlecode.com/svn/trunk_doc/2.0-rc4/index.html

Advanced Web Technology 11) Web Security : ESAPI

Conclusion 27