53
SECURE CODING ESSENTIALS DEFENDING YOUR WEB APPLICATION AGAINST CYBER ATTACKS ROB AUGUSTINUS 30 MARCH 2017

Secure Coding Essentials - KIVI · Secure Coding Essentials 3 Ports and related services Property and hotels Infrastructure Energy and Telecom Retail 270,000 people in over 50 countries

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Secure Coding Essentials - KIVI · Secure Coding Essentials 3 Ports and related services Property and hotels Infrastructure Energy and Telecom Retail 270,000 people in over 50 countries

SECURE CODING

ESSENTIALS

DEFENDING YOUR WEB APPLICATION AGAINST

CYBER ATTACKS

ROB AUGUSTINUS

30 MARCH 2017

Page 2: Secure Coding Essentials - KIVI · Secure Coding Essentials 3 Ports and related services Property and hotels Infrastructure Energy and Telecom Retail 270,000 people in over 50 countries

AGENDA

• Intro - A.S. Watson and Me

• Why this Presentation ?

• Security Architecture

• Secure Code Design Principles

• The Process - Security in the SDLC

• Mission Accomplished ?

Secure Coding Essentials 2

Page 3: Secure Coding Essentials - KIVI · Secure Coding Essentials 3 Ports and related services Property and hotels Infrastructure Energy and Telecom Retail 270,000 people in over 50 countries

Secure Coding Essentials 3

Ports and related services

Property and hotels

Infrastructure Energy and Telecom

Retail

270,000 people in over 50 countries across the world

Page 4: Secure Coding Essentials - KIVI · Secure Coding Essentials 3 Ports and related services Property and hotels Infrastructure Energy and Telecom Retail 270,000 people in over 50 countries

A.S. WATSON RETAIL BRANDS EUROPE

Secure Coding Essentials 4

15 Business Units 40 Websites 2 Datacenters

Page 5: Secure Coding Essentials - KIVI · Secure Coding Essentials 3 Ports and related services Property and hotels Infrastructure Energy and Telecom Retail 270,000 people in over 50 countries

NOT ALL OUR WEBSITE VISITORS ARE FRIENDLY…

Secure Coding Essentials 5

Page 6: Secure Coding Essentials - KIVI · Secure Coding Essentials 3 Ports and related services Property and hotels Infrastructure Energy and Telecom Retail 270,000 people in over 50 countries

AGENDA

• Intro – A.S. Watson and Me

• Why this Presentation?

• Security Architecture

• Secure Code Design Principles

• The Process - Security in the SDLC

• Mission Accomplished ?

Secure Coding Essentials 6

Page 7: Secure Coding Essentials - KIVI · Secure Coding Essentials 3 Ports and related services Property and hotels Infrastructure Energy and Telecom Retail 270,000 people in over 50 countries

7 Created by Rob Augustinus

SHOULD DEVELOPERS BOTHER ABOUT SECURITY ?

Secure Coding Essentials

Page 8: Secure Coding Essentials - KIVI · Secure Coding Essentials 3 Ports and related services Property and hotels Infrastructure Energy and Telecom Retail 270,000 people in over 50 countries

YES, BECAUSE…

Created by Rob Augustinus

Secure Coding Essentials 8

Page 9: Secure Coding Essentials - KIVI · Secure Coding Essentials 3 Ports and related services Property and hotels Infrastructure Energy and Telecom Retail 270,000 people in over 50 countries

UNEVEN BATTLE

Secure Coding Essentials 9

Page 10: Secure Coding Essentials - KIVI · Secure Coding Essentials 3 Ports and related services Property and hotels Infrastructure Energy and Telecom Retail 270,000 people in over 50 countries

HOW TO WRITE IN/SECURE CODE

Secure Coding Essentials 10

Page 11: Secure Coding Essentials - KIVI · Secure Coding Essentials 3 Ports and related services Property and hotels Infrastructure Energy and Telecom Retail 270,000 people in over 50 countries

SECURE CODE NEEDS A GOOD FOUNDATION

CLEAN CODE

Secure Code

Code And Server

Maintenance

Secure Server

11 Secure Coding Essentials

Created by Rob Augustinus

Page 12: Secure Coding Essentials - KIVI · Secure Coding Essentials 3 Ports and related services Property and hotels Infrastructure Energy and Telecom Retail 270,000 people in over 50 countries

Process

• The proof of the pudding is in the testing

• Maintain and improve your code till the end its life

THE 3 PILLARS OF CLEAN CODE

12 Secure Coding Essentials

