SlideShare a Scribd company logo
SECURITY ENGINEER
AJIN ABRAHAM
INJECTING SECURITY INTO
WEB APPS WITH RUNTIME
PATCHING
AND CONTEXT LEARNING
▸ Security Engineering @
▸ Research on Runtime Application Self Defence
▸ Authored MobSF, Xenotix and NodeJSScan
▸ Teach Security: https://opsecx.com
▸ Blog: http://opensecurity.in
#WHOAMI
AGENDA : WHAT THE TALK IS ABOUT?
RASP
WAF
WHAT THE TALK IS NOT ABOUT?
APPSEC CHALLENGES
▸ Writing Secure Code is not Easy
▸ Most follows agile development strategies
▸ Frequent releases and builds
▸ Any release can introduce or reintroduce vulnerabilities
▸ Problems by design. 

Ex: Session Hijacking, Credential Stuffing
STATE OF WEB FRAMEWORK SECURITY
▸ Automatic CSRF Token - Anti CSRF
▸ Templates escapes User Input - No XSS
▸ Uses ORM - No SQLi
You need to use secure APIs or write Code to 

enable some of these
Security Bugs happens when people write bad code.
STATE OF WEB FRAMEWORK SECURITY
▸ Anti CSRF - Can easily be turned off/miss configurations
▸ Templates escapes User Input - Just HTML Escape -> XSS
▸ https://jsfiddle.net/1c4f271c/
▸ Uses ORM - SQLi is still possible
▸ http://rails-sqli.org/
STATE OF WEB FRAMEWORK SECURITY
▸ Remote OS Command Execution - No
▸ Remote Code Injection - No
▸ Server Side Template Injection RCE - No
▸ Session Hijacking - No
▸ Verb Tampering - No
▸ File Upload Restriction - No
The list goes on…..
WE NEED TO PREVENT EXPLOITATION
LET’S USE WAF
▸ First WAF AppShield in 1999, almost 18 years of existence
▸ Quick question : How many of you run a WAF in defence/
protection mode?
▸ Most organisations use them, but in monitor mode due

high rate false positives.
▸ Most WAFs use BLACKLISTS
CAN A WAF SOLVE THIS?
20%
70%
10%
False Negatives False Positive Detection
APPLICATION SECURITY RULE OF THUMB
Gets bypassed, today or tomorrow
WHAT WAF SEES?
ATTACK != VULNERABILITY
HOW WAF WORKS
▸ The strength of WAF is the blacklist
▸ They detect Attacks not Vulnerability
▸ WAF has no application context
▸ Doesn’t know if a vulnerability got exploited inside

the app server or not.
WAFGET http://xyz.com APP SERVER
HTTP REQUEST
HTTP RESPONSE
▸ How long they keep on building the black lists?
▸ WAFs used to downgrade your security.
▸ No Perfect Forward Secrecy
▸ Can’t Support elliptic curves like ECDHE
▸ Some started to support with a Reverse Proxy
▸ Organisations are moving to PFS (Heartbleed bug)
▸ SSL Decryption and Re-encryption Overhead
WAF PROBLEMS
TLS 1.3 COMING SOON ….
SO WHAT’S THE IDEAL PLACE FOR SECURITY?
REQUEST
RESPONSE APP SERVER
APP SERVER CORE
SECURITY LAYER
We can do much better.

It’s time to evolve
WAF - > SAST -> DAST -> IAST -> RASP
Attack Detection 

&

Prevention/Neutralization

+

Precise 

Vulnerability Detection

+

Extras
Attack Detection 

&

Prevention
Vulnerability Detection
Precise 

Vulnerability Detection
RUNTIME APPLICATION SELF DEFENCE
▸ Detect both Attacks and Vulnerability
▸ Zero Code Modification and Easy Integration
▸ No Hardware Requirements
▸ Apply defence inside the application
▸ Have Code Level insights
▸ Fewer False positives
▸ Inject Security at Runtime
▸ No use of Blacklists
TYPES OF RASP
▸ Pattern Matching with Blacklist - Old wine in new
bottle (Fancy WAF)
▸ Dynamic Tainting - Good but Performance over head
▸ Virtualisation and Compartmentalisation - Good, but
Less Precise, Container oriented and not application
oriented, Platform Specific (JVM)
▸ Code Instrumentation and Dynamic Whitelist - Good,
but specific to Frameworks, Developer deployed
FOCUS OF RESEARCH
▸ Other AppSec Challenges
▸ Preventing Verb Tampering
▸ Preventing Header Injection
▸ File Upload Protection
▸ Ongoing Research
▸ Preventing Session Hijacking
▸ Preventing Layer 7 DDoS
▸ Credential Stuffing
▸ RASP by API Instrumentation

and Dynamic Whitelist
▸ Securing a vulnerable Python 

Tornado app with Zero Code change.
▸ Code Injection Vulnerabilities
▸ Preventing SQLi
▸ Preventing RCE
▸ Preventing Stored & Reflected XSS
▸ Preventing DOM XSS
RASP BY API INSTRUMENTATION AND DYNAMIC WHITELIST
▸ MONKEY PATCHING
▸ LEXICAL ANALYSIS
▸ CONTEXT DETERMINATION
MONKEY PATCHING
▸ Also know as Runtime Hooking and Patching of functions/
methods.
▸ https://jsfiddle.net/h1gves49/2/
LEXICAL ANALYSIS AND TOKEN GENERATION
▸ A lexical analyzer breaks these syntaxes into a series of
tokens, by removing any whitespace or comments in the
source code.
▸ Lexical analyzer generates error if it sees an invalid token.
LEXICAL ANALYSIS AND TOKEN GENERATION
SYNTAX TOKEN
int KEYWORD
value IDENTIFIER
= OPERATOR
100 CONSTANT
; SYMBOL
INPUT: int value = 100;//value is 100
Normal Lexer
SYNTAX TOKEN
int KEYWORD
WHITESPACE
value IDENTIFIER
WHITESPACE
= OPERATOR
WHITESPACE
100 CONSTANT
; SYMBOL
//value is 100 COMMENT
Custom Lexer
CONTEXT DETERMINATION
HTML PARSER
HTML CODE
DOM TREE
PREVENTING CODE INJECTION VULNERABILITIES
Interpreter cannot distinguish between 

