Sunteți pe pagina 1din 21

Facultad de Ingeniería Industrial y de Sistemas

Auditoria y Seguridad de las


Tecnologías de la Información
Sesión 12 - Auditoria a la Seguridad de Aplicaciones

© 2014, Isaac Ernesto Bringas Masgo


Facultad de Ingeniería Industrial y de Sistemas
Universidad Nacional de Ingeniería
Datos del Profesor
Ing. I. Ernesto Bringas Masgo, CIP 86558
Msc Ing. De Sistemas
Msc Ing. De Telecomunicaciones (c)
Profesional de Seguridad Informatica – SUNAT
Miembro del CSIRT – UNI
Coach UNI ACM-ICPC 2005 – 2006 - 2007
Docente del Curso de Lenguajes de Programacion
Orientado a Objetos FIIS – UNI
Docente del Curso de Seguridad Informatica FIIS – UNI
Docente del Diplomado de Seguridad Informatica Posgrado
FIIS – UNI

ebringas2004@yahoo.es
ebringas@sunat.gob.pe
Auditoria y Seguridad de las Tecnologías de Información
Agenda
Sesión 12: Auditoria a la Seguridad de Aplicaciones

12.1. Auditoria de código fuente de aplicaciones.


12.2. Auditoria de la Base de Datos de Aplicaciones
LABORATORIO: Uso de herramienta de auditoria de
aplicaciones.

Auditoria y Seguridad de las Tecnologías de Información


12.1 Auditoria de código fuente de
aplicaciones
El Problema:
Los desarrolladores de software desconocen los
errores de programacion que generan riesgos, y los
controles existentes.

Los desarrolladores de controles desconocen


todos los posibles ataques y solo mitigan parte del
problema.

Los usuarios desconocen el nivel de exposicion


cuando utilizan las aplicaciones.

Auditoria y Seguridad de las Tecnologías de Información


12.1 Auditoria de código fuente de
aplicaciones
Soluciones:
Se necesitaria un desarrollador experto en
seguridad y un analista de seguridad experto en el
desarrollo de software que trabajen
coordinadamente en todo el ciclo de vida del
software para que desarrollen una programacion
segura.

O tambien una revisión detallada del código


de las aplicaciones previo paso a producción,
para detectar y corregir posibles problemas
de seguridad.

Auditoria y Seguridad de las Tecnologías de Información


12.1 Auditoria de código fuente de
aplicaciones
Metodologia para la auditoria de codigo fuente:

1. Seleccionar aplicaciones a auditar.


2. Seleccionar herramientas a utilizar.
3. Obtener posibles vulnerabilidades.
4. Identificar variables relacionadas con la posible
vulnerabilidad.
5. Seguir hacia atrás el flujo de datos.
6. Identificar el origen de la informacion.
7. Verificar la existencia de la vulnerabilidad mediante
explotacion.

Auditoria y Seguridad de las Tecnologías de Información


12.1 Auditoria de código fuente de
aplicaciones
Ejemplo de posibles resultados:

Desbordamiento de buffer en:


• Keepalived libipfwc.c linea 315
• Keepalived libipfwc.c linea 395
• SRG main.cc linea 1149
• BIRD io.c linea 76
• BIRD cliente.c linea 253

Condicion de competencia:
• SRG utils.cc linea 495

Auditoria y Seguridad de las Tecnologías de Información


Reglas de Codificacion
Las reglas de codificacion son representaciones del
conocimiento, obtenidas a traves de la experiencia,
acerca de potenciales vulnerabilidades que existen
en lenguajes de programacion similares a C y C++.

La siguiente lista provee un conjunto de reglas de


codificacion para ser considerados por los
desarrolladores de software ya sea manualmente o
en conjunccion con herramientas para descubrir,
explorar, remover y eventualmente prevenir las
vulnerabilidades a la seguridad en el codigo fuente.

Fuente: https://www.us-cert.gov/bsi
Auditoria y Seguridad de las Tecnologías de Información
Reglas de Codificacion
Most Recently Updated Rules [Ordered by Last Modified Date]
• Wsprintf [4/26/07 8:23:37 AM]
Be careful with string formatting operations.
• WideCharToMultiByte [4/26/07 8:23:06 AM]
The destination string buffer must be long enough to hold the same
number of characters, not bytes, as contained in the source string.
• VFORK [4/26/07 8:22:44 AM]
Vulnerable to race conditions. Don't use vfork() in your programs.
• Utime [4/26/07 8:22:06 AM]
Vulnerable to TOCTOU issues
• TTYNAME [4/26/07 8:21:05 AM]
Can return a non-null-terminated string.