Architecture

• Don’t glue your application together with code snippets

• Structure & Organize your code by using an architectural pattern or application framework

Design

• Don’t re-invent the wheel • Follow proven SW design

principles to avoid common pitfalls

Created by Rob Augustinus

Security Bugs Ahead !

Warning ! Security Holes

Created by Rob Augustinus

Page 13: Secure Coding Essentials - KIVI · Secure Coding Essentials 3 Ports and related services Property and hotels Infrastructure Energy and Telecom Retail 270,000 people in over 50 countries

AGENDA

• Intro – A.S. Watson and Me

• Why this Presentation ?

• Security Architecture

• Secure Code Design Principles

• The Process - Security in the SDLC

• Mission Accomplished ?

Secure Coding Essentials 13

Page 14: Secure Coding Essentials - KIVI · Secure Coding Essentials 3 Ports and related services Property and hotels Infrastructure Energy and Telecom Retail 270,000 people in over 50 countries

MVC ARCHITECTURE PATTERN

Controller

Model

View Separation of concerns

14

Secure Coding Essentials

Created by Rob Augustinus

Page 15: Secure Coding Essentials - KIVI · Secure Coding Essentials 3 Ports and related services Property and hotels Infrastructure Energy and Telecom Retail 270,000 people in over 50 countries

Data Integrity Is your data clean and can it be trusted ?

Data Access Can users access only the data

they should be able to access ?

Data Protection Is sensitive data well protected

against unauthorized access ?

Functionality Are features and application logic

being used as expected ?

Data at Rest

Application Modeling:

Functionality Data in transit

SECURITY ARCHITECTURE THREAT RISK MODELING

Data in transit

15 Secure Coding Essentials

Created by Rob Augustinus

Identify Threats:

Page 16: Secure Coding Essentials - KIVI · Secure Coding Essentials 3 Ports and related services Property and hotels Infrastructure Energy and Telecom Retail 270,000 people in over 50 countries

SECURITY ARCHITECTURE DATA INTEGRITY

Model

Retrieve, Insert & Update

Information

Controller

Application Logic

View

Web page presented to

user

Output Encoding: Transform data in

a safe format before sending

it to the user

Validate data before storing Refuse or transform data in a safe format before storing on

database or file system

Is your data clean and can it be trusted ?

16 Secure Coding Essentials

Created by Rob Augustinus

Input Validation & Sanitation: Refuse and/or clean

unwanted user input BEFORE any further processing

Created by Rob Augustinus

Page 17: Secure Coding Essentials - KIVI · Secure Coding Essentials 3 Ports and related services Property and hotels Infrastructure Energy and Telecom Retail 270,000 people in over 50 countries

SECURITY ARCHITECTURE DATA ACCESS

Can users access only the data

they should be able to access ?

Secure Coding Essentials 17

Model

Retrieve, Insert & Update

Information

Controller

Application Logic

View

Web page presented to

user

User authorization check in controller: Role-based access

controls

Least privilege database and file access rights for application user

Ensure that only authorized users can execute actions on

data objects

Page 18: Secure Coding Essentials - KIVI · Secure Coding Essentials 3 Ports and related services Property and hotels Infrastructure Energy and Telecom Retail 270,000 people in over 50 countries

SECURITY ARCHITECTURE DATA PROTECTION

Model

Retrieve, Insert & Update

Information

Controller

Application Logic

View

Web page presented to

user

Protect sensitive data which is

exchanged between application and user

Protect sensitive data which is stored in databases or files

Protect session data which is exchanged between

application, user or third party systems (API’s)

Safe exception and error handling to

avoid exposure of sensitive information

Is sensitive data well protected

against unauthorized access ?

18 Secure Coding Essentials

Page 19: Secure Coding Essentials - KIVI · Secure Coding Essentials 3 Ports and related services Property and hotels Infrastructure Energy and Telecom Retail 270,000 people in over 50 countries

SECURITY ARCHITECTURE FUNCTIONALITY

Model

Retrieve, Insert & Update

Information

Controller

Application Logic

View

Web page presented to

user

Ensure that your application can only be used as the expected order of operations

Are features and application logic

being used as expected ?

Only implement features and

functionality that you actually need

19 Secure Coding Essentials

Page 20: Secure Coding Essentials - KIVI · Secure Coding Essentials 3 Ports and related services Property and hotels Infrastructure Energy and Telecom Retail 270,000 people in over 50 countries

AGENDA

• Intro – A.S. Watson and Me

• Why this Presentation ?