Code and Data
Solve that and you solve the code injection problems
PREVENTING CODE INJECTION VULNERABILITIES
▸ Preventing SQL Injection
▸ Preventing Remote OS Command Execution
▸ Preventing Stored & Reflected Cross Site Scripting
▸ Preventing DOM XSS
SQL INJECTION
SELECT * FROM <user_input>
SQL INJECTION : HOOK
SQL Execution API

cursor.execute(‘SELECT * FROM logs‘)
SQL INJECTION : LEARN
SELECT * FROM logs
SYNTAX TOKEN
SELECT KEYWORD
WHITESPACE
* OPERATOR
WHITESPACE
FROM KEYWORD
WHITESPACE
logs STRING
SQL INJECTION : PROTECT
SYNTAX TOKEN
SELECT KEYWORD
WHITESPACE
* OPERATOR
WHITESPACE
FROM KEYWORD
WHITESPACE
logs STRING
WHITESPACE
AND KEYWORD
WHITESPACE
DROP KEYWORD
WHITESPACE
TABLE KEYWORD
WHITESPACE
admin STRING
SELECT * FROM logs AND DROP TABLE admin
SQL INJECTION : PROTECT
KEYWORD WHITESPACE OPERATOR WHITESPACE KEYWORD WHITESPACE STRING
Rule for Context: SELECT * FROM <user_input>
SELECT * FROM logs
SELECT * FROM history
SELECT * FROM logs AND DROP TABLE admin
KEYWORD WHITESPACE OPERATOR WHITESPACE KEYWORD WHITESPACE STRING 

WHITESPACE KEYWORD WHITESPACE KEYWORD WHITESPACE KEYWORD WHITESPACE STRING
DEMO
REMOTE OS COMMAND INJECTION
ping -c 3 <user input>
REMOTE OS COMMAND INJECTION : HOOK
Command Execution API

os.system(ping -c 3 127.0.0.1)
REMOTE OS COMMAND INJECTION : LEARN
ping -c 3 127.0.0.1
SYNTAX TOKEN
ping EXECUTABLE
WHITESPACE
-c ARGUMENT_DASH
WHITESPACE
3 NUMBER
WHITESPACE
127.0.0.1 IP_OR_DOMAIN
REMOTE OS COMMAND INJECTION : PROTECT
ping -c 3 127.0.0.1 & cat /etc/passwd
SYNTAX TOKEN
ping EXECUTABLE
WHITESPACE
-c ARGUMENT_DASH
WHITESPACE
3 NUMBER
WHITESPACE
127.0.0.1 IP_OR_DOMAIN
WHITESPACE
& SPLITTER
WHITESPACE
cat EXECUTABLE
WHITESPACE
/etc/passwd UNIX_PATH
REMOTE OS COMMAND INJECTION : PROTECT
EXECUTABLE WHITESPACE ARGUMENT_DASH WHITESPACE NUMBER WHITESPACE IP_OR_DOMAIN
Rule for Context: ping -c 3 <user_input>
ping -c 3 127.0.0.1

ping -c 3 google.com
ping -c 3 127.0.0.1 & cat /etc/passwd 

EXECUTABLE WHITESPACE ARGUMENT_DASH WHITESPACE NUMBER WHITESPACE IP_OR_DOMAIN

WHITESPACE SPLITTER WHITESPACE EXECUTABLE WHITESPACE UNIX_PATH
DEMO
CROSS SITE SCRIPTING
<body><h1>hello {{user_input1}} </h1></body>

<script> var x=‘{{user_input2}}’;</script>
CROSS SITE SCRIPTING : HOOK
Template Rendering API



template.render(“<body><h1>hello {{user_input1}}

</h1></body><script> var x=‘{{user_input2}}’;

</script>“, user_input1, user_input2)
CROSS SITE SCRIPTING : CONTEXT DETERMINATION
Parsing the DOM Tree
<body><h1>hello {{user_input1}}

</h1></body><script> var x=‘{{user_input2}}’;

</script>
HTML_CONTEXT
JAVASCRIPT_VALUE_CONTEXT
CROSS SITE SCRIPTING : PROTECT
<body><h1>hello {{user_input1}} </h1></body>

<script> var x=‘{{user_input2}}’;</script>
<body><h1>hello World </h1></body>

<script> var x=‘Hello World’;</script>
user_input1 = “World”

user_input2 = “Hello World”
CROSS SITE SCRIPTING : PROTECT
<body><h1>hello &lt;script&gt;alert(0)&lt;/
script&gt; </h1></body>

<script> var x=‘';alert(0);//x3C/scriptx3E’;</
script>
user_input1 = “<script>alert(0)</script>”

