mitigando eventualidades de seguridad en web 2.0 + semántica
Post on 05-Jul-2015
196 Views
Preview:
DESCRIPTION
TRANSCRIPT
www.sgcampus.com.mx @sgcampus
www.sgcampus.com.mx
@sgcampus
Mitigando Eventualidades de Seguridad
en Web 2.0 + Semántica
“Exposición de vulnerabilidades web 2.0 + Semántica y como
solucionarlas base -Proceso Ingeniería de software orientada a
metodologías [agiles - Samm] para grupos de trabajo que
desarrollan en plataforma web [OpenSource] con seguridad
informática [OWASP Ethical Hacker].”
www.sgcampus.com.mx @sgcampus
Mitigando Eventualidades de Seguridad
en Web 2.0 + Semántica
www.sgcampus.com.mx @sgcampus
Mitigando Eventualidades de Seguridad
en Web 2.0 + Semántica
Contexto | Web 2.0
• Rich Internet Applications (RIA) - AJAX (asíncrona).
• Web Services, Rest-Full, JSON • Colaboración - Comunidades (emisión y
recepción de contenido distintas fuentes)
• Aplicaciones orientadas a Objetos XmlHttpRequest ( Funciones JavaScripts - XML)
wikis, rss, feeds, blogs, mashups y servicios interactivos.
www.sgcampus.com.mx @sgcampus
Mitigando Eventualidades de Seguridad
en Web 2.0 + Semántica
Contexto | Web Semántica
www.sgcampus.com.mx @sgcampus
Mitigando Eventualidades de Seguridad
en Web 2.0 + Semántica
Contexto
Antecedente: Top ATTack Web [2013]
www.sgcampus.com.mx @sgcampus
Mitigando Eventualidades de Seguridad
en Web 2.0 + Semántica
http://map.ipviking.com/ Contexto
www.sgcampus.com.mx @sgcampus
Mitigando Eventualidades de Seguridad
en Web 2.0 + Semántica
¿Qué son los riesgos de seguridad en aplicaciones? Los atacantes pueden potencialmente usar muchas diferentes rutas a través de su aplicación para causar daño en su negocio u organización. Cada una de estas rutas representa un riesgo que puede, o no, ser lo suficientemente serio como para merecer atención.
A veces, estas rutas son triviales de encontrar y explotar y a veces son extremadamente difíciles. De manera similar, el daño causado puede ir de ninguno hasta incluso sacarlo del negocio. Para determinar el riesgo para su organización, puede evaluar la probabilidad asociada con cada agente de amenaza, vector de ataque y debilidad de seguridad y combinarla con una estimación del impacto técnico y de negocios en su organización. Juntos, estos factores determinan el riesgo total.
Contexto
www.sgcampus.com.mx @sgcampus
Mitigando Eventualidades de Seguridad
en Web 2.0 + Semántica
Browser Vulnerabilities 2013 - 2014
Plug-In Vulnerabilities Adobe Acrobat Reader 68 Adobe Flash 56 Active X 54 Apple QuickTime 13 Firefox Extension 0 Oracle Sun Java 184 Total 375
www.sgcampus.com.mx @sgcampus
Mitigando Eventualidades de Seguridad
en Web 2.0 + Semántica
Contexto
www.sgcampus.com.mx @sgcampus
Mitigando Eventualidades de Seguridad
en Web 2.0 + Semántica
Eventualidades
www.sgcampus.com.mx @sgcampus
Mitigando Eventualidades de Seguridad
en Web 2.0 + Semántica
Tipos de Vulnerabilidades | Top 10 Norma OWASP 2013
Inyección de código [Sql Injection]
Pérdida de Autenticación y Gestión de Sesiones [Broken Authentication and
Session Management]
Secuencia de Comandos en Sitios Cruzados [Cross-Site Scripting (XSS)]
Referencia Directa Insegura a Objetos [Insecure Direct Object References]
Configuración Defectuosa de Seguridad [Security Misconfiguration]
Exposición de datos Sensibles [Sensitive Data Exposure]
Funcionalidad Limitada para Niveles de Control de Acceso [Missing Function
Level Access Control]
Falsificación de Peticiones en Sitios Cruzados [Cross-Site Request Forgery
(CSRF)]
Uso de Componentes vulnerables [Using Known Vulnerable Components]
Redirecciones y reenvíos no validados [Unvalidated Redirects and Forwards]
www.sgcampus.com.mx @sgcampus
Mitigando Eventualidades de Seguridad
en Web 2.0 + Semántica
OWASP | Inyección de código [Sql Injection]
www.sgcampus.com.mx @sgcampus
Mitigando Eventualidades de Seguridad
en Web 2.0 + Semántica
URL http://___:80/__/___/Paginas/CaracterizacionProductos.aspx?idProducto=279%09and% 091%09%3c%09(select%09case%09when%091%3d1%09then%09(select%09CHECKSUM_AGG(c1.id)% 09from%09syscolumns%09c1%2c%09syscolumns%09c2%2c%09syscolumns%09c3%2c%09syscolumns% 09c4%2c%09syscolumns%09c5%09where%09c1.id%3dc2.id%09and%09c2.id%3dc3.id%09and%09c4.id% 3dc3.id%09and%09c5.id%3dc4.id)%09else%090%09end)
Parametro: idProducto Request: GET /__/__/Paginas/CaracterizacionProductos.aspx?idProducto= 279%09and%091%09%3c%09(select%09case%09when%091%3d1%09then%09(select% 09CHECKSUM_AGG(c1.id)%09from%09syscolumns%09c1%2c%09syscolumns%09c2%2c% 09syscolumns%09c3%2c%09syscolumns%09c4%2c%09syscolumns%09c5%09where%09c1.id% 3dc2.id%09and%09c2.id%3dc3.id%09and%09c4.id%3dc3.id%09and%09c5.id%3dc4.id)% 09else%090%09end) HTTP/1.1
Ejemplo | Inyección de código [Sql Injection]
www.sgcampus.com.mx @sgcampus
Mitigando Eventualidades de Seguridad
en Web 2.0 + Semántica
http://__:7016/__/programas/archivo_excel.jsp?clave=char%2839%29%2b%28SELECT&variable=* Parámetro: clave Request: GET /__/__/programas/archivo_excel.jsp?clave=char%2839%29%2b%28SELECT&variable=* HTTP/1.1 Referer: http://__:...TRUNCATED... Response: HTTP/1.1 500 Internal Server Error Connection: close Date: Tue, 12 Aug 2014 13:28:10 GMT Content-Length: 3219 Content-Type: text/html; charset=UTF-8 X-Powered-By: Servlet/3.0 JSP/2.2 ...TRUNCATED...urier New"><pre>weblogic.jdbc.extensions.PoolLimit SQLException:weblogic.common.resourcepool.ResourceLimitExcept...TRUNCATED...
Ejemplo | Inyección de código [Sql Injection]
www.sgcampus.com.mx @sgcampus
Mitigando Eventualidades de Seguridad
en Web 2.0 + Semántica
API de seguridad [“white list”] que valide los siguientes caracteres
' or " Caracteres – Indicadores String
-- or # Comentarios tipo single-line
/*…*/ Comentarios tipo multiple-line
+ Conector adicional (por espacio en la url)
|| Conector tipo (double pipe)
% Atributo de indicador - wildcard
?Param1=foo&Param2=bar Parámetros en la url
PRINT Comando Transaccional (non)
@variable Variable Local
@@variable Variable Global
waitfor delay '0:0:10‘ Opciones de Time-Delay
Mitigar | Inyección de código [Sql Injection]
www.sgcampus.com.mx @sgcampus
Mitigando Eventualidades de Seguridad
en Web 2.0 + Semántica
OWASP | Secuencia de Comandos en Sitios Cruzados [Cross-Site Scripting (XSS)]
www.sgcampus.com.mx @sgcampus
Mitigando Eventualidades de Seguridad
en Web 2.0 + Semántica
Ejemplo | Secuencia de Comandos en Sitios Cruzados [Cross-Site Scripting (XSS)]
url http://__:7015/__/validaAcceso.jsp?persona=oswaldo.diaz%3c%73%43%72%49%70% 54%3e%61%6c%65%72%74%28%38%38%33%35%37%29%3c%2f%73%43%72%49%70%54%3e&palabra=Pipe2375&min=12:8 Parametro: persona Datos en el post: persona=&palabra= Request: POST /siContabilidad/validaAcceso.jsp?persona= oswaldo.diaz%3c%73%43%72%49%70%54%3e%61%6c%65%72%74%28%38%38%33%35%37%29%3c% 2f%73%43%72%49%70%54%3e&palabra=Pipe2375&min=12:8 HTTP/1.1 Accept: image...TRUNCATED... Response: HTTP/1.1 200 OK Date: Fri, 04 Jul 2014 17:56:39 GMT Content-Length: 512 Content-Type: text/html; charset=UTF-8 X-Powered-By: Servlet/3.0 JSP/2.2 ...TRUNCATED...ción de usuario en el sistema [oswaldo.diaz <sCrIpT>alert(Adivina quien soy)</sCrIpT>] </form> </body> </html>
www.sgcampus.com.mx @sgcampus
Mitigando Eventualidades de Seguridad
en Web 2.0 + Semántica
Ejemplo | Secuencia de Comandos en Sitios Cruzados [Cross-Site Scripting (XSS)]
http://__:80/default_map/query?request=Json&var=geeServerDefs<iMg/SrC=""oNeRrOr=alert(Adivina quien soy)> Request: GET /default_map/query?request=Json&var=geeServerDefs<iMg/SrC=""oNeRrOr=alert(57833)> HTTP/1.1 Referer: http://__...TRUNCATED... Response: HTTP/1.1 200 OK Date: Wed, 25 Jun 2014 13:46:41 GMT Server: Apache Expires: 0 Cache-Control: no-cache Last-Modified: Sat, 01 Jan 2000 12:00:00 GMT Content-Length: 7833 Keep-Alive: timeout=5, max=100 Connection: Keep-Alive Content-Type: text/javascript var geeServerDefs<iMg/SrC=""oNeRrOr=alert(Adivina quien soy)> = { isAuthenticated : false, layers : [ { icon :...TRUNCATED...
www.sgcampus.com.mx @sgcampus
Mitigando Eventualidades de Seguridad
en Web 2.0 + Semántica
Mitigar | Secuencia de Comandos en Sitios Cruzados [Cross-Site Scripting (XSS)]
Para evitar esta eventualidad es necesario la separación de los datos no confiables de contenido activo en el navegador. Validar las variables de [escape] correctamente en el contexto HTML (cuerpo, atributo, JavaScript, CSS, o URL), como lo muestra la siguiente tabla: Hay que tomar en cuenta la validación de entrada de los datos [white list], en la cual se validan caracteres especiales que no permitan la inserción de código malicioso o información irrelevante para el sistema, validar la longitud, el formato y las reglas de negocio de los datos antes de aceptar la entrada.
Tipo de
dato
Contexto Ejemplo de código
String HTML Body <span> Datos no confiables </span>
String Atributos HTML <input type="text" name="fname" value="Datos no confiables">
String Parámetros tipo GET <a href="/site/search?value= Datos no confiables ">clic</a>
String URL, SRC o HREF atributos
no confiables
<a href=" Datos no confiables ">clic</a>
<iframe src=" Datos no confiables " />
String Validaciones CSS <div style="width: Datos no confiables;">Selección</div>
String Variables JavaScript <script>var currentValue=' Datos no confiables ';</script>
<script>algunaFunction(' Datos no confiables ');</script>
HTML HTML Body <div>HTML no confiable</div>
String DOM XSS <script>document.write("Datos no confiables INPUT: " +
document.location.hash);<script/>
www.sgcampus.com.mx @sgcampus
Mitigando Eventualidades de Seguridad
en Web 2.0 + Semántica
Mitigando [SQL injection + Cross-Site Scripting]
Parámetrizar Queries
Secuencias de escape
Admon. [Quotes]
Evitar [Dynamic SQL]
Remover [Functions] sin usar
Desactivar [Active
Scripting]
Usar [HTML5, CSS3]
Encode
Input Validation Error Handling Least Privilege
Entrenamiento, Conciencia, Educación [CIO-TeamDeveloper]
Ciclo de Vida – Seguridad – [Development]
Políticas, Estándares y Mejores Practicas [Coding Standards]
www.sgcampus.com.mx @sgcampus
Mitigando Eventualidades de Seguridad
en Web 2.0 + Semántica
OWASP | Configuración Defectuosa de Seguridad [Security Misconfiguration]
url http://__:80/_/default.aspx Request: GET /default.aspx HTTP/1.1 Accept: image/jpeg, image/gif, image/pjpeg, application/x-ms-application, User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E) Response: HTTP/1.1 200 OK Cache-Control: private Content-Type: text/html; charset=Windows-1252 Vary: Accept-Encoding Server: Microsoft-IIS/7.5 X-AspNet-Version: 4.0.30319 X-Powered-By: ASP.NET Date: Mon, 26 May 2014 19:35:15 GMT Content-Length: 15287 ...TRUNCATED...rce=10.1.37.X,49777;Initial catalog=CuadrosEstTema;User id=CuadrosEstTema.consulta;Pwd=ConCua31;" /> <input type="hidden" name="Lc_sq...TRUNCATED...
www.sgcampus.com.mx @sgcampus
Mitigando Eventualidades de Seguridad
en Web 2.0 + Semántica
Mitigar | Configuración Defectuosa de Seguridad [Security Misconfiguration]
.NET JAVA try {
System.out.println(" Argumento ");
out = new PrintWriter(new
FileWriter(“Bitacora.xml"));
……
} catch (Exception e) {
System.err.println("Ocurrió un error!”);
} catch (IOException e) {
System.err.println("insertar excepción");
} finally {
if (out != null) {
out.close();
}
}
public class ___ {
public static void Main() {
try {
StreamReader sr =
File.OpenText(“Bitacora.xml");
Console.WriteLine("Reading
line {0}", sr.ReadLine());
}
catch(Exception e) {
Console.WriteLine("Ocurrió
un error”);
logerror(“Tipo de error: “, e);
}
}
}
El seudocódigo muestra una validación simple para atrapar eventualidades y controlar la
información que se le presenta al usuario final
www.sgcampus.com.mx @sgcampus
Mitigando Eventualidades de Seguridad
en Web 2.0 + Semántica
Mitigar | Configuración Defectuosa de Seguridad [Security Misconfiguration]
http://www.w3schools.com/tags/ref_httpmessages.asp
HTTP Protocol ErrorCodes
Http CustomErrors 404, 403 y 500 <customErrors mode="RemoteOnly" defaultRedirect="AppErrors.aspx"> <error statusCode="404" redirect="NoSuchPage.aspx"/> <error statusCode="403" redirect="NoAccessAllowed.aspx"/> <error statusCode="500" redirect="RequestNotAllowed.aspx"/> </customErrors>
www.sgcampus.com.mx @sgcampus
Mitigando Eventualidades de Seguridad
en Web 2.0 + Semántica
OWASP | Falsificación de Peticiones en Sitios Cruzados [Cross-Site Request Forgery (CSRF)]
www.sgcampus.com.mx @sgcampus
Mitigando Eventualidades de Seguridad
en Web 2.0 + Semántica
Mitigar | Falsificación de Peticiones en Sitios Cruzados [Cross-Site Request Forgery (CSRF)]
Hay que verificar los vínculos y formas que carecen de un
“token”, así como también forzar a que el usuario final
demuestre que es humano y no un robot de ataque a este
concepto se les llama [CAPTCHA - Completely Automated Public Turing
test to tell Computers and Humans Apart (Prueba de Turing pública y
automática para diferenciar máquinas y humanos)]
http://www.google.com/recaptcha
www.sgcampus.com.mx @sgcampus
Mitigando Eventualidades de Seguridad
en Web 2.0 + Semántica
Mitigar | Falsificación de Peticiones en Sitios Cruzados [Cross-Site Request Forgery (CSRF)]
public CaptchaHelper VerifyCaptcha() { try { using (var wb = new WebClient()) { var data = new NameValueCollection(); data["privatekey"] = this._privatekey; data["remoteip"] = this.remoteip; data["challenge"] = this.challenge; data["response"] = this.response; var response = wb.UploadValues("http://www.google.com/recaptcha/api/verify", "POST", data); this.result = System.Text.Encoding.UTF8.GetString(response).Split(new string[] { "\n" }, StringSplitOptions.RemoveEmptyEntries); } return this; } catch (Exception e) { throw e; }
www.sgcampus.com.mx @sgcampus
Mitigando Eventualidades de Seguridad
en Web 2.0 + Semántica
Vulnerabilidades 2014 [Criticas]
www.sgcampus.com.mx @sgcampus
Mitigando Eventualidades de Seguridad
en Web 2.0 + Semántica
Estrategia - Web Semántica
www.sgcampus.com.mx @sgcampus
Mitigando Eventualidades de Seguridad
en Web 2.0 + Semántica
Estrategia - Web Semántica
www.sgcampus.com.mx @sgcampus
Mitigando Eventualidades de Seguridad
en Web 2.0 + Semántica
Software | Herramientas
www.sgcampus.com.mx @sgcampus
Mitigando Eventualidades de Seguridad
en Web 2.0 + Semántica
WorkFlow - Agiles
www.sgcampus.com.mx @sgcampus
Mitigando Eventualidades de Seguridad
en Web 2.0 + Semántica
WorkFlow
www.sgcampus.com.mx @sgcampus
Mitigando Eventualidades de Seguridad
en Web 2.0 + Semántica
OWASP | SAMM Software Assurance Maturity Model
Gobernanza • Estrategias y Métricas • Políticas y Cumplimientos • Orientación y Educación
Construcción
• Evaluación de amenazas • Requerimientos de seguridad • Arquitectura Segura
Verificación
• Revisión de Diseño • Revisión de Código • Pruebas de Seguridad
Publicación
• Administración de vulnerabilidades • Medio Ambiente (Hardening) • Estrategia en la operación
Secure Development LifeCycles (SDLC)
https://www.owasp.org/index.php/Category:OWASP_Enterprise_Security_API
www.sgcampus.com.mx @sgcampus
Mitigando Eventualidades de Seguridad
en Web 2.0 + Semántica
Estrategias de Infraestructura
www.sgcampus.com.mx @sgcampus
Mitigando Eventualidades de Seguridad
en Web 2.0 + Semántica
1. Pure: Css framework 2. Bootstrap 3 3. YAML 4. IVORY 5. Cascade Framework 6. Cascade Framework Light 7. INK 8. Foundation 5 9. Kube 10.Skeleton
11. Gumby 2 12. Fluidable 13. Metro UI CSS 2.0 14. Less Framework 4 15. KNACSS 16. Groundwork CSS 2 17. Unsemantic 18. Responsive Boilerplate 19. Inuit.css 20. Kickoff
Arquitectura Responsiva
www.sgcampus.com.mx @sgcampus
Mitigando Eventualidades de Seguridad
en Web 2.0 + Semántica
> ¡Preguntas e Investigaciones!
oswaldo.diaz@inegi.org.mx : Especialidad ITIL ver. 2, - Investigador + Arquitecto TI, experiencia Ingeniería de Sistemas [740 Proyectos Web (año 2005-2014)], en QA (Quality Assurance) + Risk Management + Seguridad {Ethical Hacking - Web 2.0 + Semántica}.
Agradecimientos de Bibliografía Arbitrada: Owasp.org Symantec.com Google.com w3c.org Ipviking.com Varecode.com
@eOswaldOd
top related