• Security Architecture

• Secure Code Design Principles

• The Process - Security in the SDLC

• Mission Accomplished ?

Secure Coding Essentials 20

Page 21: Secure Coding Essentials - KIVI · Secure Coding Essentials 3 Ports and related services Property and hotels Infrastructure Energy and Telecom Retail 270,000 people in over 50 countries

COCO

Coding

Conventions

SOFTWARE DESIGN PRINCIPLES

DRY Don’t Repeat Yourself

21 Secure Coding Essentials

Page 22: Secure Coding Essentials - KIVI · Secure Coding Essentials 3 Ports and related services Property and hotels Infrastructure Energy and Telecom Retail 270,000 people in over 50 countries

SECURE CODING DESIGN PRINCIPLES

Secure Coding Essentials 22

Data Integrity Never, ever, trust the user

Data Access Control access to protected resources

User rights: Less is more !

Data Protection Keep sensitive information private

Don’t expose yourself

Functionality Expect the unexpected

Minimize attack surface

Page 23: Secure Coding Essentials - KIVI · Secure Coding Essentials 3 Ports and related services Property and hotels Infrastructure Energy and Telecom Retail 270,000 people in over 50 countries

DATA INTEGRITY DESIGN PRINCIPLES NEVER, EVER, TRUST THE USER - INPUT VALIDATION & SANITIZATION

Sanitize unwanted input, but be careful…it can make your data unusable

Validate and reject unwanted input …always at the server side

23 Secure Coding Essentials

• Input: (hidden) form input, http headers, cookies, captcha code, etc.

Page 24: Secure Coding Essentials - KIVI · Secure Coding Essentials 3 Ports and related services Property and hotels Infrastructure Energy and Telecom Retail 270,000 people in over 50 countries

DATA INTEGRITY DESIGN PRINCIPLES NEVER, EVER, TRUST THE USER – SQL INJECTION

//select entered username from users table

SELECT * FROM `users` WHERE `users` .`name` = '".$name."' //prepare select statement with parameters

$sth = $conn->prepare(“SELECT * FROM users WHERE name = :name")

SELECT * FROM `users` WHERE `users` .`name` = ‘Rob’ OR ‘1’=‘1’

//bind the statement parameters to the input variables

$sth->bindParam(':name', $name, PDO::PARAM_STR, 30)

Query with user input Query with prepared statements

Database

1) Prepare (compile) query 2) Add variable parameters

3) Execute query

1) Construct query string

Database Driver

Database

Database Driver

Abstraction Layer

2) Execute query

( PDO) This will return all

rows from the table users, since WHERE 1=1 is always true

24 Secure Coding Essentials

• Prevent that user data can alter your SQL queries Created by Rob Augustinus

Page 25: Secure Coding Essentials - KIVI · Secure Coding Essentials 3 Ports and related services Property and hotels Infrastructure Energy and Telecom Retail 270,000 people in over 50 countries

DATA INTEGRITY DESIGN PRINCIPLES NEVER, EVER, TRUST THE USER -

MALICIOUS FILE UPLOADS AND CODE INJECTIONS

Don’t allow users to upload whatever they want

Disable script execution in upload directories

25 Secure Coding Essentials

Prevent code injection vulnerabilities

Page 26: Secure Coding Essentials - KIVI · Secure Coding Essentials 3 Ports and related services Property and hotels Infrastructure Energy and Telecom Retail 270,000 people in over 50 countries

DATA ACCESS DESIGN PRINCIPLES CONTROL ACCESS TO PROTECTED RESOURCES -

WEB PAGE AUTHORIZATION

Check user authorization for each web page

Use centralized Authorization Routines

26 Secure Coding Essentials

Page 27: Secure Coding Essentials - KIVI · Secure Coding Essentials 3 Ports and related services Property and hotels Infrastructure Energy and Telecom Retail 270,000 people in over 50 countries

DATA ACCESS DESIGN PRINCIPLES CONTROL ACCESS TO PROTECTED RESOURCES -

DATA OBJECT AUTHORIZATION

• Always ensure the data owner is referenced in queries

• Prevent tampering with query parameters

Integrate access control in your SQL queries

Vulnerable SQL query:

Is the user who requests this delete action the owner of this record ?

27 Secure Coding Essentials

Page 28: Secure Coding Essentials - KIVI · Secure Coding Essentials 3 Ports and related services Property and hotels Infrastructure Energy and Telecom Retail 270,000 people in over 50 countries