user_input2 = “‘;alert(0);//</script>”
DEMO
PREVENTING DOM XSS
https://jsfiddle.net/vno23woL/3/
▸ Inject Security into JavaScript Frameworks
▸ Common JavaScript Frameworks - jQuery, AngularJS, MustacheJS etc…
▸ DOMPurify - https://github.com/cure53/DOMPurify
▸ jPurify - https://github.com/cure53/jPurify
OTHER APPSEC CHALLENGES
▸ Preventing Verb Tampering
▸ Preventing Header Injection
▸ File Upload Protection
▸ Preventing Path Traversal
▸ WAFs blindly blocks TRACE and OPTION Request
▸ Hook HTTP Request API
▸ Learn the HTTP Verbs and Generate Whitelist
▸ Block if not in the list
PREVENTING VERB TAMPERING
DEMO
PREVENTING HEADER INJECTION
▸ Unlike WAF we don’t have to keep a blacklist 

of every possible encoded combination of 

“%0a” and “%0d”
▸ Hook HTTP Request API
▸ Look for “%0a,%0d“ in HTTP Request Headers
▸ Block if Present
DEMO
FILE UPLOAD PROTECTION
▸ Classic File Upload Bypass

image.jpg.php, image.php3 etc.
▸ Hook File/IO API : 

io.open(“/tmp/nice.jpg”, 'wb')
▸ Learn file extensions to create a whitelist.
▸ Block any unknown file extensions

io.open(“/tmp/nice.py”, 'wb')
DEMO
PREVENTING PATH TRAVERSAL
▸ WAF Looks for
PREVENTING PATH TRAVERSAL
▸ Hook File/IO API:

