39
ANTISAMY JAVA INTRODUCTION Wang Wenjun June 2011

A NTI S AMY J AVA I NTRODUCTION Wang Wenjun June 2011

Embed Size (px)

Citation preview

Page 1: A NTI S AMY J AVA I NTRODUCTION Wang Wenjun June 2011

ANTISAMY JAVA INTRODUCTION

Wang WenjunJune 2011

Page 2: A NTI S AMY J AVA I NTRODUCTION Wang Wenjun June 2011

Who am I?

Name Wang Wenjun(王文君 )

EMail [email protected]

Job HP Shanghai Engineering Lab

Side Job Roger Federer’s hot fan

Quote 博观而约取,厚积而薄发

Page 3: A NTI S AMY J AVA I NTRODUCTION Wang Wenjun June 2011

Agenda

• Story of Samy

• How AntiSamy works?

• Case study

• Advanced topic

Page 4: A NTI S AMY J AVA I NTRODUCTION Wang Wenjun June 2011

Part 1 Story of Samy

Page 5: A NTI S AMY J AVA I NTRODUCTION Wang Wenjun June 2011

Story of Samy

• Myspace is a social networking site(SNS), and you can setup your own profile.

• Samy made one XSS-Worm in his own profile, which made his reader as the new XSS-worm source.

Page 6: A NTI S AMY J AVA I NTRODUCTION Wang Wenjun June 2011

Attack theory of Samy Worm

Samy’s profile

friend1 profile

friend2 profile

friend2 profile

friend1 profile

friend2 profile

Page 7: A NTI S AMY J AVA I NTRODUCTION Wang Wenjun June 2011

Why MySpace is wrong?

It uses a black word list, but you can’t foresee all the possible attack ways.

Page 8: A NTI S AMY J AVA I NTRODUCTION Wang Wenjun June 2011

User needs to input HTML code?

SNS needs to provide a

customized profile

Rich editor to some enterprise

application

Community site like ebay allow

public list

Yes, the need HTML

Page 9: A NTI S AMY J AVA I NTRODUCTION Wang Wenjun June 2011

It is your turn, AntiSamy!

Page 10: A NTI S AMY J AVA I NTRODUCTION Wang Wenjun June 2011

Part 2How AntiSamy work

Page 11: A NTI S AMY J AVA I NTRODUCTION Wang Wenjun June 2011

AntiSamy introduction

• An HTML input validation API• It uses a white word list(defined in policy file)

Dirty input

Policy file

Clean output

Page 12: A NTI S AMY J AVA I NTRODUCTION Wang Wenjun June 2011

Dive to AntiSamy (1) - Sanitize

body

div b

u

a

p

imgsrc=javascript:xss()

style=expression(…)

samy is my hero

id=foo

<body><div id="foo"><img src="javascript:xss()"></div><b><u><p style="expression(…) ">samy is my hero</p></u></b><a href="http://www.google.com">Google</a><script src="hax.js"></script>

(text)

script href=… src=hax.js

Google

(text)

Page 13: A NTI S AMY J AVA I NTRODUCTION Wang Wenjun June 2011

Dive to AntiSamy (2) - validate

Tag • <tag-rules>

Attribute• <common-

attributes>• <global-tag-

attributes>

Expression • <common-regexps>

Page 14: A NTI S AMY J AVA I NTRODUCTION Wang Wenjun June 2011

Dive to AntiSamy (3) - configuration

Page 15: A NTI S AMY J AVA I NTRODUCTION Wang Wenjun June 2011

Dive to AntiSamy (4) - result

<div> </div> <b> <p> samy is my hero</p> </b> <a href="http://www.google.com"> Google</a>

Page 16: A NTI S AMY J AVA I NTRODUCTION Wang Wenjun June 2011

How can I start?

Definition

• Think which tags and attributes you need• Define the regular expression to the allowed values

Configurati

on

• Find the similar policy file sample• Modify it to meet your requirement

Coding

• Very easy, refer to the next page

Page 17: A NTI S AMY J AVA I NTRODUCTION Wang Wenjun June 2011

Very easy to code

Page 18: A NTI S AMY J AVA I NTRODUCTION Wang Wenjun June 2011

Part 3Case study

Page 19: A NTI S AMY J AVA I NTRODUCTION Wang Wenjun June 2011