DATA ACCESS DESIGN PRINCIPLES CONTROL ACCESS TO PROTECTED RESOURCES - SESSION DATA

Tell browsers that client scripts aren’t allowed to access cookies

Prevent theft of (session) cookies by XSS attacks

28 Secure Coding Essentials

Change session ID’s at any transition in authentication state

Prevent that attackers can obtain a valid session identifier (session hijacking)

Prevent that attackers can force users to use known session ID (session fixation) Enforce that always a new session ID is created if a session is requested with a ID that does not exist

Page 29: Secure Coding Essentials - KIVI · Secure Coding Essentials 3 Ports and related services Property and hotels Infrastructure Energy and Telecom Retail 270,000 people in over 50 countries

DATA ACCESS DESIGN PRINCIPLES USER RIGHTS: LESS IS MORE ! - DATABASE PERMISSIONS

29 Secure Coding Essentials

Don’t give application users complete access to your database

Don’t use a single shared database account for your application

Page 30: Secure Coding Essentials - KIVI · Secure Coding Essentials 3 Ports and related services Property and hotels Infrastructure Energy and Telecom Retail 270,000 people in over 50 countries

DATA PROTECTION DESIGN PRINCIPLES KEEP SENSITIVE INFORMATION PRIVATE - WEB FORMS

Use HTTPS and POST for sending sensitive information via web forms

Prevent that usernames and passwords on shared computers get exposed to other users

30 Secure Coding Essentials

Created by Rob Augustinus

Page 31: Secure Coding Essentials - KIVI · Secure Coding Essentials 3 Ports and related services Property and hotels Infrastructure Energy and Telecom Retail 270,000 people in over 50 countries

DATA PROTECTION DESIGN PRINCIPLES KEEP SENSITIVE INFORMATION PRIVATE - SESSION DATA

Encrypt session data between user and application (set session.cookie_secure flag)

31 Secure Coding Essentials

Prevent that session data is being transmitted in plain text (enforce HTTPS for whole site)

Prevent that session data is visible in the URL (enforce that only cookies are used)

Page 32: Secure Coding Essentials - KIVI · Secure Coding Essentials 3 Ports and related services Property and hotels Infrastructure Energy and Telecom Retail 270,000 people in over 50 countries

DATA PROTECTION DESIGN PRINCIPLES KEEP SENSITIVE INFORMATION PRIVATE - CREDENTIALS

32 Secure Coding Essentials

Use a recent salted password hashing algorithm (argon2, bcrypt, scrypt )

Keep database connection strings out of your source code (keep them in a trusted place)

(PASSWORD_DEFAULT for salted bcrypt hash)

Page 33: Secure Coding Essentials - KIVI · Secure Coding Essentials 3 Ports and related services Property and hotels Infrastructure Energy and Telecom Retail 270,000 people in over 50 countries

DATA PROTECTION DESIGN PRINCIPLES DON’T EXPOSE YOURSELF - SENSITIVE CONTENT

Secure Coding Essentials 33

Don’t allow attackers to view sensitive content in your web directories

Prevent attackers to discover admin consoles or pages

Use URL rewriting and routing to prevent access to physical file paths and files

Page 34: Secure Coding Essentials - KIVI · Secure Coding Essentials 3 Ports and related services Property and hotels Infrastructure Energy and Telecom Retail 270,000 people in over 50 countries

DATA PROTECTION DESIGN PRINCIPLES DON’T EXPOSE YOURSELF - WEB APPLICATION FINGERPRINTING

GET https://www.autoplanet.nu -- response -- 200 OK Date: Fri, 28 Oct 2016 15:54:56 GMT Server: Apache/2.4.23 (Fedora) OpenSSL/1.0.2j-fips PHP/5.6.27 X-Powered-By: PHP/5.6.27

GET https://www.autoplanet.nu -- response -- 200 OK Date: Fri, 28 Oct 2016 16:13:38 GMT Server: Apache

Don’t expose valuable information to attackers such as PHP and Web server version

expose_php = Off in php.ini Apache httpd.conf: ServerTokens Product ServerSignature Off

34 Secure Coding Essentials

Don’t put information in HTML or JavaScript comments

Page 35: Secure Coding Essentials - KIVI · Secure Coding Essentials 3 Ports and related services Property and hotels Infrastructure Energy and Telecom Retail 270,000 people in over 50 countries

DON’T EXPOSE YOURSELF INFORMATION EXPOSURE THROUGH ERROR MESSAGES

Fail safe: Error messages reveal sensitive information such as passwords, file paths, etc.