All Rules [Ordered by Title]


• A2W-Macro [2/26/07 2:14:09 PM]
Long strings can overflow stack
• access() [2/27/07 1:26:30 PM]
Never use simply to avoid changing to a less privileged mode

Fuente: https://buildsecurityin.us-cert.gov/daisy/bsi/76.html
Auditoria y Seguridad de las Tecnologías de Información
Reglas de Codificacion
• acct() [2/27/07 1:28:19 PM]
Be careful with location specified, especially use of NULL
• AddAccess-ACE [2/27/07 10:29:43 AM]
Access Control Entries not inheritable
• AfxLoadLibrary [4/10/07 9:46:45 AM]
Vulnerable to "tainted" DLLs placed in a location in the search path
before the intended DLL
• AfxParseURL [2/27/07 1:31:37 PM]
Does not fully comply with URL standards
• au_to_path() [2/27/07 1:33:58 PM]
Be careful with paths passed as a parameter
• basename() [2/27/07 1:34:33 PM]
Vulnerable to path spoofing
• bcopy() [2/27/07 1:35:15 PM]
Be careful with buffer size and termination
....................
....................
• Wsprintf [4/26/07 8:23:37 AM]
Be careful with string formatting operations.
Fuente: https://buildsecurityin.us-cert.gov/daisy/bsi/76.html
Auditoria y Seguridad de las Tecnologías de Información
Herramientas analizadoras de la
seguridad de códigos fuentes:

Auditoria y Seguridad de las Tecnologías de Información


Herramientas analizadoras de la
seguridad de códigos fuentes:

Auditoria y Seguridad de las Tecnologías de Información


Herramientas analizadoras de la
seguridad de códigos fuentes:

Fuente: https://samate.nist.gov/index.php/Source_Code_Security_Analyzers.html
Auditoria y Seguridad de las Tecnologías de Información
Herramientas analizadoras de la
seguridad de códigos fuentes:
Algunos Tools analizadores de codigo fuente para Java:
• Bandera — analyser for Java
• Checkstyle — analyse Java and apply coding standard
• ClassCycle — analyse Java class cycles and class and package
dependencies (Layers)
• FindBugsFindBugs — an open-source static bytecode analyzer
for Java (based on JakartaFindBugs — an open-source static
bytecode analyzer for Java (based on Jakarta BCEL).
• Jlint — for Java
• Soot — A Java program analysis and compiler optimization
framework
• Bugle — Use Google Code Search
(http://www.google.com/codesearch) to find bug patterns in open
source software.

Auditoria y Seguridad de las Tecnologías de Información


Herramientas analizadoras de la
seguridad de códigos fuentes:
1.- Mirando el FindBugs:

Fuente: http://findbugs.sourceforge.net/
Auditoria y Seguridad de las Tecnologías de Información
Herramientas analizadoras de la
seguridad de códigos fuentes:
1.- Mirando el FindBugs:
Manual
http://findbugs.sourceforge.net/manual/installing.html

Puedes ejecutarlo directamente desde internet de la


siguiente direccion:
http://findbugs.cs.umd.edu/demo/jnlp/findbugs.jnlp

Auditoria y Seguridad de las Tecnologías de Información


Herramientas analizadoras de la
seguridad de códigos fuentes:
Analizando una aplicación con FingBugs:

Auditoria y Seguridad de las Tecnologías de Información


Herramientas analizadoras de la
seguridad de códigos fuentes:
2.- Mirando el Bugle:

Auditoria y Seguridad de las Tecnologías de Información


Herramientas analizadoras de la
seguridad de códigos fuentes:
Bugle: SQL Injection

Auditoria y Seguridad de las Tecnologías de Información


Referencias Web
∙ U.S. Department of Homeland Security: Project Build
Security In

∙ Secure Software Development Life Cycle Processes

https://buildsecurityin.us-cert.gov/daisy/bsi/articles/knowledge/sdlc.html

∙ Coding Rules

https://buildsecurityin.us-cert.gov/bsi-rules/home.html

∙ National Institute of Standards and technology (NIST):


SAMATE - Software Assurance Metrics And Tool Evaluation

http://samate.nist.gov/index.php/Main_Page

Auditoria y Seguridad de las Tecnologías de Información


Que has aprendido?
∙ Auditoria de código fuente de aplicaciones.

∙ Herramientas para la auditoria de código fuente de


aplicaciones

Auditoria y Seguridad de las Tecnologías de Información

S-ar putea să vă placă și