io.open(“/read_dir/index.txt”, ‘rb')
▸ Learn directories and file extensions
▸ Block any unknown directories and file extensions

io.open(“/read_dir/../../etc/passwd”, 'rb')
DEMO
ON GOING RESEARCH
▸ Preventing Session Hijacking
▸ Preventing Layer 7 DDoS
▸ Credential Stuffing
THE RASP ADVANTAGES
▸ Accurate and Precise in Vulnerability Detection & Prevention
▸ Code Level Insight (Line no, Stack trace)
▸ Not based on Heuristics - Zero/Negligible False Positives
▸ No SSL Decryption and Re-encryption overhead
▸ Doesn’t Downgrade your Security
▸ Preemptive security - Zero Day protection
▸ Zero Code Change and easy integration



pip install rasp_module

import rasp_module
BIGGEST ADVANTAGE
Now you can deploy it on protection mode
CHARACTERISTICS OF AN IDEAL RASP
▸ Ideal RASP should have minimal Performance impact
▸ Should not introduce vulnerabilities
▸ Must not consume PII of users
▸ Should not learn the bad stuff
▸ Should be a “real RASP” not a fancy WAF with Blacklist.
▸ Minimal Configuration and Easy deployment
THAT’S ALL FOLKS!
▸ Thanks to
▸ Zaid Al Hamami, Mike Milner, Steve
Williams, Oliver Lavery

(Team IMMUNIO inc).
▸ Kamaiah, Francis, Bharadwaj,
Surendar, Sinu, Vivek 

(Team Yodlee Security Office - YSO)
▸ Due Credits
▸ Graphics/Image Owners
@ajinabraham
ajin25@gmail.com

More Related Content

What's hot (20)

PDF
SAST vs. DAST: What’s the Best Method For Application Security Testing?
Cigital
 
PPTX
Cyber security
Sabir Raja
 
PPTX
Metasploit
henelpj
 
PDF
Data Driven Testing
Maveryx
 
PPTX
Vulnerabilities in modern web applications
Niyas Nazar
 
PPTX
trojan horse- malware(virus)
NamanKikani
 
PPT
Introduction to Web Application Penetration Testing
Anurag Srivastava
 
PPTX
Cyber Kill Chain.pptx
Vivek Chauhan
 
PPTX
What is security testing and why it is so important?
ONE BCG
 
PPTX
Introduction to path traversal attack
Prashant Hegde
 
PPTX
Trojans and backdoors
Gaurav Dalvi
 
PPTX
Rest API Security
Stormpath
 
PPTX
VAPT - Vulnerability Assessment & Penetration Testing
Netpluz Asia Pte Ltd
 
PPTX
Selenium IDE Tutorial For Beginners | Selenium IDE Tutorial | What Is Seleniu...
Simplilearn
 
PPTX
Operating System Security
Ramesh Upadhaya
 
PPTX
Xss attack
Manjushree Mashal
 
PPTX
Pen Testing Explained
Rand W. Hirt
 
PDF
Beyond the mcse red teaming active directory
Priyanka Aash
 
PPTX
Introduction To Exploitation & Metasploit
Raghav Bisht
 
PDF
Client-Side Performance Testing
Anand Bagmar
 
SAST vs. DAST: What’s the Best Method For Application Security Testing?
Cigital
 
Cyber security
Sabir Raja
 
Metasploit
henelpj
 
Data Driven Testing
Maveryx
 
Vulnerabilities in modern web applications
Niyas Nazar
 
trojan horse- malware(virus)
NamanKikani
 
Introduction to Web Application Penetration Testing
Anurag Srivastava
 
Cyber Kill Chain.pptx
Vivek Chauhan
 
What is security testing and why it is so important?
ONE BCG
 
Introduction to path traversal attack
Prashant Hegde
 
Trojans and backdoors
Gaurav Dalvi
 
Rest API Security
Stormpath
 
VAPT - Vulnerability Assessment & Penetration Testing
Netpluz Asia Pte Ltd
 
Selenium IDE Tutorial For Beginners | Selenium IDE Tutorial | What Is Seleniu...
Simplilearn
 
Operating System Security
Ramesh Upadhaya
 
Xss attack
Manjushree Mashal
 
Pen Testing Explained
Rand W. Hirt
 
Beyond the mcse red teaming active directory
Priyanka Aash
 
Introduction To Exploitation & Metasploit
Raghav Bisht
 
Client-Side Performance Testing
Anand Bagmar
 

Viewers also liked (20)

PDF
AntiVirus Evasion Reconstructed - Veil 3.0
CTruncer
 
PPTX
Invoke-Obfuscation nullcon 2017
Daniel Bohannon
 
PPTX
AppSec EU 2016: Automated Mobile Application Security Assessment with MobSF
Ajin Abraham
 
PPTX
Automated Security Analysis of Android & iOS Applications with Mobile Securit...
Ajin Abraham
 
PPTX
G4H Webcast: Automated Security Analysis of Mobile Applications with Mobile S...
Ajin Abraham
 
PDF
Design in Tech Report 2017
John Maeda
 
PPTX
Hacking Samsung's Tizen: The OS of Everything - Hack In the Box 2015
Ajin Abraham
 
PPTX
Abusing Google Apps and Data API: Google is My Command and Control Center
Ajin Abraham
 
PDF
TEDx Manchester: AI & The Future of Work
Volker Hirsch
 
PDF
はじめての vSRX on AWS
Juniper Networks (日本)
 
PDF
Indice de bienveillance des marques - Agence Change 2017 présentation
Amelle Nebia
 
PDF
WAI-ARIAの考え方と使い方を整理しよう
Nozomi Sawada
 
PDF
Advanced search and Top-k queries in Cassandra - Cassandra Summit Europe 2014
Andrés de la Peña
 
PDF
The Power of the Log
Ben Stopford
 
PDF
Workshop: Docker on Elastic Beanstalk
輝 子安
 
PDF
Xenotix XSS Exploit Framework: Clubhack 2012
Ajin Abraham
 
PDF
10 Must-Know Commercial Real Estate Terms
REoptimizer®
 
PDF
OWASP Xenotix XSS Exploit Framework v3 : Nullcon Goa 2013
Ajin Abraham
 
PPTX
Top 5 Deep Learning and AI Stories 3/9
NVIDIA
 
PDF
Hacking Tizen: The OS of everything - Whitepaper
Ajin Abraham
 
AntiVirus Evasion Reconstructed - Veil 3.0
CTruncer
 
Invoke-Obfuscation nullcon 2017
Daniel Bohannon
 
AppSec EU 2016: Automated Mobile Application Security Assessment with MobSF
Ajin Abraham
 
Automated Security Analysis of Android & iOS Applications with Mobile Securit...
Ajin Abraham
 
G4H Webcast: Automated Security Analysis of Mobile Applications with Mobile S...
Ajin Abraham
 
Design in Tech Report 2017
John Maeda
 
Hacking Samsung's Tizen: The OS of Everything - Hack In the Box 2015
Ajin Abraham
 
Abusing Google Apps and Data API: Google is My Command and Control Center
Ajin Abraham
 
TEDx Manchester: AI & The Future of Work
Volker Hirsch
 
はじめての vSRX on AWS
Juniper Networks (日本)
 
Indice de bienveillance des marques - Agence Change 2017 présentation
Amelle Nebia
 
WAI-ARIAの考え方と使い方を整理しよう
Nozomi Sawada
 
Advanced search and Top-k queries in Cassandra - Cassandra Summit Europe 2014
Andrés de la Peña
 
The Power of the Log
Ben Stopford
 
Workshop: Docker on Elastic Beanstalk
輝 子安
 
Xenotix XSS Exploit Framework: Clubhack 2012
Ajin Abraham
 
10 Must-Know Commercial Real Estate Terms
REoptimizer®
 
OWASP Xenotix XSS Exploit Framework v3 : Nullcon Goa 2013
Ajin Abraham
 
Top 5 Deep Learning and AI Stories 3/9
NVIDIA
 
Hacking Tizen: The OS of everything - Whitepaper
Ajin Abraham
 
Ad

Similar to Injecting Security into vulnerable web apps at Runtime (20)

PDF
Внедрение безопасности в веб-приложениях в среде выполнения
Positive Hack Days
 
PDF
Technical Architecture of RASP Technology
Priyanka Aash
 
PDF
Is your python application secure? - PyCon Canada - 2015-11-07
Frédéric Harper
 
PPTX
PyCon Canada 2015 - Is your python application secure
IMMUNIO
 
PPTX
20160211 OWASP Charlotte RASP
chadtindel
 
PDF
4 andrii kudiurov - web application security 101
Ievgenii Katsan
 
PPTX
Going outside the application
Matthew Saltzman
 
PDF
CNIT 129S: 10: Attacking Back-End Components
Sam Bowne
 
PPTX
20160225 OWASP Atlanta Prevoty RASP
chadtindel
 
PDF
Modern Web Security, Lazy but Mindful Like a Fox
C4Media
 
PDF
Making Web Development "Secure By Default"
Duo Security
 
PDF
Owasp top 10 2013
Edouard de Lansalut
 
PPT
2009: Securing Applications With Web Application Firewalls and Vulnerability ...
Neil Matatall
 
PPTX
Recent Trends in Cyber Security
Ayoma Wijethunga
 
PDF
Ch 10: Attacking Back-End Components
Sam Bowne
 
PDF
Ch 13: Attacking Other Users: Other Techniques (Part 1)
Sam Bowne
 
PDF
ANOTHER BRICK OFF THE WALL: DECONSTRUCTING WEB APPLICATION FIREWALLS USING AU...
Ioannis Stais
 
DOCX
supraja technologies material for secure coding
Sri Latha
 
PPTX
State of the information security nation
SensePost
 
PDF
Beyond OWASP Top 10 - Hack In Paris 2017
Aaron Hnatiw
 
Внедрение безопасности в веб-приложениях в среде выполнения
Positive Hack Days
 
Technical Architecture of RASP Technology
Priyanka Aash
 
Is your python application secure? - PyCon Canada - 2015-11-07
Frédéric Harper
 
PyCon Canada 2015 - Is your python application secure
IMMUNIO
 
20160211 OWASP Charlotte RASP
chadtindel
 
4 andrii kudiurov - web application security 101
Ievgenii Katsan
 
Going outside the application
Matthew Saltzman
 
CNIT 129S: 10: Attacking Back-End Components
Sam Bowne
 
20160225 OWASP Atlanta Prevoty RASP
chadtindel
 
Modern Web Security, Lazy but Mindful Like a Fox
C4Media
 
Making Web Development "Secure By Default"
Duo Security
 
Owasp top 10 2013
Edouard de Lansalut
 
2009: Securing Applications With Web Application Firewalls and Vulnerability ...
Neil Matatall
 
Recent Trends in Cyber Security
Ayoma Wijethunga
 
Ch 10: Attacking Back-End Components
Sam Bowne
 
Ch 13: Attacking Other Users: Other Techniques (Part 1)
Sam Bowne
 
ANOTHER BRICK OFF THE WALL: DECONSTRUCTING WEB APPLICATION FIREWALLS USING AU...
Ioannis Stais
 
supraja technologies material for secure coding
Sri Latha
 
State of the information security nation
SensePost
 
Beyond OWASP Top 10 - Hack In Paris 2017
Aaron Hnatiw
 
Ad

More from Ajin Abraham (16)

PDF
AppSec PNW: Android and iOS Application Security with MobSF
Ajin Abraham
 
PDF
Injecting Security into Web apps at Runtime Whitepaper
Ajin Abraham
 
PPTX
Hacking Tizen : The OS of Everything - Nullcon Goa 2015
Ajin Abraham
 
PPTX
Abusing Exploiting and Pwning with Firefox Addons
Ajin Abraham
 
PPTX
Exploit Research and Development Megaprimer: DEP Bypassing with ROP Chains
Ajin Abraham
 
PPTX
Exploit Research and Development Megaprimer: Win32 Egghunter
Ajin Abraham
 
PPTX
Exploit Research and Development Megaprimer: mona.py, Exploit Writer's Swiss ...
Ajin Abraham
 
PPTX
Exploit Research and Development Megaprimer: Unicode Based Exploit Development
Ajin Abraham
 
PPTX
Exploit Research and Development Megaprimer: Buffer overflow for beginners
Ajin Abraham
 
PPTX
Pwning with XSS: from alert() to reverse shell: Defcon Banglore 2013
Ajin Abraham
 
PDF
Abusing, Exploiting and Pwning with Firefox Add-ons: OWASP Appsec 2013 Presen...
Ajin Abraham
 
PDF
Abusing, Exploiting and Pwning with Firefox Add-ons
Ajin Abraham
 
PDF
Wi-Fi Security with Wi-Fi P+
Ajin Abraham
 
PDF
Shellcoding in linux
Ajin Abraham
 
PPTX
Phishing With Data URI
Ajin Abraham
 
PPTX
Buffer overflow for Beginners
Ajin Abraham
 
AppSec PNW: Android and iOS Application Security with MobSF
Ajin Abraham
 
Injecting Security into Web apps at Runtime Whitepaper
Ajin Abraham
 
Hacking Tizen : The OS of Everything - Nullcon Goa 2015
Ajin Abraham
 
Abusing Exploiting and Pwning with Firefox Addons
Ajin Abraham
 
Exploit Research and Development Megaprimer: DEP Bypassing with ROP Chains
Ajin Abraham
 
Exploit Research and Development Megaprimer: Win32 Egghunter
Ajin Abraham
 
Exploit Research and Development Megaprimer: mona.py, Exploit Writer's Swiss ...
Ajin Abraham
 
Exploit Research and Development Megaprimer: Unicode Based Exploit Development
Ajin Abraham
 
Exploit Research and Development Megaprimer: Buffer overflow for beginners
Ajin Abraham
 
Pwning with XSS: from alert() to reverse shell: Defcon Banglore 2013
Ajin Abraham
 
Abusing, Exploiting and Pwning with Firefox Add-ons: OWASP Appsec 2013 Presen...
Ajin Abraham
 
Abusing, Exploiting and Pwning with Firefox Add-ons
Ajin Abraham
 
Wi-Fi Security with Wi-Fi P+
Ajin Abraham
 
Shellcoding in linux
Ajin Abraham
 
Phishing With Data URI
Ajin Abraham
 
Buffer overflow for Beginners
Ajin Abraham
 

Recently uploaded (20)

PDF
HCIP-Data Center Facility Deployment V2.0 Training Material (Without Remarks ...
mcastillo49
 
PDF
LLMs.txt: Easily Control How AI Crawls Your Site
Keploy
 
PDF
From Code to Challenge: Crafting Skill-Based Games That Engage and Reward
aiyshauae
 
PDF
CIFDAQ Token Spotlight for 9th July 2025
CIFDAQ
 
PDF
HubSpot Main Hub: A Unified Growth Platform
Jaswinder Singh
 
PDF
Biography of Daniel Podor.pdf
Daniel Podor
 
PDF
CIFDAQ Weekly Market Wrap for 11th July 2025
CIFDAQ
 
PDF
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
PPTX
AUTOMATION AND ROBOTICS IN PHARMA INDUSTRY.pptx
sameeraaabegumm
 
PDF
CIFDAQ Market Wrap for the week of 4th July 2025
CIFDAQ
 
PDF
Jak MŚP w Europie Środkowo-Wschodniej odnajdują się w świecie AI
dominikamizerska1
 
PPTX
WooCommerce Workshop: Bring Your Laptop
Laura Hartwig
 
PDF
July Patch Tuesday
Ivanti
 
PDF
Blockchain Transactions Explained For Everyone
CIFDAQ
 
PDF
New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
PDF
"AI Transformation: Directions and Challenges", Pavlo Shaternik
Fwdays
 
PDF
Reverse Engineering of Security Products: Developing an Advanced Microsoft De...
nwbxhhcyjv
 
PPTX
OpenID AuthZEN - Analyst Briefing July 2025
David Brossard
 
PDF
Newgen Beyond Frankenstein_Build vs Buy_Digital_version.pdf
darshakparmar
 
PDF
Using FME to Develop Self-Service CAD Applications for a Major UK Police Force
Safe Software
 
HCIP-Data Center Facility Deployment V2.0 Training Material (Without Remarks ...
mcastillo49
 
LLMs.txt: Easily Control How AI Crawls Your Site
Keploy
 
From Code to Challenge: Crafting Skill-Based Games That Engage and Reward
aiyshauae
 
CIFDAQ Token Spotlight for 9th July 2025
CIFDAQ
 
HubSpot Main Hub: A Unified Growth Platform
Jaswinder Singh
 
Biography of Daniel Podor.pdf
Daniel Podor
 
CIFDAQ Weekly Market Wrap for 11th July 2025
CIFDAQ
 
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
AUTOMATION AND ROBOTICS IN PHARMA INDUSTRY.pptx
sameeraaabegumm
 
CIFDAQ Market Wrap for the week of 4th July 2025
CIFDAQ
 
Jak MŚP w Europie Środkowo-Wschodniej odnajdują się w świecie AI
dominikamizerska1
 
WooCommerce Workshop: Bring Your Laptop
Laura Hartwig
 
July Patch Tuesday
Ivanti
 
Blockchain Transactions Explained For Everyone
CIFDAQ
 
New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
"AI Transformation: Directions and Challenges", Pavlo Shaternik
Fwdays
 
Reverse Engineering of Security Products: Developing an Advanced Microsoft De...
nwbxhhcyjv
 
OpenID AuthZEN - Analyst Briefing July 2025
David Brossard
 
Newgen Beyond Frankenstein_Build vs Buy_Digital_version.pdf
darshakparmar
 
Using FME to Develop Self-Service CAD Applications for a Major UK Police Force
Safe Software
 

Injecting Security into vulnerable web apps at Runtime

  • 1. SECURITY ENGINEER AJIN ABRAHAM INJECTING SECURITY INTO WEB APPS WITH RUNTIME PATCHING AND CONTEXT LEARNING
  • 2. ▸ Security Engineering @ ▸ Research on Runtime Application Self Defence ▸ Authored MobSF, Xenotix and NodeJSScan ▸ Teach Security: https://opsecx.com ▸ Blog: http://opensecurity.in #WHOAMI
  • 3. AGENDA : WHAT THE TALK IS ABOUT? RASP WAF WHAT THE TALK IS NOT ABOUT?
  • 4. APPSEC CHALLENGES ▸ Writing Secure Code is not Easy ▸ Most follows agile development strategies ▸ Frequent releases and builds ▸ Any release can introduce or reintroduce vulnerabilities ▸ Problems by design. 
 Ex: Session Hijacking, Credential Stuffing
  • 5. STATE OF WEB FRAMEWORK SECURITY ▸ Automatic CSRF Token - Anti CSRF ▸ Templates escapes User Input - No XSS ▸ Uses ORM - No SQLi You need to use secure APIs or write Code to 
 enable some of these Security Bugs happens when people write bad code.
  • 6. STATE OF WEB FRAMEWORK SECURITY ▸ Anti CSRF - Can easily be turned off/miss configurations ▸ Templates escapes User Input - Just HTML Escape -> XSS ▸ https://jsfiddle.net/1c4f271c/ ▸ Uses ORM - SQLi is still possible ▸ http://rails-sqli.org/
  • 7. STATE OF WEB FRAMEWORK SECURITY ▸ Remote OS Command Execution - No ▸ Remote Code Injection - No ▸ Server Side Template Injection RCE - No ▸ Session Hijacking - No ▸ Verb Tampering - No ▸ File Upload Restriction - No The list goes on…..
  • 8. WE NEED TO PREVENT EXPLOITATION LET’S USE WAF
  • 9. ▸ First WAF AppShield in 1999, almost 18 years of existence ▸ Quick question : How many of you run a WAF in defence/ protection mode? ▸ Most organisations use them, but in monitor mode due
 high rate false positives. ▸ Most WAFs use BLACKLISTS CAN A WAF SOLVE THIS? 20% 70% 10% False Negatives False Positive Detection
  • 10. APPLICATION SECURITY RULE OF THUMB Gets bypassed, today or tomorrow
  • 11. WHAT WAF SEES? ATTACK != VULNERABILITY
  • 12. HOW WAF WORKS ▸ The strength of WAF is the blacklist ▸ They detect Attacks not Vulnerability ▸ WAF has no application context ▸ Doesn’t know if a vulnerability got exploited inside
 the app server or not. WAFGET http://xyz.com APP SERVER HTTP REQUEST HTTP RESPONSE
  • 13. ▸ How long they keep on building the black lists? ▸ WAFs used to downgrade your security. ▸ No Perfect Forward Secrecy ▸ Can’t Support elliptic curves like ECDHE ▸ Some started to support with a Reverse Proxy ▸ Organisations are moving to PFS (Heartbleed bug) ▸ SSL Decryption and Re-encryption Overhead WAF PROBLEMS
  • 14. TLS 1.3 COMING SOON ….
  • 15. SO WHAT’S THE IDEAL PLACE FOR SECURITY? REQUEST RESPONSE APP SERVER APP SERVER CORE SECURITY LAYER
  • 16. We can do much better.
 It’s time to evolve WAF - > SAST -> DAST -> IAST -> RASP Attack Detection 
 &
 Prevention/Neutralization
 +
 Precise 
 Vulnerability Detection
 +
 Extras Attack Detection 
 &
 Prevention Vulnerability Detection Precise 
 Vulnerability Detection
  • 17. RUNTIME APPLICATION SELF DEFENCE ▸ Detect both Attacks and Vulnerability ▸ Zero Code Modification and Easy Integration ▸ No Hardware Requirements ▸ Apply defence inside the application ▸ Have Code Level insights ▸ Fewer False positives ▸ Inject Security at Runtime ▸ No use of Blacklists
  • 18. TYPES OF RASP ▸ Pattern Matching with Blacklist - Old wine in new bottle (Fancy WAF) ▸ Dynamic Tainting - Good but Performance over head ▸ Virtualisation and Compartmentalisation - Good, but Less Precise, Container oriented and not application oriented, Platform Specific (JVM) ▸ Code Instrumentation and Dynamic Whitelist - Good, but specific to Frameworks, Developer deployed
  • 19. FOCUS OF RESEARCH ▸ Other AppSec Challenges ▸ Preventing Verb Tampering ▸ Preventing Header Injection ▸ File Upload Protection ▸ Ongoing Research ▸ Preventing Session Hijacking ▸ Preventing Layer 7 DDoS ▸ Credential Stuffing ▸ RASP by API Instrumentation
 and Dynamic Whitelist ▸ Securing a vulnerable Python 
 Tornado app with Zero Code change. ▸ Code Injection Vulnerabilities ▸ Preventing SQLi ▸ Preventing RCE ▸ Preventing Stored & Reflected XSS ▸ Preventing DOM XSS
  • 20. RASP BY API INSTRUMENTATION AND DYNAMIC WHITELIST ▸ MONKEY PATCHING ▸ LEXICAL ANALYSIS ▸ CONTEXT DETERMINATION
  • 21. MONKEY PATCHING ▸ Also know as Runtime Hooking and Patching of functions/ methods. ▸ https://jsfiddle.net/h1gves49/2/
  • 22. LEXICAL ANALYSIS AND TOKEN GENERATION ▸ A lexical analyzer breaks these syntaxes into a series of tokens, by removing any whitespace or comments in the source code. ▸ Lexical analyzer generates error if it sees an invalid token.
  • 23. LEXICAL ANALYSIS AND TOKEN GENERATION SYNTAX TOKEN int KEYWORD value IDENTIFIER = OPERATOR 100 CONSTANT ; SYMBOL INPUT: int value = 100;//value is 100 Normal Lexer SYNTAX TOKEN int KEYWORD WHITESPACE value IDENTIFIER WHITESPACE = OPERATOR WHITESPACE 100 CONSTANT ; SYMBOL //value is 100 COMMENT Custom Lexer
  • 25. PREVENTING CODE INJECTION VULNERABILITIES Interpreter cannot distinguish between 
 Code and Data Solve that and you solve the code injection problems
  • 26. PREVENTING CODE INJECTION VULNERABILITIES ▸ Preventing SQL Injection ▸ Preventing Remote OS Command Execution ▸ Preventing Stored & Reflected Cross Site Scripting ▸ Preventing DOM XSS
  • 27. SQL INJECTION SELECT * FROM <user_input>
  • 28. SQL INJECTION : HOOK SQL Execution API
 cursor.execute(‘SELECT * FROM logs‘)
  • 29. SQL INJECTION : LEARN SELECT * FROM logs SYNTAX TOKEN SELECT KEYWORD WHITESPACE * OPERATOR WHITESPACE FROM KEYWORD WHITESPACE logs STRING
  • 30. SQL INJECTION : PROTECT SYNTAX TOKEN SELECT KEYWORD WHITESPACE * OPERATOR WHITESPACE FROM KEYWORD WHITESPACE logs STRING WHITESPACE AND KEYWORD WHITESPACE DROP KEYWORD WHITESPACE TABLE KEYWORD WHITESPACE admin STRING SELECT * FROM logs AND DROP TABLE admin
  • 31. SQL INJECTION : PROTECT KEYWORD WHITESPACE OPERATOR WHITESPACE KEYWORD WHITESPACE STRING Rule for Context: SELECT * FROM <user_input> SELECT * FROM logs SELECT * FROM history SELECT * FROM logs AND DROP TABLE admin KEYWORD WHITESPACE OPERATOR WHITESPACE KEYWORD WHITESPACE STRING 
 WHITESPACE KEYWORD WHITESPACE KEYWORD WHITESPACE KEYWORD WHITESPACE STRING
  • 32. DEMO
  • 33. REMOTE OS COMMAND INJECTION ping -c 3 <user input>
  • 34. REMOTE OS COMMAND INJECTION : HOOK Command Execution API
 os.system(ping -c 3 127.0.0.1)
  • 35. REMOTE OS COMMAND INJECTION : LEARN ping -c 3 127.0.0.1 SYNTAX TOKEN ping EXECUTABLE WHITESPACE -c ARGUMENT_DASH WHITESPACE 3 NUMBER WHITESPACE 127.0.0.1 IP_OR_DOMAIN
  • 36. REMOTE OS COMMAND INJECTION : PROTECT ping -c 3 127.0.0.1 & cat /etc/passwd SYNTAX TOKEN ping EXECUTABLE WHITESPACE -c ARGUMENT_DASH WHITESPACE 3 NUMBER WHITESPACE 127.0.0.1 IP_OR_DOMAIN WHITESPACE & SPLITTER WHITESPACE cat EXECUTABLE WHITESPACE /etc/passwd UNIX_PATH
  • 37. REMOTE OS COMMAND INJECTION : PROTECT EXECUTABLE WHITESPACE ARGUMENT_DASH WHITESPACE NUMBER WHITESPACE IP_OR_DOMAIN Rule for Context: ping -c 3 <user_input> ping -c 3 127.0.0.1
 ping -c 3 google.com ping -c 3 127.0.0.1 & cat /etc/passwd 
 EXECUTABLE WHITESPACE ARGUMENT_DASH WHITESPACE NUMBER WHITESPACE IP_OR_DOMAIN
 WHITESPACE SPLITTER WHITESPACE EXECUTABLE WHITESPACE UNIX_PATH
  • 38. DEMO
  • 39. CROSS SITE SCRIPTING <body><h1>hello {{user_input1}} </h1></body>
 <script> var x=‘{{user_input2}}’;</script>
  • 40. CROSS SITE SCRIPTING : HOOK Template Rendering API
 
 template.render(“<body><h1>hello {{user_input1}}
 </h1></body><script> var x=‘{{user_input2}}’;
 </script>“, user_input1, user_input2)
  • 41. CROSS SITE SCRIPTING : CONTEXT DETERMINATION Parsing the DOM Tree <body><h1>hello {{user_input1}}
 </h1></body><script> var x=‘{{user_input2}}’;
 </script> HTML_CONTEXT JAVASCRIPT_VALUE_CONTEXT
  • 42. CROSS SITE SCRIPTING : PROTECT <body><h1>hello {{user_input1}} </h1></body>
 <script> var x=‘{{user_input2}}’;</script> <body><h1>hello World </h1></body>
 <script> var x=‘Hello World’;</script> user_input1 = “World”
 user_input2 = “Hello World”
  • 43. CROSS SITE SCRIPTING : PROTECT <body><h1>hello &lt;script&gt;alert(0)&lt;/ script&gt; </h1></body>
 <script> var x=‘';alert(0);//x3C/scriptx3E’;</ script> user_input1 = “<script>alert(0)</script>”
 user_input2 = “‘;alert(0);//</script>”
  • 44. DEMO
  • 45. PREVENTING DOM XSS https://jsfiddle.net/vno23woL/3/ ▸ Inject Security into JavaScript Frameworks ▸ Common JavaScript Frameworks - jQuery, AngularJS, MustacheJS etc… ▸ DOMPurify - https://github.com/cure53/DOMPurify ▸ jPurify - https://github.com/cure53/jPurify
  • 46. OTHER APPSEC CHALLENGES ▸ Preventing Verb Tampering ▸ Preventing Header Injection ▸ File Upload Protection ▸ Preventing Path Traversal
  • 47. ▸ WAFs blindly blocks TRACE and OPTION Request ▸ Hook HTTP Request API ▸ Learn the HTTP Verbs and Generate Whitelist ▸ Block if not in the list PREVENTING VERB TAMPERING DEMO
  • 48. PREVENTING HEADER INJECTION ▸ Unlike WAF we don’t have to keep a blacklist 
 of every possible encoded combination of 
 “%0a” and “%0d” ▸ Hook HTTP Request API ▸ Look for “%0a,%0d“ in HTTP Request Headers ▸ Block if Present DEMO
  • 49. FILE UPLOAD PROTECTION ▸ Classic File Upload Bypass
 image.jpg.php, image.php3 etc. ▸ Hook File/IO API : 
 io.open(“/tmp/nice.jpg”, 'wb') ▸ Learn file extensions to create a whitelist. ▸ Block any unknown file extensions
 io.open(“/tmp/nice.py”, 'wb') DEMO
  • 51. PREVENTING PATH TRAVERSAL ▸ Hook File/IO API:
 io.open(“/read_dir/index.txt”, ‘rb') ▸ Learn directories and file extensions ▸ Block any unknown directories and file extensions
 io.open(“/read_dir/../../etc/passwd”, 'rb') DEMO
  • 52. ON GOING RESEARCH ▸ Preventing Session Hijacking ▸ Preventing Layer 7 DDoS ▸ Credential Stuffing
  • 53. THE RASP ADVANTAGES ▸ Accurate and Precise in Vulnerability Detection & Prevention ▸ Code Level Insight (Line no, Stack trace) ▸ Not based on Heuristics - Zero/Negligible False Positives ▸ No SSL Decryption and Re-encryption overhead ▸ Doesn’t Downgrade your Security ▸ Preemptive security - Zero Day protection ▸ Zero Code Change and easy integration
 
 pip install rasp_module
 import rasp_module
  • 54. BIGGEST ADVANTAGE Now you can deploy it on protection mode
  • 55. CHARACTERISTICS OF AN IDEAL RASP ▸ Ideal RASP should have minimal Performance impact ▸ Should not introduce vulnerabilities ▸ Must not consume PII of users ▸ Should not learn the bad stuff ▸ Should be a “real RASP” not a fancy WAF with Blacklist. ▸ Minimal Configuration and Easy deployment
  • 56. THAT’S ALL FOLKS! ▸ Thanks to ▸ Zaid Al Hamami, Mike Milner, Steve Williams, Oliver Lavery
 (Team IMMUNIO inc). ▸ Kamaiah, Francis, Bharadwaj, Surendar, Sinu, Vivek 
 (Team Yodlee Security Office - YSO) ▸ Due Credits ▸ Graphics/Image Owners @ajinabraham [email protected]