35 Secure Coding Essentials

Page 36: Secure Coding Essentials - KIVI · Secure Coding Essentials 3 Ports and related services Property and hotels Infrastructure Energy and Telecom Retail 270,000 people in over 50 countries

FUNCTIONALITY DESIGN PRINCIPLES EXPECT THE UNEXPECTED - APPLICATION LOGIC ATTACKS

36 Secure Coding Essentials

Avoid being helpful for attackers

Prevent that application logic steps can be bypassed

• Some jokers don’t respect your rules…

Page 37: Secure Coding Essentials - KIVI · Secure Coding Essentials 3 Ports and related services Property and hotels Infrastructure Energy and Telecom Retail 270,000 people in over 50 countries

FUNCTIONALITY DESIGN PRINCIPLES MINIMIZE ATTACK SURFACE - UNNECESSARY FEATURES

37 Secure Coding Essentials

Don’t display search queries back to the user (XSS risks) Don’t use the URL as input for the navigation bar Disable default application settings which you don’t need

Page 38: Secure Coding Essentials - KIVI · Secure Coding Essentials 3 Ports and related services Property and hotels Infrastructure Energy and Telecom Retail 270,000 people in over 50 countries

AGENDA

• Intro – A.S. Watson and Me

• Why this Presentation ?

• Security Architecture

• Secure Code Design Principles

• The Process - Security in the SDLC

• Mission Accomplished ?

Secure Coding Essentials 38

Page 39: Secure Coding Essentials - KIVI · Secure Coding Essentials 3 Ports and related services Property and hotels Infrastructure Energy and Telecom Retail 270,000 people in over 50 countries

SECURITY IN THE SDLC

All bugs definitely fixed?

Debugging

39 Secure Coding Essentials

Page 40: Secure Coding Essentials - KIVI · Secure Coding Essentials 3 Ports and related services Property and hotels Infrastructure Energy and Telecom Retail 270,000 people in over 50 countries

SECURITY TESTING

Secure Coding Essentials 40

One week before launch…

Unit Tests

System Tests

Integration Tests

Acceptance Tests

Automated Security Tests

Short Security Scans

Screenshots Examples

Proposed Fixes

Pen Test

Page 41: Secure Coding Essentials - KIVI · Secure Coding Essentials 3 Ports and related services Property and hotels Infrastructure Energy and Telecom Retail 270,000 people in over 50 countries

INTEGRATING SECURITY IN THE SDLC

Secure Coding Essentials 41

Agile DevOps Automated

Security Testing

ZAP Plugin

Evil User Stories Sec

Page 42: Secure Coding Essentials - KIVI · Secure Coding Essentials 3 Ports and related services Property and hotels Infrastructure Energy and Telecom Retail 270,000 people in over 50 countries

AGENDA

• Intro – A.S. Watson and Me

• Why this Presentation

• Security Architecture

• Secure Code Design Principles

• The Process - Security in the SDLC

• Mission Accomplished ?

Secure Coding Essentials 42

Page 43: Secure Coding Essentials - KIVI · Secure Coding Essentials 3 Ports and related services Property and hotels Infrastructure Energy and Telecom Retail 270,000 people in over 50 countries

upload of car images

include controller Controller

View

Model Helpers

application directory

Include helpers, models

and views

car images css

images

public directory

get css and

images

.htaccess

index.php Rewrites all requests to index.php

AUTOPLANET – A SECURE WEB APPLICATION ?

https://home-url/controller?param1=value1&param2=value2...

43 Secure Coding Essentials

Page 44: Secure Coding Essentials - KIVI · Secure Coding Essentials 3 Ports and related services Property and hotels Infrastructure Energy and Telecom Retail 270,000 people in over 50 countries

APPSCAN TEST RESULTS

Secure Coding Essentials 44

Page 45: Secure Coding Essentials - KIVI · Secure Coding Essentials 3 Ports and related services Property and hotels Infrastructure Energy and Telecom Retail 270,000 people in over 50 countries

45 Secure Coding Essentials

DOM based XSS attacks

Cross Site Request Forgery Secure HTTP response headers

Data encryption

SE Linux

Brute Force Attacks

Flash parameter ScriptAccess

Apache user Chroot

iFrame injection Password recovery attacks

HTTP Parameter pollution Insufficient Entropy

Session expiration

X-Path injection

Third party includes/Plugins

Default passwords

Security logging & auditing

Oversized POST requests

Slow HTTP attacks

HTTP Response Splitting

Clickjacking

XML external entity attacks

