39. GAM = GeneXus Access Manager
⢠Autenticación
â Proceso a cumplir para tener acceso a los recursos del sistema
â Verifica que el usuario es âquienâ dice ser
⢠Autorización
â Una vez que se sabe âquienâ ingreso al sistema se debe saber âquĂŠâ
cosas puede hacer
⢠Para Web y Smart Devices
⢠Define base de datos de usuarios y permisos
⢠Oculta complejidad y da potencia
40. ÂżCĂłmo lo habilito?
⢠Propiedad a nivel de KB Version
â Enable Integrated Security = True
â Default integrated security level =
(none, authentication, authorization)
⢠Propiedad por objeto
â Integrated Security Level
45. OWASP - Ataques
⢠A ⢠Direct Static Code Injection ⢠Repudiation Attack
⢠Account lockout attack ⢠Double Encoding ⢠Resource Injection
⢠Argument Injection or Modification ⢠F ⢠S
⢠Asymmetric resource consumption ⢠Forced browsing ⢠SQL Injection
(amplification) ⢠Format string attack ⢠Server-Side Includes (SSI) Injection
⢠B ⢠Full Path Disclosure ⢠Session Prediction
⢠Binary planting ⢠H ⢠Session fixation
⢠Blind SQL Injection ⢠HTTP Request Smuggling ⢠Session hijacking attack
⢠Blind XPath Injection ⢠HTTP Response Splitting ⢠Setting Manipulation
⢠Brute force attack ⢠L ⢠Special Element Injection
⢠Buffer overflow attack ⢠LDAP injection ⢠Spyware
⢠C ⢠M ⢠T
⢠CSRF ⢠Man-in-the-browser attack ⢠Traffic flood
⢠Cache Poisoning ⢠Man-in-the-middle attack ⢠Trojan Horse
⢠Cash Overflow ⢠Mobile code: invoking untrusted mobile code ⢠U
⢠Code Injection ⢠Mobile code: non-final public field ⢠Unicode Encoding
⢠Command Injection ⢠Mobile code: object hijack ⢠W
⢠Comment Injection Attack ⢠N ⢠Web Parameter Tampering
⢠Cross Frame Scripting ⢠Network Eavesdropping ⢠Windows ::DATA alternate data stream
⢠Cross Site History Manipulation (XSHM) ⢠O ⢠X
⢠Cross Site Tracing ⢠One-Click Attack ⢠XPATH Injection
⢠Cross-Site Request Forgery (CSRF) ⢠Overflow Binary Resource File ⢠XSRF
⢠Cross-User Defacement ⢠P
⢠Cross-site Scripting (XSS) ⢠Page Hijacking
⢠Cryptanalysis ⢠Parameter Delimiter
⢠C cont. ⢠P cont.
⢠Custom Special Character Injection ⢠Path Manipulation
⢠D ⢠Path Traversal
⢠Denial of Service ⢠R
⢠Direct Dynamic Code Evaluation ('Eval ⢠Regular expression Denial of Service - ReDoS
Injection') ⢠Relative Path Traversal
46. OWASP - Vulnerabilidades
⢠ASP.NET Misconfigurations ⢠G ⢠Not allowing password aging ⢠Template:Vulnerability
⢠Access control enforced by presentation layer ⢠Guessed or visible temporary file ⢠Not using a random initialization vector with cipher block ⢠Truncation error
⢠Addition of data-structure sentinel ⢠H chaining mode ⢠Trust Boundary Violation
⢠Allowing Domains or Accounts to Expire ⢠Hard-Coded Password ⢠Null Dereference ⢠Trust of system event data
⢠Allowing password aging ⢠Heap Inspection ⢠O ⢠Trusting self-reported DNS name
⢠Assigning instead of comparing ⢠Heap overflow ⢠OWASP .NET Vulnerability Research ⢠Trusting self-reported IP address
⢠Authentication Bypass via Assumed-Immutable Data ⢠I ⢠Object Model Violation: Just One of equals() and ⢠U
⢠B ⢠Ignored function return value hashCode() Defined ⢠Uncaught exception
⢠Buffer Overflow ⢠Illegal Pointer Value ⢠Often Misused: Authentication ⢠Unchecked Error Condition
⢠Buffer underwrite ⢠Improper Data Validation ⢠Often Misused: Exception Handling ⢠Unchecked Return Value: Missing Check against Null
⢠Business logic vulnerability ⢠Improper cleanup on thrown exception ⢠Often Misused: File System ⢠Unchecked array indexing
⢠C ⢠Improper error handling ⢠Often Misused: Privilege Management ⢠Undefined Behavior
⢠CRLF Injection ⢠Improper string length checking ⢠Often Misused: String Management ⢠Uninitialized Variable
⢠Capture-replay ⢠Improper temp file opening ⢠Omitted break statement ⢠Unintentional pointer scaling
⢠Catch NullPointerException ⢠Incorrect block delimitation ⢠Open forward ⢠Unreleased Resource
⢠Comparing classes by name ⢠Information Leakage ⢠Open redirect ⢠Unrestricted File Upload
⢠Comparing instead of assigning ⢠Information leak through class cloning ⢠Overflow of static internal buffer ⢠Unsafe JNI
⢠Comprehensive list of Threats to Authentication Procedures ⢠Information leak through serialization ⢠Overly-Broad Catch Block ⢠Unsafe Mobile Code
and Data ⢠Insecure Compiler Optimization ⢠Overly-Broad Throws Declaration ⢠Unsafe Reflection
⢠Covert timing channel ⢠Insecure Randomness ⢠P ⢠Unsafe function call from a signal handler
⢠Cross Site Scripting Flaw ⢠Insecure Temporary File ⢠PHP File Inclusion ⢠Unsigned to signed conversion error
⢠D ⢠Insecure Third Party Domain Access ⢠PRNG Seed Error ⢠Use of Obsolete Methods
⢠Dangerous Function ⢠Insecure Transport ⢠Passing mutable objects to an untrusted method ⢠Use of hard-coded password
⢠Deletion of data-structure sentinel ⢠Insufficient Entropy ⢠Password Management: Hardcoded Password ⢠Use of sizeof() on a pointer type
⢠Deserialization of untrusted data ⢠Insufficient Session-ID Length ⢠Password Management: Weak Cryptography ⢠Using a broken or risky cryptographic algorithm
⢠Directory Restriction Error ⢠Insufficient entropy in pseudo-random number generator ⢠Password Plaintext Storage ⢠Using a key past its expiration date
⢠Double Free ⢠Integer coercion error ⢠Poor Logging Practice ⢠Using freed memory
⢠Doubly freeing memory ⢠Integer overflow ⢠Portability Flaw ⢠Using password systems
⢠Duplicate key in associative list (alist) ⢠Invoking untrusted mobile code ⢠Privacy Violation ⢠Using referer field for authentication or authorization
⢠E ⢠J ⢠Process Control ⢠Using single-factor authentication
⢠Empty Catch Block ⢠J2EE Misconfiguration: Unsafe Bean Declaration ⢠Publicizing of private data when using inner classes ⢠Using the wrong operator
⢠Empty String Password ⢠K ⢠R ⢠V
⢠F ⢠Key exchange without entity authentication ⢠Race Conditions ⢠Validation performed in client
⢠Failure of true random number generator ⢠L ⢠Reflection attack in an auth protocol ⢠Vulnerability template
⢠Failure to account for default case in switch ⢠Least Privilege Violation ⢠Reflection injection ⢠W
⢠Failure to add integrity check value ⢠Leftover Debug Code ⢠Relative path library search ⢠Wrap-around error
⢠Failure to check for certificate revocation ⢠Log Forging ⢠Reliance on data layout ⢠Write-what-where condition
⢠Failure to check integrity check value ⢠Log injection ⢠Relying on package-level scope
⢠Failure to check whether privileges were dropped ⢠M ⢠Resource exhaustion
successfully ⢠Member Field Race Condition ⢠Return Inside Finally Block
⢠Failure to deallocate data ⢠Memory leak ⢠Reusing a nonce, key pair in encryption
⢠Failure to drop privileges when reasonable ⢠Miscalculated null termination ⢠S
⢠Failure to encrypt data ⢠Misinterpreted function return value ⢠Session Fixation
⢠Failure to follow chain of trust in certificate validation ⢠Missing Error Handling ⢠Sign extension error
⢠Failure to follow guideline/specification ⢠Missing XML Validation ⢠Signed to unsigned conversion error
⢠Failure to protect stored data from modification ⢠Missing parameter ⢠Stack overflow
⢠Failure to provide confidentiality for stored data ⢠Multiple admin levels ⢠State synchronization error
⢠Failure to validate certificate expiration ⢠Mutable object returned ⢠Storing passwords in a recoverable format
⢠Failure to validate host-specific certificate data ⢠N ⢠String Termination Error
⢠File Access Race Condition: TOCTOU ⢠Non-cryptographic pseudo-random number generator ⢠Symbolic name not mapping to correct object
⢠Format String ⢠T
47. Aplicaciones seguras con GeneXus
Plataforma
⢠Mejoras en todas las versiones
⢠Mejoras en todos los upgrades
48. QuĂŠ estamos haciendo nosotros
Herramientas
para scan de
vulnerabilidades
Mejoras
GAM
constantes
App
Seguras
El WorldWide Web Consortium (W3C) es una comunidad internacional que desarrolla estĂĄndares como XML, XHTML, SOAP, Comercio electrĂłnico, HTML, CSS; que aseguran el crecimiento de la Web a largo plazo. La problemas derivados de la heterogeneidad de la web desde sus inicios ha dejado de manifiesto la necesidad de tener un estĂĄndar que permita una programaciĂłn e interpretaciĂłn de aplicable a cualquier plataforma, navegador y usuario.De esto modo, el Consorcio WorldWide Web (W3C por sus siglas en ingles) fundador de la WWW ha venido sacando una serie de estĂĄndares para la escritura correcta de una pĂĄgina web en HTML.La validez es un criterio de calidad para una pagina web. Una pagina web valida no es necesariamente una buena pagina. Pero una pagina invalida tienemenos chances de ser una buena pagina.La validaciĂłn es el proceso de chequear una pagina web contra una gramĂĄtica.W3C MarkupValidator dice si la pagina cumple con un conjunto de reglas.TheMarkupValidator es una herramienta gratuita que chequea la sintaxis de documentos web contra una gramĂĄtica, la que la pagina dice estar usando.En cadapĂĄginaquevalida se puedemostrar un distintivo âW3C validâ es un iconoqueprovee el validador.Esta herramienta de validaciĂłn tiene tres formas de operar: Por la direcciĂłn de tu pĂĄgina.Subiendo el archivo HTML que quieres validar.Poniendo directamente el cĂłdigo a validar dentro de un campo de texto.Una vez introducido y validado tu cĂłdigo; te mostrarĂĄ los errores y su ubicaciĂłn con lo que podras iniciar corregir para llevarla al estardar.La validez de un style sheet depende del nivel de CSS usado en ese style sheet.Debecontener solo rules nombre de propiedades y valoresdefinidos en suespecificaciĂłn.El servicio de validaciĂłn de w3c es gratis. Es open y se puedebajarinstalarlolocalmenteusarlo y modificarloincluso.Algunos browsers extiendenesos profiles con nuevaspropiedadescomohizo Mozilla con la propiedad -moz-opacity.El validador no contemplaesaspropiedades y haceque sea invĂĄlido en tĂŠrminos de lasespecificaiones de CSS. Las ventajas mĂĄs importante de tener una web validada son las siguientes: Carga mĂĄs rĂĄpida ante menos cĂłdigo extraĂąo.AdaptaciĂłn a mĂşltiples plataformas y navegadores.Preprara el sitio ante cualquier cambio en los navegadores.Homogeniza la visibilidad de tu web.Permite un mejor acceso de los buscadores y por tanto, mayor trafico.
En el ĂĄrea usabilidad en la interfaz web hemos agregado nuevos controles y funcionalidades que estĂĄn presentes en las ultimas especificaciones de HTML5 y CSS3 que nos da un valor agregado en la parte visual.Hasta versiones previas de GeneXusEv2 el HTML generado por GeneXus sigue la especificaciĂłn HTML4, los controles y caracterĂstias que se utilizan son propios de esa especificaciĂłn. Que ademĂĄs es una versiĂłn de html creada en 1990 y estandarizada en 1997 que no ha cambiado por muchos aĂąos y eso hace que todos los browsers implementaran esa especificaciĂłn es decir se soporta en todos. La especificaciĂłn de HMTL5 aun esta en desarrollo, no esta cerrada e intenta ser una conjunciĂłn de las versiones previas (html4, xhtml).
El primer draftde HTML5 se publico en Enero de 2008W3C creó un logotipo oficial propio para HTML5 y motiva a que se use como distintivo del uso o interÊs en HTML5.HTML5 introduce un numero de elementos nuevos que reemplazan a otros ya existentes dando mas semåntica. HTML5 esta diseùado de manera que versiones viejas de browsers pueda ignorar los nuevos constructores de forma segura. Algunos elementos nuevos que agregamos en Evolution 2 son: Email, tel, url, search, color, invitation text.La principal ventaja de estos controles es que son semånticamente mas correctos y permiten mayor accesibilidad en los mobiles: si se lleva a un input mail con iPhone, el iPhonedespliega un teclado con el simbolo @ en la pantallaprimaria. O .comosies del tipourl.
Opera permiteseleccionar un color desde un color picker.
PlaceHolder (Invitation Message) proporciona unindicioque describe el valor esperado en un input. Se despliegamientrasestavacio, desaparececuandoese campo obtiene el foco.
La primer especificaciĂłn de CSS oficial, la version 1, fuepublicada en 1996. Y la 2 se publicĂł en 1998.CSS3 es un poco distinta porque en lugar de definir todas las features en una Ăşnica gran especificaciĂłn, como CSS2 y CSS3 esta dividida en varios mĂłdulos. Los primeros drafts fueron publicados en 1999. Y debido a esa modularizaciĂłn es que diferentes mĂłdulos tienen distinta estabilidad y status.En marzo de 2011 Algunos mĂłdulos (son mas de 40) como Selectors, Namespaces, Color y Media Queries son considerados estables y en estado de candidato o recomendaciĂłn.
Se permite importar un archivo css completo. Se selecciona un archivo css y los nombres de clases que coinciden se actualizan.O se permite tambiĂŠn importar una definiciĂłn de css de una clase por ejemplo.Esto facilita la interacciĂłn del diseĂąador con el desarrollador, podemos generar un css pero no podĂamos importar uno.
La propiedad @font-face de CSS3 nos permite utilizar tipografĂas personalizadas en la Web de una manera accesible, manipulable y escalable.Algunas ventajas de utilizar @font-face:El texto puede ser localizado mediante bĂşsquedas (Ctrl-F ). Los motores de busqueda va a encontrar y priorizar estos textos sobre una pagina que tenga imĂĄgenes con los mismos textos por mas que tengan el tag ALT.Menos costo de mantenimiento.El texto es accesible, pudiendo ser interpretado por las ayudas tĂŠcnicas como los lectores de pantalla.El texto es traducible, mediante la traducciĂłn en el navegador u otros servicios de traducciĂłn.El texto puede ser formateado mediante las propiedades de estilo de texto: line-height , letter-spacing , text-shadow , text-align , y utilizado con los selectores ::first-letter y ::first-linePermite usar fonts mas creativos, que antes habrian requerido imagenes, ahora pueden ser creados embebiendo los fonts. Ayudando a crear un markup mas limpio y mas semantico en el backend.Otra cracteristica interesante es que se pueden usar como los fonts regulares, configurando todas las propiedades que se tienen en un fontcomun. Para browsers que no soportan las fuentes ttf, se puede escribir una definicion que incluya los dos, es decir definir el font con multiplesrc.
Razones para ofrecer mas de un css en un sitio web:-contemplar variedad de gustos: diferentes diseĂąos son apropiados para diferentes personas. Por ejemplo a algunos les gusta un diseĂąo colorido. A otros Uno mas sencillo y limpio.-contemplar necesidades especiales: por ejemplo gente de tercera edad que puede necesitar font sizes mas grandes.
En Area de desarrollo web el foco dentro del a Evolution 2, se posiciono en tres elementos principalesExperiencia de UsuarioSeguridadDesempeĂąo
Antes de ver quĂŠ es el GAM y quĂŠ escenarios resuelve me parece bueno aclarar algunos conceptos relacionados al tema de la seguridad de las aplicaciones.El primero es el concepto de autenticaciĂłn que lo podemos definir como el proceso por el cual el usuario se identifica; es decir, dice quien es. Una vez que el sistema sabe quien es el usuario que ingreso al sistema hablamos de AutorizaciĂłn como el proceso de verificaciĂłn que una persona conocida tiene la autoridad para realizar una cierta operaciĂłn. Es decir, define quĂŠ cosas puede hacer el usuario en el sistema.
Cuando se habilita el GAM pasan las siguientes cosas en la KB:Se importan los objetos externos que definen el API del GAM que quedan en la carpeta GAM_Library y una serie de objetos con ejemplos de cĂłmo usar el API tanto para web como para SmartDevices que quedan en la carpeta GAM_ExamplesSe inicializan las propiedades âLoginobjectfor Webâ y âLoginobjectfor SDâ que quedan apuntando a los ejemplos de login que se importaron anteriormente para web y SD respectivamenteSe crea un datastore secundario de nombre GAM que hereda la configuraciĂłn del datastore defaultCuando se hace el primer Run luego de habilitar el GAM se crea la BD del GAM y se inicializa la metadata del GAM. AdemĂĄs se hace el deploy de los binarios del API del GAM.
Para la autenticaciĂłn nos resuelve el caso en donde los usuarios son locales , es decir, el registro de usuarios se lleva en la base de datos del GAM y por lo tanto cuando se identifican el control se hace sobre los datos almacenados por el GAMEn el caso de querer hacer que el proceso de login haga el chequeo contra una base de datos que no sea la del GAM o hasta con un directorio de usuarios basados en LDAP o Active Directory entonces se lo puede configurar para que la autenticaciĂłn se haga a travĂŠs de un Web Service Externo. En este caso es necesario desarrollar ese Web Service respetando determinada interfaz de parĂĄmetros de entrada y salida y es este servicio el quĂŠ tendrĂĄ la lĂłgica para hacer la autenticaciĂłn y devolverle al GAM los datos del usuario que se estĂĄ logueando y cĂłdigo de error que correspodan. En este caso se configura en el GAM donde estĂĄ dicho servicio.De la misma forma se puede habilitar que el login se haga contra la cuenta del usuario en Facebook y Twitter. Por ejemplo en el caso de Facebook se registra la aplicaciĂłn que estemos desarrollando y Facebook nos da un par de claves que debemos configurar en el GAM. Para el usuario final cuando entra a la pantalla de login podemos ofrecer el botĂłn con Facebook y/o Twitter y esto lo redireccionarĂĄ al sitio que corresponda dado que la contraseĂąa nunca se ingresa en nuestro sistema, luego de logueado en alguna de estas redes sociales es redireccionado a nuestra aplicaciĂłn y ahĂ si estuvo todo bien con la autenticaciĂłn se le da acceso al sistema.Todos estos tipos de autenticaciĂłn se pueden habilitar simultaneamente, es decir, que al usuario en la pantalla de login le podemos ofrecer todas estas opciones para identificarse.
Mejorarseguridad en aplicaciones.Hacer visible el temaseguridad.Principios:caracteristicas, comportamiento, implementacionqueintentanreducirlasamenazas y el impactoqueestaspudierantener. Ej: fail securely, fail-safe defaults, donât trust infrastructure, donât trust services, etc.Ataques: Tecnicasqueexplotanvulnerabilidades.Vulnerabilidades: debilidad en el sistemaquecompromete la informacion o funcionamiento de la aplicacion, permitiendo a un atacantegeneraralguntipo de daĂąo.Top 10: Concensosobre los 10 riesgos mas altos queexisten hoy en aplicaciones web.
Proyecto:Herramientas y metodologiaEvaluacionde riesgoTests de penetracion