Case 1 – show html content

NO AntiSamy

Page 20: A NTI S AMY J AVA I NTRODUCTION Wang Wenjun June 2011

With AntiSamy,remove script

Page 21: A NTI S AMY J AVA I NTRODUCTION Wang Wenjun June 2011

With AntiSamy,Remove link

Page 22: A NTI S AMY J AVA I NTRODUCTION Wang Wenjun June 2011

Case 2 – prevent CSRF

3

2

Attacker sets the trap on some website on the internet(or simply via an e-mail)1

While logged into vulnerable site,victim views attacker site

Vulnerable site sees legitimate request from victim and performs the action requested

<img> tag loaded by browser – sends GET request (including credentials) to vulnerable site

Custom Code

Acco

unts

Fina

nce

Adm

inis

trati

onTr

ansa

ction

s

Com

mun

icati

onKn

owle

dge

Mgm

tE-

Com

mer

ceBu

s. F

uncti

ons

Hidden <img> tag contains attack against vulnerable site

Application with CSRF vulnerability

Page 23: A NTI S AMY J AVA I NTRODUCTION Wang Wenjun June 2011

• Add a token to each protected resource(url) as a hidden parameter

• Can leverage ESAPI

General solution

• Define the attribute value expression to href

• As a result, all the offsite url will be removed.

AntiSamy

Page 24: A NTI S AMY J AVA I NTRODUCTION Wang Wenjun June 2011

Remove offsite URL

Page 25: A NTI S AMY J AVA I NTRODUCTION Wang Wenjun June 2011

Case 3 – Rich editor

Usability VS SecurityWe want to improve the usability to satisfy customer

We have to guarantee the application security

Page 26: A NTI S AMY J AVA I NTRODUCTION Wang Wenjun June 2011

Directly output user’s input

Page 27: A NTI S AMY J AVA I NTRODUCTION Wang Wenjun June 2011

Use policy to filter the input

Page 28: A NTI S AMY J AVA I NTRODUCTION Wang Wenjun June 2011

Policy file content

Page 29: A NTI S AMY J AVA I NTRODUCTION Wang Wenjun June 2011

Part 4Advanced topic

Page 30: A NTI S AMY J AVA I NTRODUCTION Wang Wenjun June 2011

Topic 1 – XSS prevention

Modify / Keep / Break

AntiSamy ESAPI Stinger

Page 31: A NTI S AMY J AVA I NTRODUCTION Wang Wenjun June 2011

• Use whitelist to get clean output• Remove some words to handle XSSAntiSamy

• A set of security control acess• Use encode to handle XSSESAPI

• Use blacklist to validate the input• Break one rule, break the chainStinger

Page 32: A NTI S AMY J AVA I NTRODUCTION Wang Wenjun June 2011

ESAPI encode

Use ESAPI to encode the input

Page 33: A NTI S AMY J AVA I NTRODUCTION Wang Wenjun June 2011

Java code and html code

Page 34: A NTI S AMY J AVA I NTRODUCTION Wang Wenjun June 2011

Stinger

Page 35: A NTI S AMY J AVA I NTRODUCTION Wang Wenjun June 2011

Topic 2 - Scrubb

Database scanning tool

Focus on stored XSS

BSD license

Page 36: A NTI S AMY J AVA I NTRODUCTION Wang Wenjun June 2011
Page 37: A NTI S AMY J AVA I NTRODUCTION Wang Wenjun June 2011

Summary

AntiSamy is used to get a clean HTML• Policy file

Typical use case for AntiSamy• Display the HTML file• Security to rich editor• CSRF

Handle XSS • AntiSamy• ESAPI encode• Stinger

Page 38: A NTI S AMY J AVA I NTRODUCTION Wang Wenjun June 2011

Resources• OWASP China AntiSamy Java http://www.owasp.org.cn/owasp-project/Projects/OWASP_AntiSamy_Java

• OWASP AntiSamy Javahttp://www.owasp.org/index.php/Category:OWASP_AntiSamy_Project

• AntiSamy smoke test site http://antisamysmoketest.com/go/attack

• ESAPI https://www.owasp.org/index.php/Esapi

• XSS Cheat sheethttp://ha.ckers.org/xss.html

Page 39: A NTI S AMY J AVA I NTRODUCTION Wang Wenjun June 2011

QUESTIONS?