Rename uploaded files

Email injection

HTTP parameter pollution

Http redirect security bypass TRACE method is enabled

TRACK method is enabled

Vulnerable Javascript library

Blind XSS

Javascript eval() usage

Access-Control-Allow-Origin

Page 46: Secure Coding Essentials - KIVI · Secure Coding Essentials 3 Ports and related services Property and hotels Infrastructure Energy and Telecom Retail 270,000 people in over 50 countries

Secure Coding Essenrials 46

Secure Server

Hardening Patches & Updates

THE WHOLE PICTURE

Created by Rob Augustinus

Created by Rob Augustinus

Created by Rob Augustinus

Design Process Architecture

Clean Code

Secure Code

Data Protection Data Access

Data Integrity Functionality

Security Safety Net

WAF IPS CDN

Page 47: Secure Coding Essentials - KIVI · Secure Coding Essentials 3 Ports and related services Property and hotels Infrastructure Energy and Telecom Retail 270,000 people in over 50 countries

47 Secure Coding Essentials

MISSION ACCOMPLISHED OR…..

Can we build with secure coding a

Trump wall to keep out the hackers ?

Can we do much better than the millions of

poorly secured websites on the Internet ?

Page 48: Secure Coding Essentials - KIVI · Secure Coding Essentials 3 Ports and related services Property and hotels Infrastructure Energy and Telecom Retail 270,000 people in over 50 countries

Secure Coding Essentials 48

[email protected]

Page 49: Secure Coding Essentials - KIVI · Secure Coding Essentials 3 Ports and related services Property and hotels Infrastructure Energy and Telecom Retail 270,000 people in over 50 countries

CONTROLLER STRUCTURE (SEARCH FORM)

Secure Coding Essentials 49

Validate & sanitize form input

Search car in database (data model)

Display search results (page view)

Display menu (page header view)

Authorization check (page access)

Load includes (views, model, helpers)

Initialize form (based on submit status)

Page 50: Secure Coding Essentials - KIVI · Secure Coding Essentials 3 Ports and related services Property and hotels Infrastructure Energy and Telecom Retail 270,000 people in over 50 countries

DATA INTEGRITY SECURITY TESTING

50 Secure Coding Essentials

How does the application respond to unexpected input ? • Test input such as special characters and SQL queries, try parameter tampering • How does the input appear in the returned HTML ? (dangerous characters not removed /encoded) • Can SQL queries as input cause (SQL) error messages or stack traces ?

What can you upload and do with it ? • Test uploading of files with unexpected extension, type, content, size, etc.

Can uploaded HTML or scripts be executed ?

Page 51: Secure Coding Essentials - KIVI · Secure Coding Essentials 3 Ports and related services Property and hotels Infrastructure Energy and Telecom Retail 270,000 people in over 50 countries

DATA ACCESS SECURITY TESTING

51 Secure Coding Essentials

Unauthorized access to protected resources • Try to access to webpages or data which you shouldn’t be able to access • Try if session cookies are protected (cookie HttpOnly flag), are they visible in URL or (hidden) parameters? • Test for directories and/or files which shouldn’t be visible (use fuzzer tool to discover)

User rights • Review database permissions for application users • Do they use the lowest possible level of permissions ?

Page 52: Secure Coding Essentials - KIVI · Secure Coding Essentials 3 Ports and related services Property and hotels Infrastructure Energy and Telecom Retail 270,000 people in over 50 countries

DATA PROTECTION SECURITY TESTING

52 Secure Coding Essentials

Information exposure • Check server response for webserver version and other information (Wappalyzer) • Force stack trace errors (e.g. stop database) and check if sensitive information is exposed • Check source code for hard coded credentials

Is sensitive information well protected ? • Check if forms with sensitive data can’t be sent via GET and/or HTTP • Check for autocomplete on form fields with sensitive data • Check session.cookie_secure flag and what happens if cookies are denied ?

Page 53: Secure Coding Essentials - KIVI · Secure Coding Essentials 3 Ports and related services Property and hotels Infrastructure Energy and Telecom Retail 270,000 people in over 50 countries

FUNCTIONALITY SECURITY TESTING EVIL USER STORIES

Secure Coding Essentials 53

Be creative: What data, steps, parameters, etc. can be tampered with ? • Try to resubmit email reply forms an unlimited number of times • Intercept POST requests and remove or change parameters before submitting • See what happens if you enter negative amounts or item numbers • Change your token or account nr to another number to see what will happen

Form can be resubmitted with removed captcha