View
216
Download
0
Category
Preview:
Citation preview
8/19/2019 Puntos Debiles Practicas Web
1/45
Puntos débilesde prácticascomunes en
desarrollos Web
Gunnar Wolf
Panorama
histórico
El ciclo de vidade un desarrollo
«Bundling»
Minicación
Fin
Puntos débiles de prácticas comunesen desarrollos Web
Gunnar Wolf
Desarrollador del proyecto DebianInstituto de Investigaciones Económicas UNAM
Facultad de Ingeniería UNAM
Free SecurityTuxtepec, Oaxaca
Marzo 2016
http://find/
8/19/2019 Puntos Debiles Practicas Web
2/45
Puntos débilesde prácticascomunes en
desarrollos Web
Gunnar Wolf
Panorama
histórico
El ciclo de vidade un desarrollo
«Bundling»
Minicación
Fin
Contenidos
1 Panorama histórico
2 El ciclo de vida de un desarrollo
3 «Bundling»
4 Minicación
5 Fin
http://goforward/http://find/http://goback/
8/19/2019 Puntos Debiles Practicas Web
3/45
Puntos débilesde prácticascomunes en
desarrollos Web
Gunnar Wolf
Panorama
histórico
El ciclo de vidade un desarrollo
«Bundling»
Minicación
Fin
Antes de comenzar
Daremos un breve recorrido por los últimos 25 años ddesarrollo de la Web, para apreciar cómo ha ido
incrementando la complejidad del entorno.
Particularmente, en cómo hay cada vez mayor diferencial de impedancia entre desarrolladores, administradores de
sistemas e integradores.
Y si somos ambiciosos, apuntaremos a su disminució
http://find/
8/19/2019 Puntos Debiles Practicas Web
4/45
Puntos débilesde prácticascomunes en
desarrollos Web
Gunnar Wolf
Panorama
histórico
El ciclo de vidade un desarrollo
«Bundling»
Minicación
Fin
HTTP y la World Wide Web
Tim Berners-Lee, CERN, 1989Primer navegador, 1990
Sistema concebido para compartir documentos
estáticos interrelacionados (hipertexto→ 1950s)Esquema originalmente orientado al textoEntorno académico
Mosaic Web Browser (1993): Primer navegador qu
presenta junto texto e imágenes1995: Internet para uso personal y comercial→¡Boom!
http://find/
8/19/2019 Puntos Debiles Practicas Web
5/45
Puntos débilesde prácticascomunes en
desarrollos Web
Gunnar Wolf
Panorama
histórico
El ciclo de vidade un desarrollo
«Bundling»
Minicación
Fin
Contenido dinámico: CGI
Wikimedia Commons
1993: El National Center forSupercomputing Applications public
la especicación para hacer llamadaa ejecutables desde un servidor WebPaso de parámetros al ambiente Etiquetas para formularios
Nacimiento del contenido dinámicoCGI + DBMS = CMS
. . . Lento y plagado de problemas deseguridad
https://en.wikipedia.org/wiki/File:CGIlogo.gifhttps://en.wikipedia.org/wiki/File:CGIlogo.gifhttp://find/
8/19/2019 Puntos Debiles Practicas Web
6/45
Puntos débilesde prácticascomunes en
desarrollos Web
Gunnar Wolf
Panorama
histórico
El ciclo de vidade un desarrollo
«Bundling»
Minicación
Fin
Servidores de aplicación
Servidor Web y servidor de aplicación se comunicpor un socket
Coldfusion, Java Servlets, mod_perl, FastCGI. . .Separación de responsabilidades
Permite al mismo servidor ejecutar código bajodiferentes permisos del sistemaDesacopla, reduce supercie de ataque
Mayor rapidez de respuestaEvita la ejecución de un proceso por solicitud
. . . Invitación a la complejidad
http://find/
8/19/2019 Puntos Debiles Practicas Web
7/45
Puntos débilesde prácticascomunes en
desarrollos Web
Gunnar Wolf
Panorama
históricoEl ciclo de vidade un desarrollo
«Bundling»
Minicación
Fin
Marcos de desarrollo Web (frameworks )
Ya teniendo la infraestructura básica de un servidode aplicación, no tardaron en aparecer losframeworks
Cientos de distintos frameworks, varios por lenguajeConocimiento no trasladable entre lenguajes,incluso entre distintos marcos
Ofrecen al programador:Integración entre componentes
Mayor automatizaciónAbstracciónMapeadores objeto-relacionalesPersistenciaVelocidad de desarrollo. . .
http://find/
8/19/2019 Puntos Debiles Practicas Web
8/45
Puntos débilesde prácticascomunes en
desarrollos Web
Gunnar Wolf
Panorama
históricoEl ciclo de vidade un desarrollo
«Bundling»
Minicación
Fin
Comunidades de creadores
Prácticamente todos los marcos han creadocomunidades de autores de código
Se nutren de ellasLe dan mayor dinamismo al marcoGeneran módulos que agregan funcionalidad
Generan arquitecturas de gestión de módulos
http://find/http://goback/
8/19/2019 Puntos Debiles Practicas Web
9/45
Puntos débilesde prácticascomunes en
desarrollos Web
Gunnar Wolf
Panorama
históricoEl ciclo de vidade un desarrollo
«Bundling»
Minicación
Fin
XMLHttpRequest / AJAX
Javascript deja de ser el patito feo para ser parte delengranaje fundamental
Por n, sitios Web plenamente dinámicosActualización parcial de las páginas
Explotación del DOMMenor tiempo de satisfacción al click Menor carga al servidor
No requiere regenerar los elementos constantesMuchos nuevos frameworks y bibliotecas paraaprovechar esta nueva funcionalidad
http://find/
8/19/2019 Puntos Debiles Practicas Web
10/45
Puntos débilesde prácticascomunes en
desarrollos Web
Gunnar Wolf
Panorama
históricoEl ciclo de vidade un desarrollo
«Bundling»
Minicación
Fin
El lado doloroso de AJAX
Pérdida del URL como descriptor del contenido
Contenido oculto que requiere navegaciónNuevas categorías de vulnerabilidades
XSS, CSRF, inyección de encabezados, nuevasposibilidades para MITM. . .
Muchos más puntos de costura
para hacer unanálisis de riesgos al trasladar entidades entre capas
http://find/
8/19/2019 Puntos Debiles Practicas Web
11/45
Puntos débilesde prácticascomunes en
desarrollos Web
Gunnar Wolf
Panorama
históricoEl ciclo de vidade un desarrollo
«Bundling»
Minicación
Fin
Flash
Si no tienes nada bueno que decir de algo. . .No digas nada
A algunos les gusta. . .
Por suerte está camino a la desaparición. . .Lentamente. . .
http://find/
8/19/2019 Puntos Debiles Practicas Web
12/45
Puntos débilesde prácticascomunes en
desarrollos Web
Gunnar Wolf
Panorama
históricoEl ciclo de vidade un desarrollo
«Bundling»
Minicación
Fin
Flash
Si no tienes nada bueno que decir de algo. . .No digas nada
A algunos les gusta. . .
Por suerte está camino a la desaparición. . .Lentamente. . .
http://find/
8/19/2019 Puntos Debiles Practicas Web
13/45
Puntos débilesde prácticascomunes en
desarrollos Web
Gunnar Wolf
Panorama
históricoEl ciclo de vidade un desarrollo
«Bundling»
Minicación
Fin
Contenidos
1 Panorama histórico
2 El ciclo de vida de un desarrollo
3 «Bundling»
4 Minicación
5 Fin
http://find/
8/19/2019 Puntos Debiles Practicas Web
14/45
Puntos débilesde prácticascomunes en
desarrollos Web
Gunnar Wolf
Panorama
históricoEl ciclo de vidade un desarrollo
«Bundling»
Minicación
Fin
Sobrecaracterizando
Los caracteres reseñados en esta secciónson cticios (y pueden estar exagerados).
Cualquier parecido con la realidad esmera coincidencia.
http://find/http://goback/
8/19/2019 Puntos Debiles Practicas Web
15/45
Puntos débilesde prácticascomunes en
desarrollos Web
Gunnar Wolf
Panorama
históricoEl ciclo de vidade un desarrollo
«Bundling»
Minicación
Fin
La visión del desarrollador (1)
Flickr: aashehadeh
Resolver las necesidades del usuaEmpleamos las últimas versiones
de todo el stack Mejorando usabilidadAumentando funcionalidadLa versión para la cual el autormantiene soporte
Única prioridad: La entrega (y, porende, un usuario contento ysatisfecho con lo pactado)
https://www.flickr.com/photos/73044296@N00/8366351491https://www.flickr.com/photos/73044296@N00/8366351491http://find/http://goback/
8/19/2019 Puntos Debiles Practicas Web
16/45
Puntos débilesde prácticascomunes en
desarrollos Web
Gunnar Wolf
Panorama
históricoEl ciclo de vidade un desarrollo
«Bundling»
Minicación
Fin
La visión del desarrollador (2)
MantenibilidadSi se solicitan adecuaciones, se dará mantenimientoal sistemaMientras tanto, si funciona, no lo arregles
DespliegueDocumentación básica. . . Con suerte cae en el ámbito deladministrador. . .
SeguridadEmplear bibliotecas con buena trayectoriademostradaEs buena práctica, pero. . . ¿Hay procedimientos
para reaccionar ante amenazas imprevistas?
http://find/
8/19/2019 Puntos Debiles Practicas Web
17/45
Puntos débilesde prácticascomunes en
desarrollos Web
Gunnar Wolf
Panorama
históricoEl ciclo de vidade un desarrollo
«Bundling»
Minicación
Fin
La visión del administrador de sistemas (1
Neowin;
Flickr: Aaron Muszalski
Mantener a todos los sistemas yaexistentes funcionando en conjunt
Emplear el menor número posiblede versiones distintasDe ser posible, provistas ygestionadas por la misma
distribución (al menos en el casode Linux)Principal prioridad: No disrupciónde otros servicios
http://www.neowin.net/news/happy-sysadmin-day-2https://www.flickr.com/photos/sfslim/9575455728https://www.flickr.com/photos/sfslim/9575455728http://www.neowin.net/news/happy-sysadmin-day-2http://find/
8/19/2019 Puntos Debiles Practicas Web
18/45
8/19/2019 Puntos Debiles Practicas Web
19/45
Puntos débilesde prácticascomunes en
desarrollos Web
Gunnar Wolf
Panorama
históricoEl ciclo de vidade un desarrollo
«Bundling»
Minicación
Fin
¡DevOps al rescate!
Wikipedia: Scrumban;
Flickr: Paul Downey
Popularización de los Development and Operations
¡Metodología ágil!La tecnología al rescate
Pruebas extensivasIntegración continua
Empleo extensivo devirtualización/contenedores parael despliegue: Una máquinavirtual por aplicación
https://en.wikipedia.org/wiki/Scrumbanhttps://www.flickr.com/photos/psd/8634021085https://www.flickr.com/photos/psd/8634021085https://en.wikipedia.org/wiki/Scrumbanhttp://find/
8/19/2019 Puntos Debiles Practicas Web
20/45
Puntos débilesde prácticascomunes en
desarrollos Web
Gunnar Wolf
Panoramahistórico
El ciclo de vidade un desarrollo
«Bundling»
Minicación
Fin
DevOps: Crónica de un fracaso anunciado
Enfoque en la separación entre aplicaciones
Demasiadas máquinas virtuales→ demasiadasinstalaciones independientes a mantenerActualizaciones de seguridad: Siguen rompiendo mis aplicaciones
Resulta más fácil probar antes de parcharResulta más difcil corregir el daño
http://find/
8/19/2019 Puntos Debiles Practicas Web
21/45
Puntos débilesde prácticascomunes en
desarrollos Web
Gunnar Wolf
Panoramahistórico
El ciclo de vidade un desarrollo
«Bundling»
Minicación
Fin
Conforme los sistemas se vuelven legacy
Ashminder Ubhi
Las mejores prácticas actualesdisminuyen la probabilidad de quelos sistemas tengan una larga y
fructífera sobrevida¿Fail early, fail often?Desarrollos van, desarrollos viene
Conforme más ágil la cultura deun lenguaje de programación,mayor rotación entre susbibliotecas consentidas
¿Tendrá soporte libfoobardentro de dos años? ¿Dentrode cinco?
https://ashminderubhi.wordpress.com/2012/09/11/flash-storage-makes-legacy-applications-look-good/https://ashminderubhi.wordpress.com/2012/09/11/flash-storage-makes-legacy-applications-look-good/http://find/
8/19/2019 Puntos Debiles Practicas Web
22/45
Puntos débilesde prácticascomunes en
desarrollos Web
Gunnar Wolf
Panoramahistórico
El ciclo de vidade un desarrollo
«Bundling»
Minicación
Fin
Buscando la rama estable
Gerald England;
Public Domain Images;Wiki edia: Glaze ice
Como administrador, tiendo a preferla rama estable de mi sistemaoperativo
Muchos sistemas incluyen a decenas de miles de aplicaciones ybibliotecas con soporte a largoplazo (2-7 años típicamente)
Como desarrollador, puedo buscaralejarme lo menos posible de la ramaestable
Me limita un poco, sí, pero brindagarantías muy importantes
http://www.geograph.org.uk/photo/2816765http://www.public-domain-image.com/free-images/flora-plants/trees/intertwined-branches-of-a-large-tree/attachment/intertwined-branches-of-a-large-treehttps://en.wikipedia.org/wiki/Glaze_icehttps://en.wikipedia.org/wiki/Glaze_icehttp://www.public-domain-image.com/free-images/flora-plants/trees/intertwined-branches-of-a-large-tree/attachment/intertwined-branches-of-a-large-treehttp://www.geograph.org.uk/photo/2816765http://find/
8/19/2019 Puntos Debiles Practicas Web
23/45
Puntos débilesde prácticascomunes en
desarrollos Web
Gunnar Wolf
Panoramahistórico
El ciclo de vidade un desarrollo
«Bundling»
Minicación
Fin
Dos casos particulares
A continuación, se abordan dos casos particulares de
prácticas cuestionables muy frecuentemente encontradasen desarrollos Web: El bundling y la minicación.
Ambas se conectan con lo aquí presentado por enfatizen lo inmediato y desestimar al largo plazo.
http://find/http://goback/
8/19/2019 Puntos Debiles Practicas Web
24/45
Puntos débilesde prácticascomunes en
desarrollos Web
Gunnar Wolf
Panoramahistórico
El ciclo de vidade un desarrollo
«Bundling»
Minicación
Fin
Contenidos
1 Panorama histórico
2 El ciclo de vida de un desarrollo3 «Bundling»
4 Minicación5 Fin
http://find/
8/19/2019 Puntos Debiles Practicas Web
25/45
Puntos débilesde prácticascomunes en
desarrollos Web
Gunnar Wolf
Panoramahistórico
El ciclo de vidade un desarrollo
«Bundling»
Minicación
Fin
Bundling
Wikipedia: Red tape
https://en.wikipedia.org/wiki/Red_tapehttps://en.wikipedia.org/wiki/Red_tapehttp://find/
8/19/2019 Puntos Debiles Practicas Web
26/45
Puntos débilesde prácticascomunes en
desarrollos Web
Gunnar Wolf
Panoramahistórico
El ciclo de vidade un desarrollo
«Bundling»
Minicación
Fin
Bundling
Wiktionary: Feuerholz
https://de.wiktionary.org/wiki/Feuerholzhttps://de.wiktionary.org/wiki/Feuerholzhttp://find/
8/19/2019 Puntos Debiles Practicas Web
27/45
Puntos débilesde prácticascomunes en
desarrollos Web
Gunnar Wolf
Panoramahistórico
El ciclo de vidade un desarrollo
«Bundling»
Minicación
Fin
Presentación del problema
En el desarrollo de mi proyecto, requiero una grancantidad de bibliotecas como dependenciaDicultad de especicar expresamente mis
dependencias como requisitos de construcciónDiferentes lenguajesComportamientos especícosVersiones particulares de API. . .
Mención horroríca: bundling + modicaciónAdemás de emplear una biblioteca, requieromodicarla o extenderla para que elcomportamiento sea el que requiero
http://find/
8/19/2019 Puntos Debiles Practicas Web
28/45
Puntos débilesde prácticascomunes en
desarrollos Web
Gunnar Wolf
Panoramahistórico
El ciclo de vidade un desarrollo
«Bundling»
Minicación
Fin
¿Y qué es bundling ?
Distribuir una copia entera de un proyecto(programa, biblioteca, . . . ) dentro de otro
En vez de declarar una dependencia externa
Facilita el despliegue, la convivencia de proyectoscon dependencia a distintas versiones del mismosoftwarePermite modicar el comportamiento de unabiblioteca base
Referencia de lectura: Fedora opens up to building (LWN oct-2015)
¿Por qué es un problema? ¿Qué debería
https://lwn.net/Articles/660429/https://lwn.net/Articles/660429/http://find/
8/19/2019 Puntos Debiles Practicas Web
29/45
Puntos débilesde prácticascomunes en
desarrollos Web
Gunnar Wolf
Panoramahistórico
El ciclo de vidade un desarrollo
«Bundling»
Minicación
Fin
¿Por qué es un problema? ¿Qué deberíahacer?
Abre grandes problemas en mantenibilidad,seguridadDiferentes versiones de la misma biblioteca entreaplicaciones
Desperdicio de espacioPesadilla administrativa para corrección devulnerabilidades
Tira por la borda todo compromiso LTS de ladistribuciónDicultan compartir datos comunes entreaplicaciones
http://find/
8/19/2019 Puntos Debiles Practicas Web
30/45
Puntos débilesde prácticascomunes en
desarrollos Web
Gunnar Wolf
Panoramahistórico
El ciclo de vidade un desarrollo
«Bundling»
Minicación
Fin
El coco de los proyectos grandes
Muchos proyectos han evaluado lasopciones, y decidido incluir decenasde bibliotecas
Pero para distribuir en una versiónestable, se vuelve un dolor decabeza burocráticoA modo de ejemplo, Drupal:Various asset (JavaScript) libraries have to be updated to a (minied)stable release prior to 8.0.0
Desgaste burocrático derivadode mantener al día todos los
proyectos incluidos
https://www.drupal.org/node/2203431https://www.drupal.org/node/2203431https://www.drupal.org/node/2203431https://www.drupal.org/node/2203431https://www.drupal.org/node/2203431https://www.drupal.org/node/2203431https://www.drupal.org/node/2203431https://www.drupal.org/node/2203431http://find/
8/19/2019 Puntos Debiles Practicas Web
31/45
Puntos débilesde prácticascomunes en
desarrollos Web
Gunnar Wolf
Panoramahistórico
El ciclo de vidade un desarrollo
«Bundling»
Minicación
Fin
El coco de los proyectos grandes
¿Y tras la liberación de su siguiente versión estable?
La lista dejará de ser mantenidaEl seguimiento de cada versión de cada proyecto sevuelve responsabilidad de los desarrolladores
De otro modo, le estarían endosando la factura alusuario nal. . . Que muchas veces no sabría o no podría hacerlo
í d l ó d b
http://find/http://goback/
8/19/2019 Puntos Debiles Practicas Web
32/45
Puntos débilesde prácticascomunes en
desarrollos Web
Gunnar Wolf
Panoramahistórico
El ciclo de vidade un desarrollo
«Bundling»
Minicación
Fin
Una vía de solución: Las distribuciones
En el mundo Linux, las distribuciones mantienencolectivamente a decenas de miles de paquetes
Dependencias resueltas, probadas, coherentes
Ciclos de liberaciones estables acorde a cada unaLiberaciones continuas (Gentoo, Arch)Ciclos cortos: 6 meses (Fedora, Ubuntu)Ciclos medianos: 2 años (Debian, RedHat, SuSE)Ciclos largos: 5 años (Debian+LTS, Ubuntu LTS,RedHat)
Desarrollar sobre la última versión estableO dependiendo del proyecto, sobre la pre-establebuscando empatar ciclos
C id
http://find/
8/19/2019 Puntos Debiles Practicas Web
33/45
Puntos débilesde prácticascomunes en
desarrollos Web
Gunnar Wolf
Panoramahistórico
El ciclo de vidade un desarrollo
«Bundling»
Minicación
Fin
Contenidos
1 Panorama histórico
2 El ciclo de vida de un desarrollo3 «Bundling»
4 Minicación
5 Fin
Mi i ió
http://find/
8/19/2019 Puntos Debiles Practicas Web
34/45
Puntos débilesde prácticascomunes en
desarrollos Web
Gunnar Wolf
Panoramahistórico
El ciclo de vidade un desarrollo
«Bundling»
Minicación
Fin
Minicación
Mi i ió
http://find/
8/19/2019 Puntos Debiles Practicas Web
35/45
Puntos débilesde prácticascomunes en
desarrollos Web
Gunnar Wolf
Panoramahistórico
El ciclo de vidade un desarrollo
«Bundling»
Minicación
Fin
Minicación
Práctica de procesar archivos JavaScript previos aenviarlos al usuario para reducir su tamaño
Eliminando información redundante (espacio en
blanco, comentarios)Recortando nombres de variables, funciones, clases,tanto como sea posibleSin alterar su funcionalidad
¿Nos vas a salir con que esto también es malo?
Mi i ió
http://find/
8/19/2019 Puntos Debiles Practicas Web
36/45
Puntos débilesde prácticascomunes en
desarrollos Web
Gunnar Wolf
Panoramahistórico
El ciclo de vidade un desarrollo
«Bundling»
Minicación
Fin
Minicación
Sí.
Mejoría insucienteEntorpece depuraciónPuede introducir comportamientos no deseados
A continuación, un experimento meramente indicativorealizado sin rigor cientíco
http://find/
8/19/2019 Puntos Debiles Practicas Web
37/45
Midiendo las ventajas
8/19/2019 Puntos Debiles Practicas Web
38/45
Puntos débilesde prácticascomunes en
desarrollos Web
Gunnar Wolf
Panoramahistórico
El ciclo de vidade un desarrollo
«Bundling»
Minicación
Fin
Midiendo las ventajas
Transferencia de un archivo JS sin minicar (16K, jquery.ui.autocomplete.js):Red doméstica: 1.214s a 1.227s
Promedio 1.2217s
Red empresarial: 0.253s a 0.335sPromedio 0.3129sMismo archivo minicado (8.6K):
Red doméstica: 1.140s a 1.148sPromedio 1.1423s
Red empresarial: 0.259s a 0.268sPromedio 0.2633s
Ganancia:Doméstica 16 %
Empresarial 6 %
Aparentemente
http://find/
8/19/2019 Puntos Debiles Practicas Web
39/45
Puntos débilesde prácticascomunes en
desarrollos Web
Gunnar Wolf
Panoramahistórico
El ciclo de vidade un desarrollo
«Bundling»
Minicación
Fin
Aparentemente. . .
Un 16% de ahorro para mis usuarios DSL. . . Suena a buen ahorro, ¿no?
Sí, pero...
Patrones de solicitud en aplicaciones¿Cuántas veces se solicitan los recursos JavaScript?Siendo contenido estático, persisten en el caché del
usuario¿Y el Javascript generado dinámicamente?Si se elige generación dinámica para facilitar laminimización, se abren otros varios frentes (quemuy pronto abordaremos)
¿Y la compresión?
http://find/
8/19/2019 Puntos Debiles Practicas Web
40/45
Puntos débilesde prácticascomunes en
desarrollos Web
Gunnar Wolf
Panoramahistórico
El ciclo de vidade un desarrollo
«Bundling»
Minicación
Fin
¿Y la compresión?
Los navegadores actuales manejan compresión gzipde forma transparenteEl mismo archivo se comprime a 4.55KB
Minicado se comprime a 2.6KB; la diferencia de1.9KB ya no es signicativa para la transferencia
Nuestro servidor Web puede congurarse paracomprimir todo el contenido al vuelo
O se puede pre-comprimir, para ahorrar tiempo deCPUEl algoritmo es poco pesado
Entorpece depuración
http://find/
8/19/2019 Puntos Debiles Practicas Web
41/45
Puntos débilesde prácticascomunes en
desarrollos Web
Gunnar Wolf
Panoramahistórico
El ciclo de vidade un desarrollo
«Bundling»
Minicación
Fin
Entorpece depuración
Como desarrolladores, contar con una consola deJavaScript para depurar el comportamiento denuestro desarrollo es fundamental
Podemos manejar entorno de desarrollo (sinminicar), entorno de producción (minicado). . . ¿Y los bugs que sólo se presenten enproducción?. . . ¿Y los usuarios que quieran escudriñar nuestro
comportamiento?Puede que se busque ocultar expresamente. . .Pero típicamente se emplea minicación sobrebibliotecas (jQuery, Farbtastic, CKEditor, etc.)que no tiene sentido alguno ofuscar
Comportamientos no deseados
http://find/
8/19/2019 Puntos Debiles Practicas Web
42/45
Puntos débilesde prácticascomunes en
desarrollos Web
Gunnar Wolf
Panoramahistórico
El ciclo de vidade un desarrollo
«Bundling»
Minicación
Fin
Comportamientos no deseados
Un minicador es en realidad un tipo particular decompilador
Lenguaje fuente y objetivo son igualesTranspilador — Algunos convierten entre versiones
de JavaScriptUglifyJS: ES6 → ES5 por compatibilidad conclientes.
Incluso si no hay transpilación, hay compilaciónLexeo , parseo , reescritura de símbolos locales,reducción lógica, eliminación de código muerto,funciones en línea...Hay pruebas de concepto que explotan errores deinterpretación de ciertos minicadores /compiladores
Referencias a ejemplos de estos
http://find/
8/19/2019 Puntos Debiles Practicas Web
43/45
Puntos débilesde prácticascomunes en
desarrollos Web
Gunnar Wolf
Panoramahistórico
El ciclo de vidade un desarrollo
«Bundling»
Minicación
Fin
comportamientos
Backdooring your javascript using minier bugs(Yan / @bcrypt ago-2015)Discusión relacionada en Hacker News
Hilo de correo en debian-devel iniciando en mensajede Simon Josefsson (ago-2015)
Respecto a compiladores en general:
PoC||GTFO (Travis Goodspeed 2013-2015)Towards optimization-safe systems: Analizing theimpact of undened behavior (Xi Wang et. al.nov-2013)
Contenidos
https://zyan.scripts.mit.edu/blog/backdooring-js/https://news.ycombinator.com/item?id=10146157https://lists.debian.org/msgid-search/87wpwk7vgy.fsf@latte.josefsson.orghttps://lists.debian.org/msgid-search/87wpwk7vgy.fsf@latte.josefsson.orghttps://www.alchemistowl.org/pocorgtfo/https://pdos.csail.mit.edu/papers/stack:sosp13.pdfhttps://pdos.csail.mit.edu/papers/stack:sosp13.pdfhttps://pdos.csail.mit.edu/papers/stack:sosp13.pdfhttps://pdos.csail.mit.edu/papers/stack:sosp13.pdfhttps://www.alchemistowl.org/pocorgtfo/https://lists.debian.org/msgid-search/87wpwk7vgy.fsf@latte.josefsson.orghttps://lists.debian.org/msgid-search/87wpwk7vgy.fsf@latte.josefsson.orghttps://news.ycombinator.com/item?id=10146157https://zyan.scripts.mit.edu/blog/backdooring-js/http://find/
8/19/2019 Puntos Debiles Practicas Web
44/45
Puntos débilesde prácticascomunes en
desarrollos Web
Gunnar Wolf
Panoramahistórico
El ciclo de vidade un desarrollo
«Bundling»
Minicación
Fin
Contenidos
1 Panorama histórico
2 El ciclo de vida de un desarrollo
3 «Bundling»
4 Minicación
5 Fin
Hemos terminado
http://find/
8/19/2019 Puntos Debiles Practicas Web
45/45
Puntos débilesde prácticascomunes en
desarrollos Web
Gunnar Wolf
Panoramahistórico
El ciclo de vidade un desarrollo
«Bundling»
Minicación
Fin
Hemos terminado.
¿Dudas o comentarios?
Gunnar Wolf
gwolf@debian.orghttp://gwolf.org/
http://gwolf.org/http://gwolf.org/http://find/Recommended