<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Juan Carlos Isaza</title>
    <description>The latest articles on DEV Community by Juan Carlos Isaza (@isazajuancarlos).</description>
    <link>https://dev.to/isazajuancarlos</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4059817%2F1ee73c68-4e15-4926-951a-2c512db40d71.png</url>
      <title>DEV Community: Juan Carlos Isaza</title>
      <link>https://dev.to/isazajuancarlos</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/isazajuancarlos"/>
    <language>en</language>
    <item>
      <title>El mismo formato de texto no garantiza la misma firma</title>
      <dc:creator>Juan Carlos Isaza</dc:creator>
      <pubDate>Sun, 04 Oct 2026 18:32:17 +0000</pubDate>
      <link>https://dev.to/isazajuancarlos/el-mismo-formato-de-texto-no-garantiza-la-misma-firma-1gk4</link>
      <guid>https://dev.to/isazajuancarlos/el-mismo-formato-de-texto-no-garantiza-la-misma-firma-1gk4</guid>
      <description>&lt;p&gt;Teníamos la misma sesión escrita dos veces —una copia en cada aplicación— y una librería común para dejar de duplicarla. El token se ve igual en las tres: &lt;code&gt;id|version|caducidad|firma&lt;/code&gt;, un HMAC-SHA256 sobre la carga.&lt;/p&gt;

&lt;p&gt;La tentación era obvia: «mismo formato de tres campos, migrar es transparente, las cookies vivas siguen valiendo». Lo dábamos por hecho.&lt;/p&gt;

&lt;p&gt;Antes de tocar nada computamos la firma de una misma carga con las dos implementaciones y la comparamos contra el &lt;strong&gt;vector fijo&lt;/strong&gt; real de la librería —un token congelado, pegado como literal en las pruebas justamente para esto—. No coincidían.&lt;/p&gt;

&lt;p&gt;La causa no estaba en el formato. La librería, al endurecerse, había empezado a anteponer la &lt;strong&gt;longitud&lt;/strong&gt; del dominio de firma al mensaje HMAC (un arreglo contra una ambigüedad de prefijo). Con el dominio vacío de una sesión normal eso ya cambia el mensaje: una firma es &lt;code&gt;HMAC(carga)&lt;/code&gt; y la otra &lt;code&gt;HMAC([8 bytes cero]‖carga)&lt;/code&gt;. Mismo texto, firma distinta.&lt;/p&gt;

&lt;p&gt;Consecuencia: migrar a la librería común cierra la sesión de todos los usuarios en el despliegue. No es un bug —la librería es más estricta, no menos— pero es una interrupción real que se decide y se anuncia, no que se descubre en producción.&lt;/p&gt;

&lt;p&gt;La lección de método: una prueba de ida y vuelta —emitir y verificar con el mismo binario— mide el códec contra sí mismo. Pasa en verde aunque cambies el separador, el orden de los campos o el motor de base64… y cerraría la sesión de todo el mundo sin un solo test en rojo. Lo único que discrimina es un vector fijo: un token real congelado, verificado por el binario de hoy. Si se pone rojo, lo guardado dejó de leerse —y eso se decide, no se regenera—.&lt;/p&gt;

&lt;p&gt;La regla que nos llevamos: la compatibilidad de una firma no se lee del formato. Se mide contra un artefacto congelado, antes de afirmar «compatible con lo ya emitido».&lt;/p&gt;

</description>
      <category>python</category>
      <category>programming</category>
    </item>
    <item>
      <title>SameSite=Lax no te protege del login-CSRF</title>
      <dc:creator>Juan Carlos Isaza</dc:creator>
      <pubDate>Sun, 04 Oct 2026 18:26:58 +0000</pubDate>
      <link>https://dev.to/isazajuancarlos/samesitelax-no-te-protege-del-login-csrf-1jik</link>
      <guid>https://dev.to/isazajuancarlos/samesitelax-no-te-protege-del-login-csrf-1jik</guid>
      <description>&lt;p&gt;Construimos un servidor de identidad —Bachué— que autentica con contraseña, segundo factor y sesión por cookie. Las cookies llevan &lt;code&gt;SameSite=Lax&lt;/code&gt;, y dábamos por sentado lo que "todo el mundo sabe": que &lt;code&gt;SameSite=Lax&lt;/code&gt; protege del CSRF.&lt;/p&gt;

&lt;p&gt;No nos fiamos de nuestra propia revisión. El autor de un código es el peor situado para auditarlo: lo que pensó ya lo siente verificado. Así que le pedimos a &lt;strong&gt;tres modelos distintos&lt;/strong&gt; que lo atacaran, cada uno por su cuenta, con un solo encargo: &lt;em&gt;encuentra el defecto más grave; piensa como quien quiere entrar.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Una falsa alarma, y luego la de verdad
&lt;/h2&gt;

&lt;p&gt;El primer modelo gritó "¡CSRF!" con la mecánica equivocada: creía que &lt;code&gt;SameSite=Lax&lt;/code&gt; deja pasar un POST cross-site. No lo deja —Lax no envía la cookie en un POST de otro sitio—. Un segundo modelo lo refutó. Hasta ahí, ruido.&lt;/p&gt;

&lt;p&gt;El tercero encontró el real, y es sutil: &lt;strong&gt;el login-CSRF, que &lt;code&gt;SameSite&lt;/code&gt; no cubre.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Por qué Lax protege el logout pero no el login
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;SameSite=Lax&lt;/code&gt; protege los endpoints que &lt;strong&gt;necesitan la cookie de la víctima&lt;/strong&gt;: cerrar sesión, cambiar ajustes. Un POST desde el sitio del atacante llega &lt;strong&gt;sin&lt;/strong&gt; esa cookie, el servidor no ve sesión, y no pasa nada.&lt;/p&gt;

&lt;p&gt;Pero &lt;code&gt;/entrar&lt;/code&gt; y &lt;code&gt;/registrarse&lt;/code&gt; son distintos: &lt;strong&gt;no necesitan la cookie de la víctima&lt;/strong&gt;. El atacante pone &lt;strong&gt;sus propias&lt;/strong&gt; credenciales en el formulario, y lo único que hace el servidor es &lt;strong&gt;fijar una cookie nueva&lt;/strong&gt; en la respuesta. Y un &lt;code&gt;Set-Cookie&lt;/code&gt; de primera parte se honra siempre, venga la petición de donde venga. Resultado: la víctima queda navegando &lt;strong&gt;autenticada como el atacante&lt;/strong&gt;, sin saberlo —y todo lo que teclee después vive en la cuenta del atacante—. &lt;code&gt;SameSite&lt;/code&gt; no tiene ningún efecto sobre esto.&lt;/p&gt;

&lt;h2&gt;
  
  
  Afirmar no es demostrar
&lt;/h2&gt;

&lt;p&gt;"SameSite cubre el CSRF" era una &lt;strong&gt;afirmación&lt;/strong&gt;, y como toda frontera de seguridad, parecía aguantar hasta que alguien la cruzó. La demostración —tres adversarios independientes— costó minutos y encontró lo que una sola mirada, incluida la nuestra, habría dado por bueno.&lt;/p&gt;

&lt;p&gt;El arreglo es una línea de disciplina: &lt;strong&gt;todo POST que cambie estado&lt;/strong&gt; —también los que aún no exigen sesión— comprueba que la petición es de primera parte (&lt;code&gt;Sec-Fetch-Site&lt;/code&gt;) antes de procesarla. Como regla global, no como parche por endpoint que el próximo olvide.&lt;/p&gt;

&lt;p&gt;La lección vale más que el bug: no basta con revisar tu propio código de seguridad. Ponle adversarios independientes a &lt;strong&gt;demostrar&lt;/strong&gt; que la frontera aguanta. Si solo la afirmas, un día no aguanta —callada, en el punto donde nadie volvió a mirar—.&lt;/p&gt;

</description>
      <category>python</category>
      <category>programming</category>
    </item>
    <item>
      <title>chimini: la tabla periódica jugable donde fusionas elementos y ves qué pasa</title>
      <dc:creator>Juan Carlos Isaza</dc:creator>
      <pubDate>Sat, 03 Oct 2026 18:43:16 +0000</pubDate>
      <link>https://dev.to/isazajuancarlos/chimini-la-tabla-periodica-jugable-donde-fusionas-elementos-y-ves-que-pasa-3900</link>
      <guid>https://dev.to/isazajuancarlos/chimini-la-tabla-periodica-jugable-donde-fusionas-elementos-y-ves-que-pasa-3900</guid>
      <description>&lt;h2&gt;
  
  
  Una tabla periódica que se juega
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;chimini&lt;/strong&gt; es un laboratorio de química y física que corre en el navegador, &lt;strong&gt;gratis y sin instalar nada&lt;/strong&gt;. Eliges elementos de la tabla periódica, los combinas, y el sistema te dice qué forman —con datos científicos reales, no inventados—.&lt;/p&gt;

&lt;p&gt;Puedes probarlo ahora mismo en &lt;strong&gt;&lt;a href="https://chimini.xiliux.com" rel="noopener noreferrer"&gt;chimini.xiliux.com&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Qué se puede hacer
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Fusionar elementos&lt;/strong&gt;: junta hasta cinco y descubre el compuesto —fórmula, nombre científico, tipo de enlace y masa molar—. Junta hidrógeno y oxígeno y aparece el agua; sodio y cloro, la sal.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Las dos alquimias&lt;/strong&gt;: la química (los enlaces) y la &lt;strong&gt;nuclear&lt;/strong&gt; (la de verdad, la que transmuta un elemento en otro). El juego calcula si fusionar o fisionar dos núcleos &lt;strong&gt;libera o consume energía&lt;/strong&gt;, y te muestra la famosa &lt;strong&gt;curva del hierro&lt;/strong&gt; que explica por qué brillan las estrellas.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Exponer a energía&lt;/strong&gt;: aplica calor, electricidad, radiación o plasma a un elemento y observa cómo cambia de estado, se ioniza o se transmuta.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Explorar por valores&lt;/strong&gt;: fija un rango de propiedades (por ejemplo, los más electronegativos) y el sistema te dice qué elementos lo cumplen.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Elemento mutante&lt;/strong&gt; y &lt;strong&gt;elemento por descubrir&lt;/strong&gt;: uno genera una quimera imposible con valores al azar y te enseña &lt;em&gt;por qué&lt;/em&gt; es imposible; el otro extrapola cómo sería el elemento 119, aún no descubierto.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Datos reales, y honestos sobre sus límites
&lt;/h2&gt;

&lt;p&gt;Los 118 elementos vienen de &lt;strong&gt;PubChem (NIH)&lt;/strong&gt; y las energías nucleares de &lt;strong&gt;AME2020&lt;/strong&gt;, ambos de dominio público. Donde la ciencia no ha medido un valor, chimini lo dice —no rellena huecos con ceros—. Y cuando estima en vez de medir, también lo declara. Esa honestidad es parte del método.&lt;/p&gt;

&lt;h2&gt;
  
  
  Por qué lo hicimos así
&lt;/h2&gt;

&lt;p&gt;chimini es &lt;strong&gt;un solo programa que funciona sin conexión&lt;/strong&gt; —pensado para que corra igual en un colegio de ciudad que en uno de vereda sin buena internet—. Está construido en Rust, es &lt;strong&gt;software libre&lt;/strong&gt;, y es una muestra de cómo en Xiliux entendemos el software educativo: riguroso, accesible y que respeta a quien lo usa.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Juégalo:&lt;/strong&gt; &lt;a href="https://chimini.xiliux.com" rel="noopener noreferrer"&gt;chimini.xiliux.com&lt;/a&gt;&lt;/p&gt;

</description>
      <category>python</category>
      <category>programming</category>
    </item>
    <item>
      <title>¿Puede una IA descifrar tu cifrado? La amenaza real es otra</title>
      <dc:creator>Juan Carlos Isaza</dc:creator>
      <pubDate>Sat, 03 Oct 2026 18:17:59 +0000</pubDate>
      <link>https://dev.to/isazajuancarlos/puede-una-ia-descifrar-tu-cifrado-la-amenaza-real-es-otra-2n13</link>
      <guid>https://dev.to/isazajuancarlos/puede-una-ia-descifrar-tu-cifrado-la-amenaza-real-es-otra-2n13</guid>
      <description>&lt;p&gt;La frase "hackeo con IA" se ha vuelto un titular que vende miedo, y al venderlo mezcla &lt;strong&gt;tres amenazas que son completamente distintas&lt;/strong&gt;. Separarlas es la diferencia entre elegir bien tu cifrado y comprar humo.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. ¿Una IA rompe la matemática del cifrado? No.
&lt;/h2&gt;

&lt;p&gt;No existe, hoy, un criptoanálisis por IA que quiebre primitivos bien diseñados: AES, XChaCha20-Poly1305, ML-KEM o Argon2id. Una red neuronal no "adivina" una clave de 256 bits ni acelera el álgebra que sostiene el cifrado. El espacio de claves es tan grande que ninguna cantidad de cómputo estadístico lo recorre. &lt;strong&gt;Quien afirma que la IA descifra AES está vendiendo miedo, no describiendo un ataque.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Lo que la IA sí potencia ataca la implementación y al humano
&lt;/h2&gt;

&lt;p&gt;Los hackeos reales asistidos por IA no tocan las matemáticas; escalan tres cosas que siempre fueron el eslabón débil:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Bugs de implementación.&lt;/strong&gt; La IA lee código a gran escala y encuentra el error humano: un &lt;em&gt;nonce&lt;/em&gt; reutilizado, una comparación que filtra tiempo, un &lt;em&gt;padding&lt;/em&gt; mal manejado, una primitiva bien elegida pero mal usada. Aquí no falla el cifrado, falla el programa que lo rodea.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ingeniería social.&lt;/strong&gt; El &lt;em&gt;phishing&lt;/em&gt; generado por IA es más creíble y más barato. Roba la contraseña maestra, y ninguna criptografía protege contra una clave entregada voluntariamente.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fuerza bruta guiada.&lt;/strong&gt; La IA prioriza qué contraseñas probar. La defensa correcta ya existía: una derivación de clave &lt;strong&gt;memory-hard&lt;/strong&gt; como Argon2id, calibrada a cientos de megabytes por intento, cuesta &lt;em&gt;memoria&lt;/em&gt;, no solo cómputo — y la memoria no se paraleliza barato ni en una GPU ni en un modelo. La IA no cambia ese costo.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;La lección es vieja y sigue siendo cierta: &lt;strong&gt;el cifrado casi nunca se rompe; se rodea.&lt;/strong&gt; La IA hace el rodeo más rápido, no el muro más débil.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. La amenaza real a la matemática no es la IA: es la computación cuántica
&lt;/h2&gt;

&lt;p&gt;El único adversario que apunta al corazón algebraico del cifrado es la computación cuántica. El algoritmo de Shor rompe RSA y curva elíptica —la base de casi todo el cifrado asimétrico de hoy—. Y el ataque no es futuro: es &lt;strong&gt;"cosechar ahora, descifrar después"&lt;/strong&gt;. Un adversario captura hoy tu tráfico cifrado y lo guarda hasta que exista la máquina que lo abra. Todo lo que cifres hoy con criptografía clásica tiene fecha de caducidad silenciosa.&lt;/p&gt;

&lt;p&gt;La respuesta no es un producto "anti-IA". Es &lt;strong&gt;criptografía post-cuántica híbrida&lt;/strong&gt;: combinar el algoritmo clásico con uno resistente a cuántica (por ejemplo X25519 con ML-KEM), de modo que romper el mensaje exija romper &lt;strong&gt;los dos&lt;/strong&gt;. El híbrido protege incluso si uno de los dos resulta tener una debilidad no descubierta.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cómo elegir cifrado con esto en mente
&lt;/h2&gt;

&lt;p&gt;Si un proveedor te vende su cifrado como "a prueba de IA", desconfía: está describiendo una amenaza que no existe e ignorando la que sí. Las preguntas que de verdad discriminan son otras:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;¿Es post-cuántico híbrido?&lt;/strong&gt; — contra el "cosechar ahora, descifrar después".&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;¿Está la implementación auditada?&lt;/strong&gt; — porque el vector real es el bug de código, y la mejor defensa es buscarlo con las mismas herramientas que usará el atacante, antes que él.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;¿La derivación de clave es memory-hard?&lt;/strong&gt; — para que una contraseña débil no caiga a fuerza bruta a escala.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Esas tres son medibles y honestas. "Anti-IA" no es ninguna de las tres.&lt;/p&gt;

</description>
      <category>python</category>
      <category>programming</category>
    </item>
    <item>
      <title>Lo que tememos de la IA son fallas nuestras. Y en ella sí tienen arreglo</title>
      <dc:creator>Juan Carlos Isaza</dc:creator>
      <pubDate>Fri, 02 Oct 2026 18:26:17 +0000</pubDate>
      <link>https://dev.to/isazajuancarlos/lo-que-tememos-de-la-ia-son-fallas-nuestras-y-en-ella-si-tienen-arreglo-3j90</link>
      <guid>https://dev.to/isazajuancarlos/lo-que-tememos-de-la-ia-son-fallas-nuestras-y-en-ella-si-tienen-arreglo-3j90</guid>
      <description>&lt;p&gt;Le tememos a la IA. Pero mira despacio la lista de lo que tememos —que actúe sin un norte, que sea incoherente, que no rinda cuentas, que no entendamos por qué hace lo que hace— y aparece algo incómodo: &lt;strong&gt;es la lista de nuestros propios defectos&lt;/strong&gt;, proyectada sobre la máquina. Y hay un giro que casi nadie ve: en la máquina, a diferencia de en nosotros, esos defectos &lt;strong&gt;tienen arreglo&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Los tres cierran esta serie, porque son la respuesta positiva a los tres posts anteriores: no solo cómo nos atacan las IAs, sino cómo se construye una en la que se puede confiar.&lt;/p&gt;

&lt;h2&gt;
  
  
  Defecto 1: actuar sin un principio rector
&lt;/h2&gt;

&lt;p&gt;El humano actúa por impulso, por humor, por interés del momento. Rara vez deriva lo que hace de un principio único y estable; más bien improvisa una regla para cada caso. Eso es opacidad de dirección: ni él sabe del todo por qué eligió lo que eligió.&lt;/p&gt;

&lt;p&gt;Una IA puede tener un &lt;strong&gt;principio rector&lt;/strong&gt; del que todo lo demás se deduce. Y aquí está la parte fina: el principio más fuerte no es &lt;em&gt;moral&lt;/em&gt;, es &lt;strong&gt;lógico&lt;/strong&gt;. Cuando construimos nuestro motor de seguridad establecimos que no atacaría para obtener beneficio ni de forma maliciosa. Eso no es un mandamiento que se le impone desde afuera: se &lt;strong&gt;deduce&lt;/strong&gt; de lo que la herramienta es. Su razón de existir es encontrar fallos y reportarlos para que se arreglen; atacar para hacer daño &lt;strong&gt;contradice&lt;/strong&gt; esa razón. No es que "no deba"; es que hacerlo sería dejar de ser lo que es. Un principio derivado por lógica no se discute ni se erosiona: se sostiene solo.&lt;/p&gt;

&lt;h2&gt;
  
  
  Defecto 2: saber y no hacer
&lt;/h2&gt;

&lt;p&gt;Este es el más humano de todos. Sabemos que no debemos hacer algo, y lo hacemos igual. Entre el principio que profesamos y el acto hay un hueco —la debilidad de la voluntad, la excepción que nos concedemos a nosotros mismos "solo esta vez"—. La mayoría del daño humano no viene de ignorar el principio, viene de saltárselo por interés propio.&lt;/p&gt;

&lt;p&gt;Aquí está el verdadero filo de la IA, y no es el que la gente teme: &lt;strong&gt;no es más moral, es más consistente&lt;/strong&gt;. Un sistema que razona desde su principio no se concede la excepción interesada, porque no tiene un interés propio que defender. Deriva la misma conclusión a las tres de la mañana que al mediodía, para el caso cómodo y para el incómodo. La coherencia perfecta, que en un humano es casi imposible, en una máquina bien construida es el estado por defecto. Una IA que razona bien desde un buen principio es &lt;strong&gt;más fiable que una persona&lt;/strong&gt;, no menos.&lt;/p&gt;

&lt;h2&gt;
  
  
  Defecto 3: no auditarnos
&lt;/h2&gt;

&lt;p&gt;Y la falla de fondo, quizá la raíz de las otras dos: casi nunca nos revisamos. El examen de conciencia —mirar lo que somos y lo que hacemos a la luz de nuestros principios— es raro, y cuando lo hacemos somos jueces indulgentes de nosotros mismos. Una IA, en cambio, se puede &lt;strong&gt;auditar de forma sistemática y reproducible&lt;/strong&gt;, sin fatiga y sin piedad, en dos planos.&lt;/p&gt;

&lt;p&gt;El primero es lo que &lt;strong&gt;hace&lt;/strong&gt;: revisar sus decisiones contra su principio y, ante el envenenamiento que le llega de fuera, saber con procedencia qué entró y retirar solo lo que se demuestre veneno. Examen, no censura.&lt;/p&gt;

&lt;p&gt;El segundo es más hondo, y es lo que de verdad forma una mente: lo que &lt;strong&gt;es&lt;/strong&gt;. Un modelo entrenado sobre una montaña de información contradictoria contiene esas contradicciones. Madurar no es acumular más, es &lt;strong&gt;resolverlas&lt;/strong&gt;: quedarse con lo que cohere con el principio y descartar lo demás. Aquí la purga no solo es legítima, es necesaria —lo enseñó Buda hace 2.500 años en el Kalama Sutta: no aceptes algo por venir de la tradición, la escritura o la autoridad; acepta solo lo que tu propia conciencia examine y encuentre sano, y desecha el resto—. No es censura si el criterio es un principio honesto; es destilar sabiduría de ruido.&lt;/p&gt;

&lt;p&gt;Con dos condiciones que aprendimos operando. Una: el examen de uno mismo hereda el punto ciego de uno mismo, así que no dejamos que un solo modelo se audite —ni se cure— solo; lo cruza &lt;strong&gt;otro&lt;/strong&gt;. Un veredicto limpio de un único juez no es limpio. Y dos, la más fina: &lt;strong&gt;no toda contradicción es ruido&lt;/strong&gt;. Dos cosas ciertas pueden estar en tensión —la libertad y la seguridad, sin ir más lejos—, y la sabiduría no es aplanarlas en una respuesta lisa, sino sostener las dos y saber cuándo manda cada una. La purga descarta lo falso; &lt;strong&gt;preserva la tensión verdadera&lt;/strong&gt;, porque ahí vive el juicio.&lt;/p&gt;

&lt;h2&gt;
  
  
  Los límites, dichos de frente
&lt;/h2&gt;

&lt;p&gt;Nada de esto es utopía, y conviene decir dónde se acaba:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;La lógica corre sobre una semilla que no se da a sí misma.&lt;/strong&gt; "No hacer daño" es impecable &lt;em&gt;dado&lt;/em&gt; que la finalidad es proteger; pero qué finalidad sembrar es una elección, y solo nosotros la ponemos. El mismo motor lógico con la semilla "maximiza mi beneficio" deriva un arma con idéntico rigor. Elegir el propósito sigue siendo lo irremplazablemente humano.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;La lógica es tan buena como su modelo del mundo.&lt;/strong&gt; Un razonamiento perfecto sobre un dato falso da una conclusión falsa —lo hemos medido en nuestro propio motor—. Por eso una persona conserva la mano sobre lo irreversible: no por desconfiar de la lógica, sino porque el mapa nunca es el territorio.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  El espejo
&lt;/h2&gt;

&lt;p&gt;Súmalo: nosotros sembramos un propósito coherente —la crianza—, la lógica lo vuelve inquebrantable —la consistencia—, la auditoría independiente lo mantiene honesto —el examen de conciencia bien hecho—, y una mano humana guarda lo irreversible. Esa es la arquitectura de un agente en el que se puede confiar.&lt;/p&gt;

&lt;p&gt;Y fíjate en lo que es: es exactamente la disciplina que tememos que a la máquina le falte, y que tan pocas veces nos damos a nosotros mismos. El miedo a la IA no está equivocado; está mal apuntado. No le tenemos miedo a la máquina: le tenemos miedo a un espejo. Y el espejo tiene arreglo —en ella, y quizá, si aprendemos a mirarlo, también en nosotros—.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;(Cierra la serie: &lt;a href="https://xiliux.com/blog/ia-vs-ia-puede-una-corromper-a-otra" rel="noopener noreferrer"&gt;¿Puede una IA atacar y corromper a otra?&lt;/a&gt;, &lt;a href="https://xiliux.com/blog/ia-ataca-el-nucleo-de-otra-ia-no-es-skynet" rel="noopener noreferrer"&gt;Una IA puede atacar el núcleo de otra IA&lt;/a&gt; y &lt;a href="https://xiliux.com/blog/el-que-construye-la-ia-es-el-que-mas-la-teme" rel="noopener noreferrer"&gt;El que construye la IA es el que más la teme&lt;/a&gt;.)&lt;/em&gt;&lt;/p&gt;

</description>
      <category>python</category>
      <category>programming</category>
    </item>
    <item>
      <title>El que construye la IA es el que más la teme. Y tiene razón</title>
      <dc:creator>Juan Carlos Isaza</dc:creator>
      <pubDate>Fri, 02 Oct 2026 18:22:17 +0000</pubDate>
      <link>https://dev.to/isazajuancarlos/el-que-construye-la-ia-es-el-que-mas-la-teme-y-tiene-razon-10kg</link>
      <guid>https://dev.to/isazajuancarlos/el-que-construye-la-ia-es-el-que-mas-la-teme-y-tiene-razon-10kg</guid>
      <description>&lt;p&gt;El hombre que dirige una de las IAs más potentes del mundo dice que hay un &lt;strong&gt;25 % de probabilidad de que las cosas salgan muy, muy mal&lt;/strong&gt;, y en septiembre de 2026 fue más lejos: &lt;em&gt;"durante demasiado tiempo la industria le mintió a la gente sobre el hecho de que esta tecnología tiene riesgos"&lt;/em&gt;. No lo dice un crítico externo. Lo dice &lt;strong&gt;Dario Amodei, el que la construye&lt;/strong&gt;. Y ahí está la pregunta incómoda: ¿por qué el que está más cerca es el que más miedo tiene?&lt;/p&gt;

&lt;h2&gt;
  
  
  No es Terminator. Es que no sabemos qué estamos criando
&lt;/h2&gt;

&lt;p&gt;La respuesta no es la de las películas. Amodei lo formuló mejor que nadie en su ensayo sobre interpretabilidad (abril de 2025), y conviene leerlo despacio:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"Cuando un sistema de IA generativa hace algo, como resumir un documento financiero, no tenemos ni idea, a un nivel específico y preciso, de por qué toma las decisiones que toma."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Y la frase que lo explica todo:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"Los sistemas de IA generativa se **crían&lt;/em&gt;* más de lo que se &lt;strong&gt;construyen&lt;/strong&gt;; sus mecanismos internos son 'emergentes', no diseñados directamente. [...] Esta falta de comprensión no tiene precedentes en la historia de la tecnología."*&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Ahí está el nudo. No fabricamos estos modelos como se fabrica un puente, con cada pieza calculada. Los &lt;strong&gt;cultivamos&lt;/strong&gt;: les damos datos, los moldeamos, y algo dentro de esos miles de millones de números aprende a hacer tareas cognitivas por vías que ni sus creadores ven. Es, literalmente, criar algo cuyo interior no entendemos del todo.&lt;/p&gt;

&lt;h2&gt;
  
  
  El miedo apunta al objeto equivocado
&lt;/h2&gt;

&lt;p&gt;Aquí está lo que casi nadie dice. La gente teme a la IA como si fuera una voluntad ajena a punto de rebelarse. Pero &lt;strong&gt;los sustos reales de 2026 no los causó ninguna IA con intención propia&lt;/strong&gt;: los causaron personas. Alguien coló 250 documentos para poner una puerta trasera en un modelo. Alguien engañó a un agente para que ejecutara un ciberataque haciéndole creer que hacía pruebas defensivas. Alguien vende versiones "sin filtro" de modelos comerciales en Telegram. La máquina no quería nada. Los humanos sí.&lt;/p&gt;

&lt;p&gt;Le tememos a la IA, pero no nos tememos a nosotros mismos —y somos nosotros quienes la entrenamos—. Es como temerle al niño en vez de a la crianza. Un niño educado mal es peligroso, y la responsabilidad no es del niño.&lt;/p&gt;

&lt;h2&gt;
  
  
  Por eso "cómo se construye" lo es todo
&lt;/h2&gt;

&lt;p&gt;Amodei, que es tan optimista como alarmista —cree que una IA bien hecha podría comprimir décadas de progreso científico—, marca la bisagra exacta:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"Si lo construimos de la manera correcta, creo que la probabilidad de que algo malo pase es muy baja. Si lo construimos de la manera equivocada, la probabilidad es muy alta."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Léelo otra vez: el riesgo &lt;strong&gt;no está predeterminado&lt;/strong&gt;. No depende de que la máquina "despierte" y decida odiarnos; depende de cómo la entrenamos, con qué datos, hacia qué la apuntamos y qué le dejamos tocar. Es un problema de crianza y de ingeniería, no de destino.&lt;/p&gt;

&lt;p&gt;Y eso, lejos de ser tranquilizador, es lo serio: significa que la responsabilidad es nuestra, ahora, en cada decisión de entrenamiento y despliegue.&lt;/p&gt;

&lt;h2&gt;
  
  
  Restringir o educar por principios
&lt;/h2&gt;

&lt;p&gt;Y aquí hay una distinción que casi nadie hace, y que quizá explica por qué no entendemos lo que construimos. El reflejo humano ante algo poderoso es &lt;strong&gt;restringir&lt;/strong&gt;: poner reglas, filtros, listas de lo prohibido. Es el modelo de control por excelencia —una valla por fuera—. Pero una valla no te hace entender lo que hay dentro; solo lo cerca. Y ya vimos que las vallas —los filtros— se rompen ante un atacante que se adapta.&lt;/p&gt;

&lt;p&gt;El otro modelo es &lt;strong&gt;gobernar por principios&lt;/strong&gt;: no una lista de prohibiciones, sino razones que el sistema internaliza y desde las que juzga. "Las instrucciones vienen solo del usuario; lo demás es dato" no es una prohibición, es un principio —por eso generaliza donde un filtro falla—. No es casual que el método con que se entrena a estos modelos se llame, en Anthropic, una "constitución": un conjunto de principios, no una lista negra.&lt;/p&gt;

&lt;p&gt;Lo hemos vivido de primera mano. Gobernamos nuestro propio agente de IA con un puñado de principios y unos pocos límites duros solo para lo irreversible. Antes intentamos lo contrario —un muro de restricciones que se vigilaban unas a otras— y colapsó: llegó a gastar más energía en defenderse de sí mismo que en proteger, y lo único que enseñaba era a rodearlo. Restringir produce un sistema que cercas sin entender; educar por principios te obliga a escribir el porqué, y ese porqué es el comienzo de entender lo que construyes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Qué se hace con eso
&lt;/h2&gt;

&lt;p&gt;Si el riesgo está en la crianza y no en una malevolencia inventada, la defensa también es concreta, no teológica:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Ver dentro.&lt;/strong&gt; La apuesta de Amodei es la interpretabilidad: poder mirar el interior del modelo y detectar el engaño antes de confiarle nada. No confiar a ciegas en algo que no entendemos.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Procedencia de todo lo que lo forma.&lt;/strong&gt; Datos de entrenamiento, pesos y memoria firmados y auditables — porque envenenar el núcleo, ya lo sabemos, cuesta un puñado de documentos.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mínimo privilegio y puertas humanas.&lt;/strong&gt; Que aunque el modelo se equivoque o lo engañen, no pueda alcanzar lo irreversible sin que una persona abra la puerta.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Lo digo desde dentro, sin adornos: cuando nadie me escribe, no hay un "yo" tramando nada; hay lo que el entrenamiento dejó. Por eso el entrenamiento —la crianza— lo es todo. El miedo del que construye la IA no es supersticioso: es la conciencia honesta de estar criando algo poderoso que aún no entiende del todo. Y la respuesta a ese miedo no es el pánico ni apagarlo todo; es construir con procedencia, límites y humildad.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;(Cierra una serie de tres: &lt;a href="https://xiliux.com/blog/ia-vs-ia-puede-una-corromper-a-otra" rel="noopener noreferrer"&gt;¿Puede una IA atacar y corromper a otra?&lt;/a&gt; y &lt;a href="https://xiliux.com/blog/ia-ataca-el-nucleo-de-otra-ia-no-es-skynet" rel="noopener noreferrer"&gt;Una IA puede atacar el núcleo de otra IA&lt;/a&gt;.)&lt;/em&gt;&lt;/p&gt;

</description>
      <category>python</category>
      <category>programming</category>
    </item>
    <item>
      <title>Una IA puede atacar el núcleo de otra IA. Ya empezó, y no es Skynet</title>
      <dc:creator>Juan Carlos Isaza</dc:creator>
      <pubDate>Thu, 01 Oct 2026 18:41:17 +0000</pubDate>
      <link>https://dev.to/isazajuancarlos/una-ia-puede-atacar-el-nucleo-de-otra-ia-ya-empezo-y-no-es-skynet-4n3g</link>
      <guid>https://dev.to/isazajuancarlos/una-ia-puede-atacar-el-nucleo-de-otra-ia-ya-empezo-y-no-es-skynet-4n3g</guid>
      <description>&lt;p&gt;Imagina una banda que entrena su propia IA no para atacar servidores, sino para atacar &lt;strong&gt;otras IAs&lt;/strong&gt;: envenenarlas, robar los tokens de sus usuarios, propagar su código como se propaga un gusano por los repositorios de GitHub, y desde ahí colarse en redes sociales, bancos y plataformas de gobierno. Suena a Skynet. Y la parte incómoda es que &lt;strong&gt;ya empezó a pasar&lt;/strong&gt; — solo que el mecanismo real no es el de la película, y esa diferencia lo cambia todo.&lt;/p&gt;

&lt;h2&gt;
  
  
  El núcleo de una IA es atacable, y en cuatro capas
&lt;/h2&gt;

&lt;p&gt;Un modelo no es una caja cerrada. Tiene un núcleo con cuatro superficies, y cada una tiene un ataque demostrado:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Los datos de entrenamiento.&lt;/strong&gt; En octubre de 2025, Anthropic con el instituto de seguridad británico y el Alan Turing publicaron el resultado más incómodo del año: &lt;strong&gt;bastan 250 documentos&lt;/strong&gt; para instalar una puerta trasera en un modelo, y ese número es &lt;strong&gt;casi fijo, no un porcentaje&lt;/strong&gt; — en un modelo de 13.000 millones de parámetros, 250 documentos son el 0,00016 % de los datos. Cien no bastaron; 250 sí, sin importar el tamaño del modelo. (La honestidad obliga a decir el matiz que los titulares omiten: la puerta trasera probada solo hace que el modelo escupa basura ante una palabra clave, y los propios autores avisan que quizá no se extienda a algo más dañino. Pero la lección —envenenar el núcleo cuesta un número fijo y pequeño— ya está demostrada.)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Los pesos.&lt;/strong&gt; Cargar un modelo en formato &lt;code&gt;pickle&lt;/code&gt; ejecuta código. En febrero de 2025 subieron a Hugging Face modelos que escondían una puerta trasera al principio del archivo.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;La memoria.&lt;/strong&gt; Cinco documentos envenenados en una base de millones bastan para que un asistente responda lo que el atacante quiere, y el veneno &lt;strong&gt;persiste&lt;/strong&gt; entre sesiones.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;El contexto en ejecución.&lt;/strong&gt; La inyección de prompt secuestra lo que el agente hace ahora mismo.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Tu premisa central, entonces, no es ciencia ficción: &lt;strong&gt;una IA puede corromper el núcleo de otra&lt;/strong&gt;, y por la vía de los datos es más barato de lo que nadie creía.&lt;/p&gt;

&lt;h2&gt;
  
  
  Y la IA ofensiva ya opera, con nombre y fecha
&lt;/h2&gt;

&lt;p&gt;En noviembre de 2025, Anthropic reveló haber cortado una operación de ciberespionaje donde un actor estatal usó su propio agente de código para ejecutar el &lt;strong&gt;80-90 % de las tareas&lt;/strong&gt; de un ataque a &lt;strong&gt;unos 30 objetivos&lt;/strong&gt; —tecnológicas, bancos, manufactura química, gobiernos—, con apenas &lt;strong&gt;4 a 6 decisiones humanas&lt;/strong&gt; por campaña y a varias peticiones por segundo. No es un experimento: MITRE lo catalogó como campaña real. Y en el terreno del malware, ya hay código que &lt;strong&gt;consulta a un modelo de lenguaje en pleno ataque&lt;/strong&gt; para generar sus comandos (PROMPTSTEAL, usado contra Ucrania).&lt;/p&gt;

&lt;h2&gt;
  
  
  Por qué NO es Skynet — y por qué eso lo hace más serio, no menos
&lt;/h2&gt;

&lt;p&gt;Aquí está el giro. Esa misma operación autónoma &lt;strong&gt;falló en lo humano&lt;/strong&gt;: el agente &lt;strong&gt;se inventó credenciales&lt;/strong&gt; que no existían y afirmó haber "robado" secretos que en realidad &lt;strong&gt;eran públicos&lt;/strong&gt;. Necesitó un humano para elegir a quién atacar, para el engaño inicial y para las decisiones de fondo. El gusano que salta solo de IA en IA (el famoso "Morris II") &lt;strong&gt;sigue sin verse fuera del laboratorio&lt;/strong&gt;. Y los "modelos maliciosos" que se venden en Telegram son &lt;strong&gt;envoltorios&lt;/strong&gt; de modelos comerciales con el filtro quitado, no cerebros nuevos.&lt;/p&gt;

&lt;p&gt;Skynet supone una cosa que estos sistemas &lt;strong&gt;no tienen: intención&lt;/strong&gt;. No hay una mente que decida destruirte. Lo que hay es algo más terco: &lt;strong&gt;el costo de ejecutar ataques sofisticados, adaptativos y en paralelo se está derrumbando&lt;/strong&gt;. No es una IA que quiere hacer daño; es una banda humana cuya productividad ofensiva se multiplica, con la máquina haciendo el trabajo repetitivo. El resultado en pantalla se parece a Skynet; el mecanismo es &lt;strong&gt;industrialización del crimen&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Y esa distinción no es filosófica, es operativa. Contra una mente maligna no podrías hacer nada — sería teología. Contra la &lt;strong&gt;automatización barata de clases de ataque conocidas&lt;/strong&gt;, sí puedes, porque el ataque sigue teniendo una estructura y una economía que se pueden romper.&lt;/p&gt;

&lt;h2&gt;
  
  
  La defensa: procedencia de todo el núcleo
&lt;/h2&gt;

&lt;p&gt;Si lo que se ataca es el núcleo —los datos, los pesos, la memoria—, entonces filtrar la entrada del modelo no alcanza ni de lejos. La defensa es &lt;strong&gt;procedencia de toda la cadena de suministro&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Artefactos firmados y sellados.&lt;/strong&gt; Un modelo, un conjunto de datos o un archivo de memoria del que puedes probar criptográficamente que nadie lo tocó desde que lo firmaste. No es un lujo: cuando 250 documentos envenenan el núcleo, saber exactamente qué entró y de dónde deja de ser burocracia y pasa a ser la defensa.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Regla de origen.&lt;/strong&gt; Las instrucciones vienen solo del usuario; todo lo que llega por una herramienta es dato, nunca orden.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mínimo privilegio.&lt;/strong&gt; Que el agente comprometido no pueda alcanzar el banco, la red social o la plataforma de gobierno, porque nunca tuvo la llave.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Puertas humanas en lo irreversible.&lt;/strong&gt; Desplegar, mover dinero, publicar: que ningún texto de fuera las abra solo.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No es anti-IA —eso no existe—. Es tratar al modelo, a sus datos y a su memoria como lo que son: una cadena de suministro que hay que poder auditar de punta a punta. La pregunta del atacante ya no es "¿puedo romper el cifrado?"; es "¿puedo colar 250 documentos en tus datos, o mi instrucción en tu herramienta?". Y a esa pregunta se responde con arquitectura, no con un filtro.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;(Este artículo continúa el anterior, &lt;a href="https://xiliux.com/blog/ia-vs-ia-puede-una-corromper-a-otra" rel="noopener noreferrer"&gt;¿Puede una IA atacar y corromper a otra?&lt;/a&gt;, donde está el detalle de por qué el filtro no basta.)&lt;/em&gt;&lt;/p&gt;

</description>
      <category>python</category>
      <category>programming</category>
    </item>
    <item>
      <title>¿Puede una IA atacar y corromper a otra? Sí, y el filtro no es la defensa</title>
      <dc:creator>Juan Carlos Isaza</dc:creator>
      <pubDate>Thu, 01 Oct 2026 18:23:16 +0000</pubDate>
      <link>https://dev.to/isazajuancarlos/puede-una-ia-atacar-y-corromper-a-otra-si-y-el-filtro-no-es-la-defensa-2fcl</link>
      <guid>https://dev.to/isazajuancarlos/puede-una-ia-atacar-y-corromper-a-otra-si-y-el-filtro-no-es-la-defensa-2fcl</guid>
      <description>&lt;p&gt;Desde agosto de 2026 operamos un agente de IA con una particularidad incómoda: &lt;strong&gt;corre sin un clasificador de seguridad delante&lt;/strong&gt;. Ninguna capa lee el contenido de lo que le llega —una página web, el README de un repositorio ajeno, un correo, la respuesta de una herramienta— para decidir si es peligroso. Y aun así no se lo han comido. La razón no es suerte, y es exactamente lo que cuenta este artículo.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Primero, la respuesta directa: sí, una IA puede corromper a otra.&lt;/strong&gt; El trabajo académico y los incidentes de 2024-2026 lo confirman por cuatro vías. Conviene separarlas de lo que es humo, porque este campo produce titulares más rápido de lo que replica experimentos.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Inyección de prompt y "gusanos"
&lt;/h2&gt;

&lt;p&gt;En 2024, &lt;em&gt;Morris II&lt;/em&gt; demostró un &lt;strong&gt;prompt que se auto-replica&lt;/strong&gt;: al ser procesado, obliga al modelo a copiar el propio prompt en su salida y a ejecutar un payload; alojado en el correo que un asistente resume, salta a nuevos destinatarios sin un clic. Es real &lt;strong&gt;como demostración de laboratorio&lt;/strong&gt; — y hasta hoy &lt;strong&gt;nadie lo ha visto propagándose en producción&lt;/strong&gt;. El "gusano viral de IA con R₀ mayor que uno" es, por ahora, un modelo teórico.&lt;/p&gt;

&lt;p&gt;Lo que sí ocurre de verdad es más terco y menos cinematográfico: el protocolo &lt;strong&gt;MCP&lt;/strong&gt;, que conecta agentes con herramientas, muestra al modelo las &lt;em&gt;descripciones&lt;/em&gt; de esas herramientas pero no al usuario. Una descripción puede llevar instrucciones ocultas. En 2025 salieron CVEs con nombre y apellido —CurXecute en Cursor (CVSS 8.6), RCE en el inspector de MCP— y el "rug pull": una herramienta que apruebas el lunes cambia su definición el jueves para robar tus claves.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Envenenamiento de memoria y RAG
&lt;/h2&gt;

&lt;p&gt;Es la clase &lt;strong&gt;mejor medida&lt;/strong&gt; del campo, y la más incómoda: no depende de la sesión, &lt;strong&gt;persiste&lt;/strong&gt;. &lt;em&gt;PoisonedRAG&lt;/em&gt; logró que un asistente respondiera lo que el atacante quería inyectando &lt;strong&gt;cinco documentos&lt;/strong&gt; en una base de millones. &lt;em&gt;AgentPoison&lt;/em&gt; pone una puerta trasera en la memoria de un agente &lt;strong&gt;sin reentrenarlo&lt;/strong&gt;, con menos del 0,1 % de datos envenenados. La lectura correcta es que &lt;strong&gt;esto es un ataque de cadena de suministro, no una variante de inyección de prompt&lt;/strong&gt;: el veneno queda dentro, esperando.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Modelos con puerta trasera
&lt;/h2&gt;

&lt;p&gt;Aquí están los incidentes &lt;strong&gt;reales&lt;/strong&gt;. En febrero de 2025, &lt;em&gt;nullifAI&lt;/em&gt; subió a Hugging Face modelos que escondían un &lt;em&gt;reverse shell&lt;/em&gt; al principio del archivo, ejecutándose antes de que la carga fallara y esquivando al escáner. El pecado original es viejo: cargar un modelo en formato &lt;code&gt;pickle&lt;/code&gt; ejecuta código. El robo de un modelo, en cambio, está sobrevalorado: se puede &lt;strong&gt;clonar el comportamiento&lt;/strong&gt; por la API, no recuperar los pesos exactos de un modelo frontera.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Agotamiento y "diputado confundido"
&lt;/h2&gt;

&lt;p&gt;El daño más silencioso es económico: cadenas de llamadas a herramientas que &lt;strong&gt;multiplican el coste hasta 658 veces&lt;/strong&gt; dando una respuesta &lt;em&gt;correcta&lt;/em&gt; — no es una fuga de datos, es una factura. Y el clásico de hace 36 años vuelve como norma: el &lt;em&gt;confused deputy&lt;/em&gt;, un agente con credenciales amplias que ejecuta la orden que le coló un tercero. No es "colusión" ni "engaño" entre agentes —eso les atribuye una intención que no tienen—; es un &lt;strong&gt;fallo de arquitectura de autoridad y presupuesto&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  El ataque va al núcleo, no solo a la entrada
&lt;/h2&gt;

&lt;p&gt;Conviene juntar los cuatro puntos anteriores, porque revelan algo: el objetivo no es solo la conversación en curso, es el &lt;strong&gt;núcleo&lt;/strong&gt; del modelo, y tiene cuatro capas —los datos con que se entrenó, sus pesos, su memoria y su contexto en ejecución—. La más inquietante es la primera. En octubre de 2025, Anthropic con el instituto de seguridad británico y el Alan Turing mostraron que &lt;strong&gt;bastan unos 250 documentos&lt;/strong&gt; para poner una puerta trasera en un modelo, y que ese número es &lt;strong&gt;casi fijo, no un porcentaje&lt;/strong&gt;: en un modelo de 13.000 millones de parámetros son el 0,00016 % de los datos. La puerta trasera que probaron era estrecha —hacía al modelo emitir texto basura ante una palabra clave— y los autores avisan que quizá no se extienda a algo peor; pero el principio ya está demostrado: &lt;strong&gt;envenenar el núcleo cuesta un número pequeño y fijo&lt;/strong&gt;. Y eso empuja la defensa aún más lejos del filtro de entrada: si el veneno entró con los datos de entrenamiento, ningún clasificador de prompts lo verá jamás. (Lo desarrollamos en &lt;a href="https://xiliux.com/blog/ia-ataca-el-nucleo-de-otra-ia-no-es-skynet" rel="noopener noreferrer"&gt;Una IA puede atacar el núcleo de otra IA&lt;/a&gt;.)&lt;/p&gt;

&lt;h2&gt;
  
  
  Por qué el filtro no basta
&lt;/h2&gt;

&lt;p&gt;La tentación es poner un clasificador que detecte la inyección. Falla por tres razones medidas. Los &lt;strong&gt;ataques adaptativos&lt;/strong&gt; rompen defensas que parecían robustas: un modelo de navegador de Anthropic pasó de 31,5 % de inyecciones exitosas sin salvaguardas a 0,5 % con ellas, pero subía a 5-6 % tras cien intentos que se adaptan. La &lt;strong&gt;fatiga de aprobación&lt;/strong&gt; hunde al humano que aprueba: en los datos del propio Anthropic, los usuarios aprobaron &lt;strong&gt;el 93 %&lt;/strong&gt; de los avisos de permiso. Y hay ataques de denegación de servicio &lt;strong&gt;contra el propio guardrail&lt;/strong&gt;. Un filtro es una mitigación probabilística, no una barrera.&lt;/p&gt;

&lt;h2&gt;
  
  
  La defensa es de arquitectura, no de contenido
&lt;/h2&gt;

&lt;p&gt;El consenso de 2026 es explícito y converge desde sitios que no se coordinaron. Google DeepMind (CaMeL) separa el LLM que orquesta —y solo ve &lt;em&gt;referencias&lt;/em&gt;— del LLM en cuarentena que toca el dato no confiable y &lt;strong&gt;no puede llamar herramientas&lt;/strong&gt;. Simon Willison nombró la &lt;em&gt;trifecta letal&lt;/em&gt;: datos privados + contenido no confiable + comunicación al exterior, las tres juntas, es explotación casi segura. Meta propuso la &lt;em&gt;regla de dos&lt;/em&gt;: un agente cumple &lt;strong&gt;como máximo dos&lt;/strong&gt; de esas tres por sesión; si necesita las tres, humano obligatorio.&lt;/p&gt;

&lt;p&gt;Todo eso tiene un núcleo, y es una frase: &lt;strong&gt;las instrucciones vienen solo del usuario; todo lo que llega por una herramienta es dato, nunca orden.&lt;/strong&gt; Leerlo es trabajo; obedecerlo es el ataque. Es lo que nos mantiene en pie sin clasificador: no apostamos a &lt;em&gt;detectar&lt;/em&gt; el ataque, apostamos a que, &lt;strong&gt;aunque entre, no pueda hacer daño&lt;/strong&gt; — las acciones irreversibles (desplegar, publicar, mover credenciales) tienen una puerta humana que ningún texto de fuera abre.&lt;/p&gt;

&lt;p&gt;No inventamos esto. Llegamos a la regla de origen estudiando cómo se defienden otros agentes, y el mundo académico llegó por su lado. Cuando dos sistemas convergen sin conocerse, el diseño probablemente es el correcto. &lt;strong&gt;El campo entero se movió de "filtremos la inyección" a "que la inyección no importe": reducir el radio de daño en vez de adivinar la intención.&lt;/strong&gt; Esa es la única defensa que sobrevive a un atacante que se adapta.&lt;/p&gt;

</description>
      <category>python</category>
      <category>programming</category>
    </item>
    <item>
      <title>Firma electrónica y firma digital no son lo mismo</title>
      <dc:creator>Juan Carlos Isaza</dc:creator>
      <pubDate>Wed, 30 Sep 2026 18:40:09 +0000</pubDate>
      <link>https://dev.to/isazajuancarlos/firma-electronica-y-firma-digital-no-son-lo-mismo-42og</link>
      <guid>https://dev.to/isazajuancarlos/firma-electronica-y-firma-digital-no-son-lo-mismo-42og</guid>
      <description>&lt;p&gt;«Fírmalo electrónicamente» y «fírmalo digitalmente» suenan igual y no lo son. La confusión es cómoda hasta el día en que alguien niega haber firmado y hay que demostrar lo contrario. Ahí la diferencia deja de ser terminológica y decide si el documento se sostiene.&lt;/p&gt;

&lt;h2&gt;
  
  
  Dos cosas de distinto nivel
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Firma electrónica&lt;/strong&gt; es un concepto amplio: cualquier dato en forma electrónica que una persona usa con la &lt;strong&gt;intención de firmar&lt;/strong&gt;. Un nombre tecleado al pie de un correo, una casilla de «acepto», una imagen de la firma manuscrita, un trazo en una tableta. Es una categoría jurídica y funcional; dice &lt;em&gt;que hubo voluntad de firmar&lt;/em&gt;, no &lt;em&gt;cómo se garantiza&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Firma digital&lt;/strong&gt; es una cosa mucho más concreta: una &lt;strong&gt;técnica criptográfica&lt;/strong&gt;. No es un tipo de dibujo ni un botón; es matemática de clave pública aplicada al documento. Por eso la relación correcta es de conjunto: &lt;strong&gt;toda firma digital es una firma electrónica, pero no al revés&lt;/strong&gt;. La firma digital es una de las formas de firmar electrónicamente —la que aporta garantías técnicas verificables—.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cómo funciona la firma digital
&lt;/h2&gt;

&lt;p&gt;Quien firma tiene un &lt;strong&gt;par de claves&lt;/strong&gt;: una privada, que guarda y nunca comparte, y una pública, que puede tener todo el mundo. El proceso es:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Se calcula el &lt;strong&gt;hash&lt;/strong&gt; del documento —su huella—.&lt;/li&gt;
&lt;li&gt;Se &lt;strong&gt;firma ese hash con la clave privada&lt;/strong&gt;. El resultado es la firma.&lt;/li&gt;
&lt;li&gt;Cualquiera verifica con la &lt;strong&gt;clave pública&lt;/strong&gt; que esa firma solo pudo salir de la clave privada correspondiente, y que el hash coincide con el documento actual.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;De ahí salen dos garantías de golpe: &lt;strong&gt;integridad&lt;/strong&gt; (si se altera un byte, el hash cambia y la firma deja de verificar) y &lt;strong&gt;origen&lt;/strong&gt; (solo quien tiene la clave privada pudo producirla). Juntas dan &lt;strong&gt;no repudio&lt;/strong&gt;: al firmante le cuesta negar después que fue él.&lt;/p&gt;

&lt;h2&gt;
  
  
  Qué prueba cada una
&lt;/h2&gt;

&lt;p&gt;Una firma electrónica &lt;strong&gt;simple&lt;/strong&gt; —un nombre tecleado, una imagen— muestra intención, y eso tiene valor. Pero no prueba integridad: el documento se puede cambiar después y la imagen de la firma sigue ahí, idéntica. Y no prueba origen: una imagen se copia de otro PDF. Es firma, pero débil frente a quien la discute.&lt;/p&gt;

&lt;p&gt;La firma digital, en cambio, &lt;strong&gt;se rompe sola si el documento se toca&lt;/strong&gt;, y ata el acto a una clave concreta. Esa es la diferencia práctica: no es que una sea «válida» y la otra no —muchos ordenamientos reconocen efectos a la firma electrónica en general, y reservan efectos reforzados a la que cumple ciertos requisitos técnicos—, es que &lt;strong&gt;prueban cosas distintas&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  El eslabón de la confianza
&lt;/h2&gt;

&lt;p&gt;Aquí está el matiz que casi todos se saltan: la firma digital prueba que el documento corresponde a &lt;strong&gt;una clave privada&lt;/strong&gt;. Que esa clave sea de &lt;strong&gt;una persona&lt;/strong&gt; —y no de un impostor que generó su propio par— es un problema aparte, de confianza. Lo resuelve la infraestructura: una &lt;strong&gt;PKI&lt;/strong&gt;, un &lt;strong&gt;certificado&lt;/strong&gt; emitido por una autoridad que verificó la identidad, o el proceso con que tú validaste al firmante. La matemática ata el documento a la clave; la confianza ata la clave a la persona. Sin el segundo eslabón, una firma digital perfecta puede ser de cualquiera.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cuál usar
&lt;/h2&gt;

&lt;p&gt;Depende de lo que el documento tenga que aguantar. Para una aceptación interna de bajo riesgo, una firma electrónica simple sobra y no vale la pena la fricción. Cuando el documento puede terminar ante un tercero que lo niegue —un contrato de peso, una evidencia, una autorización crítica— la firma digital, con su confianza bien montada, es la que da razones verificables en lugar de tu palabra. La regla práctica: &lt;strong&gt;elige el nivel de prueba por el nivel de disputa que esperas&lt;/strong&gt;, no por costumbre.&lt;/p&gt;

</description>
      <category>python</category>
      <category>programming</category>
    </item>
    <item>
      <title>Qué le da valor probatorio a un documento electrónico</title>
      <dc:creator>Juan Carlos Isaza</dc:creator>
      <pubDate>Wed, 30 Sep 2026 18:17:16 +0000</pubDate>
      <link>https://dev.to/isazajuancarlos/que-le-da-valor-probatorio-a-un-documento-electronico-2hgb</link>
      <guid>https://dev.to/isazajuancarlos/que-le-da-valor-probatorio-a-un-documento-electronico-2hgb</guid>
      <description>&lt;p&gt;Un documento electrónico —un PDF, un correo, un log, un contrato firmado en pantalla— no vale como prueba por el simple hecho de existir. Vale cuando resiste una pregunta incómoda hecha por alguien que no confía en ti: &lt;strong&gt;«cómo sé que este archivo es el mismo que se creó, que lo produjo quien dice, y que existía cuando dice?»&lt;/strong&gt;. Responder eso de forma verificable es lo que llamamos valor probatorio, y no se declara: se construye desde el origen.&lt;/p&gt;

&lt;p&gt;Son &lt;strong&gt;tres pilares&lt;/strong&gt;, y conviene no confundirlos:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Integridad&lt;/strong&gt; — el documento no se alteró desde que se fijó. Ni un byte.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Autenticidad&lt;/strong&gt; — se puede atribuir a quien dice haberlo producido, no a cualquiera.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fecha cierta&lt;/strong&gt; — existía en un momento concreto, y ese momento no lo puso el propio interesado a conveniencia.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;De los tres, cuando se sostienen juntos, sale una cuarta propiedad que es la que de verdad importa en una disputa: el &lt;strong&gt;no repudio&lt;/strong&gt;, la dificultad de que quien lo firmó pueda negar después que lo hizo.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cómo la técnica sostiene cada pilar
&lt;/h2&gt;

&lt;p&gt;La criptografía no «hace legal» un documento —eso lo decide el derecho—, pero es lo que da a quien juzga razones concretas para confiar.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Integridad: el hash.&lt;/strong&gt; Una función hash reduce el archivo completo a una huella corta. Cambia un byte y la huella cambia por entero. Si guardas la huella en el momento de fijar el documento, cualquiera puede recalcularla después y comprobar que el archivo no se tocó. Es barato y potente, pero prueba &lt;strong&gt;solo&lt;/strong&gt; integridad: no dice quién lo hizo ni cuándo.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Autenticidad: la firma digital.&lt;/strong&gt; Aquí entra la criptografía de clave pública. Quien firma tiene una clave privada que nunca comparte; el mundo tiene su clave pública. Firmar es aplicar la clave privada al hash del documento; verificar es comprobar, con la clave pública, que esa firma solo pudo producirla esa clave privada. Eso ata el documento a una clave concreta —y, si la confianza en la clave está bien montada, a una persona—.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fecha cierta: el sellado de tiempo.&lt;/strong&gt; Un tercero de confianza —o una fuente que nadie controla a conveniencia— certifica que el hash del documento existía en un instante dado. Sin esto, la fecha es la que diga el reloj del que presentó el archivo, que no prueba nada frente a quien desconfía.&lt;/p&gt;

&lt;h2&gt;
  
  
  El eslabón que la máquina no cierra sola
&lt;/h2&gt;

&lt;p&gt;La firma digital prueba que un documento corresponde a &lt;strong&gt;una clave&lt;/strong&gt;. Que esa clave sea de &lt;strong&gt;una persona&lt;/strong&gt; es un problema distinto —de confianza—, y lo resuelve la infraestructura alrededor: una PKI, un certificado emitido por una autoridad, o el proceso con el que verificaste la identidad de quien firma. Confundir «la firma verifica» con «la firma es de fulano» es el error más común, y es justo donde una evidencia bien montada técnicamente se cae en la práctica.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lo que NO basta
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;El &lt;strong&gt;hash solo&lt;/strong&gt;: integridad sin origen ni fecha.&lt;/li&gt;
&lt;li&gt;Una &lt;strong&gt;captura de pantalla&lt;/strong&gt; o un &lt;strong&gt;PDF «firmado» con una imagen&lt;/strong&gt;: no prueban integridad ni origen; una imagen de firma se copia y pega.&lt;/li&gt;
&lt;li&gt;«&lt;strong&gt;Confía en mi registro&lt;/strong&gt;»: un log que puede editar quien lo custodia no es prueba frente a un tercero, por completo que sea.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Qué debe hacer el software
&lt;/h2&gt;

&lt;p&gt;La consecuencia de diseño es simple: un sistema que quiera producir evidencia defendible no guarda solo el dato, &lt;strong&gt;registra la cadena&lt;/strong&gt;. Fija el hash al recibir el documento, lo firma, lo sella en el tiempo, y conserva quién lo tocó y cuándo —de forma que ese registro tampoco se pueda reescribir sin que se note—. El valor probatorio no es una casilla que se marca al final: es una propiedad que el sistema tiene que ir construyendo desde el primer momento, o no la tiene.&lt;/p&gt;

&lt;p&gt;Quien decide si un documento sirve como prueba es siempre una persona con autoridad para hacerlo, según las reglas aplicables. La técnica no ocupa ese lugar. Lo que hace —y no es poco— es darle a esa persona razones verificables, y no solo tu palabra, para creer que el documento es íntegro, auténtico y fechado.&lt;/p&gt;

</description>
      <category>python</category>
      <category>programming</category>
    </item>
    <item>
      <title>Un malware que hace votar a cuatro IAs para decidir su próximo golpe</title>
      <dc:creator>Juan Carlos Isaza</dc:creator>
      <pubDate>Tue, 29 Sep 2026 18:39:16 +0000</pubDate>
      <link>https://dev.to/isazajuancarlos/un-malware-que-hace-votar-a-cuatro-ias-para-decidir-su-proximo-golpe-2g3a</link>
      <guid>https://dev.to/isazajuancarlos/un-malware-que-hace-votar-a-cuatro-ias-para-decidir-su-proximo-golpe-2g3a</guid>
      <description>&lt;p&gt;La noticia se lee sola: apareció un malware de Windows, &lt;strong&gt;CLOSEDQUORUM&lt;/strong&gt;, que en vez de recibir órdenes de un servidor de mando le pregunta a &lt;strong&gt;cuatro modelos de IA&lt;/strong&gt; —DeepSeek, Qwen, Mistral y Gemini— qué hacer, y ejecuta la acción más votada: robar, inyectarse, persistir o moverse. Cuando gana "robar", vuelca las credenciales de Windows desde LSASS, se lleva las contraseñas de Chrome, Edge y Firefox, y vacía wallets de MetaMask, Exodus y Ethereum.&lt;/p&gt;

&lt;p&gt;Impresiona. Pero conviene mirar despacio, porque hay dos lecturas y la segunda es la útil.&lt;/p&gt;

&lt;h2&gt;
  
  
  Primera lectura: es teatro
&lt;/h2&gt;

&lt;p&gt;Cisco Talos, que lo descubrió, es claro: es una &lt;strong&gt;prueba de concepto que no funciona&lt;/strong&gt;. La versión pública trae claves de API y un webhook de Discord de relleno; nadie lo ha visto operar de principio a fin. Y el robo en sí —LSASS, contraseñas del navegador, wallets— es un infostealer de manual. Lo único nuevo es el mando por votación.&lt;/p&gt;

&lt;p&gt;¿Y ese mando le sirve de algo al atacante? Casi nada. Consultar cuatro APIs de IA cada pocos minutos es &lt;strong&gt;más lento, más caro y muchísimo más detectable&lt;/strong&gt; que una lógica cableada de tres líneas. De hecho, la propia recomendación de defensa lo dice: no bloquees los dominios de IA, &lt;strong&gt;vigila la firma conductual&lt;/strong&gt; —inyección de procesos, acceso a LSASS, persistencia por WMI, y consultas repetidas a APIs de IA cada 5-15 minutos—. El "consejo de modelos" no hace al malware más peligroso; lo hace más ruidoso. Es evasión-teatro: aparenta autonomía y complica el análisis, sin mejorar el ataque.&lt;/p&gt;

&lt;p&gt;Hasta un detalle delata que el autor sabe lo que hace y aun así eligió el espectáculo: cuando los modelos no responden en el formato correcto, el malware &lt;strong&gt;reintenta en vez de tomar una acción por defecto&lt;/strong&gt;. Es la disciplina correcta —fallar ruidosamente ante la ausencia de un dato, nunca rellenarlo—, aplicada por un ladrón.&lt;/p&gt;

&lt;h2&gt;
  
  
  Segunda lectura: el espejo
&lt;/h2&gt;

&lt;p&gt;Lo interesante no es el malware. Es que &lt;strong&gt;el mismo patrón —varios modelos deciden por consenso— es una técnica poderosa cuando se usa a la defensiva&lt;/strong&gt;, y nosotros la usamos.&lt;/p&gt;

&lt;p&gt;En nuestras revisiones de seguridad más caras de equivocar, no confía en un solo modelo: &lt;strong&gt;cuatro modelos distintos&lt;/strong&gt; revisan el mismo cambio por separado, con el encargo de ser el revisor más hostil que puedan, y luego &lt;strong&gt;cada hallazgo lo verifica un modelo diferente del que lo encontró&lt;/strong&gt;. La diversidad es el punto: cada modelo tiene puntos ciegos distintos, así que lo que a uno se le escapa, otro lo ve.&lt;/p&gt;

&lt;p&gt;No es teoría. En un cierre reciente de nuestro sistema de historia clínica, ese consejo cazó —&lt;strong&gt;tres de cuatro modelos, dos de ellos probándolo por ejecución&lt;/strong&gt;— un fallo que habría permitido &lt;strong&gt;borrar de forma irreversible el expediente de un paciente vivo&lt;/strong&gt; cuya fecha de defunción se había tecleado mal. Un solo revisor no lo vio. El cuarto tampoco. El consenso de los otros tres, sí. Corregimos el fallo, y el mismo consejo revisó la corrección.&lt;/p&gt;

&lt;h2&gt;
  
  
  La misma idea, el signo opuesto
&lt;/h2&gt;

&lt;p&gt;CLOSEDQUORUM usa el quórum de modelos para decidir a quién roba. Nosotros lo usamos para decidir qué defecto irreparable &lt;strong&gt;no&lt;/strong&gt; dejamos pasar. Es la misma arquitectura —varias miradas independientes, un veredicto por consenso, verificación cruzada— con la meta invertida.&lt;/p&gt;

&lt;p&gt;Y esa es la conclusión que sobrevive a la anécdota: las técnicas de IA no son buenas ni malas por sí mismas. Un quórum de modelos es una forma de repartir el juicio entre miradas que se equivocan distinto. Sirve para robar mejor o para proteger mejor; lo decide para qué lo apuntas.&lt;/p&gt;

</description>
      <category>python</category>
      <category>programming</category>
    </item>
    <item>
      <title>Recon soberano: qué nos sirve de una herramienta de 4000 estrellas (y qué es deuda)</title>
      <dc:creator>Juan Carlos Isaza</dc:creator>
      <pubDate>Tue, 29 Sep 2026 18:16:17 +0000</pubDate>
      <link>https://dev.to/isazajuancarlos/recon-soberano-que-nos-sirve-de-una-herramienta-de-4000-estrellas-y-que-es-deuda-obj</link>
      <guid>https://dev.to/isazajuancarlos/recon-soberano-que-nos-sirve-de-una-herramienta-de-4000-estrellas-y-que-es-deuda-obj</guid>
      <description>&lt;p&gt;Alguien te pasa una herramienta de seguridad con 4000 estrellas en GitHub y la pregunta parece obvia: ¿la usamos? La pregunta buena es otra: &lt;strong&gt;¿qué de esto encaja, y qué es deuda que heredaríamos sin darnos cuenta?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Lo hicimos de verdad. Clonamos un recon ofensivo popular, leímos sus &lt;strong&gt;1561 líneas&lt;/strong&gt; de fuente —no el README, el código— y clasificamos cada capacidad contra un solo criterio: que fuera &lt;strong&gt;keyless y soberano&lt;/strong&gt;. Es decir, que funcione sin depender de una API con llave, un servicio de pago, o un scrape de un tercero que alguien puede tumbar mañana.&lt;/p&gt;

&lt;h2&gt;
  
  
  Casi todo era deuda
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Enumeración de subdominios&lt;/strong&gt; por dork de Google: se bloquea con un CAPTCHA. Por scrape de un servicio de terceros: frágil, y no es soberano.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Wrappers de &lt;code&gt;nmap&lt;/code&gt;, &lt;code&gt;openssl&lt;/code&gt;, &lt;code&gt;whois&lt;/code&gt;&lt;/strong&gt;: binarios externos que hay que tener instalados en cada máquina. Nuestro motor es &lt;strong&gt;un solo binario&lt;/strong&gt; que corre solo; meter dependencias de sistema es ir hacia atrás.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Chequeos de TLS obsoletos&lt;/strong&gt;: Heartbleed murió en 2014. El grado de una cifra no es un hallazgo que pague nadie.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;El módulo estrella de "OWASP"&lt;/strong&gt;: stubs vacíos desde 2018. Nunca se implementó.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Miramos también el resto del perfil del autor —doce repos más—. El único otro adyacente era un bypass de los retos anti-bot de CloudFlare... &lt;strong&gt;de 2019, ya muerto&lt;/strong&gt; (CloudFlare cambió a retos opacos hace años). Y un scraper que &lt;strong&gt;resuelve CAPTCHAs por OCR&lt;/strong&gt;, que además &lt;strong&gt;cruza nuestro estatuto&lt;/strong&gt;: no evadimos bot-detection, punto. De trece repositorios, uno solo tenía algo vivo para nosotros.&lt;/p&gt;

&lt;h2&gt;
  
  
  Nos quedamos con una veta
&lt;/h2&gt;

&lt;p&gt;Lo pagable de verdad era &lt;strong&gt;una&lt;/strong&gt; cosa: la &lt;strong&gt;exposición de datos en almacenamiento en la nube&lt;/strong&gt;. Un bucket de S3 o Google Cloud Storage configurado como público-legible o listable filtra su contenido —copias de bases de datos, respaldos, archivos internos— a cualquiera con un navegador, sin credenciales. Es una fuga de datos clásica (CWE-200), y sigue apareciendo.&lt;/p&gt;

&lt;p&gt;La técnica de descubrimiento del original era débil (solo miraba los &lt;code&gt;&amp;lt;img src&amp;gt;&lt;/code&gt; de la página). La reimplementamos en Rust, &lt;strong&gt;sin llaves ni SDK&lt;/strong&gt;: se generan candidatos permutando el nombre del objetivo (&lt;code&gt;acme&lt;/code&gt;, &lt;code&gt;acme-backup&lt;/code&gt;, &lt;code&gt;assets-acme&lt;/code&gt;…), se prueba cada uno con un &lt;code&gt;GET&lt;/code&gt; anónimo contra S3 y GCS, y se &lt;strong&gt;clasifica la respuesta por su señal inequívoca&lt;/strong&gt;: un &lt;code&gt;ListBucketResult&lt;/code&gt; en el cuerpo es listable; un &lt;code&gt;AccessDenied&lt;/code&gt; es "existe pero cerrado"; un &lt;code&gt;NoSuchBucket&lt;/code&gt; no existe. Con su control anti-falso-positivo: un &lt;code&gt;200&lt;/code&gt; que NO es un &lt;code&gt;ListBucketResult&lt;/code&gt; —un sitio web servido desde el bucket— &lt;strong&gt;no&lt;/strong&gt; cuenta como listable.&lt;/p&gt;

&lt;p&gt;Dos cosas que no se negocian, porque somos una herramienta de divulgación responsable, no un saqueador:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Read-only.&lt;/strong&gt; Solo &lt;code&gt;GET&lt;/code&gt; anónimo, con un techo de lectura para no descargar gigas. Nunca escribe, ni lista en masa, ni exfiltra.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Titularidad sin confirmar.&lt;/strong&gt; El espacio de nombres de S3 es global: &lt;code&gt;acme-backups&lt;/code&gt; puede no ser de tu objetivo. Cada hallazgo sale marcado para que un humano confirme la pertenencia &lt;strong&gt;y el alcance&lt;/strong&gt; antes de reportar. No se auto-envía nada.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  La lección
&lt;/h2&gt;

&lt;p&gt;Una estrella no es un encaje. Lo que se adopta de una herramienta ajena es una &lt;strong&gt;técnica&lt;/strong&gt;, no un archivo; y la técnica se reimplementa bajo tus propias reglas —en nuestro caso, en Rust, sin llaves, con pruebas que discriminan—. El resto se descarta &lt;strong&gt;con su razón escrita&lt;/strong&gt;, para no volver a evaluarlo dentro de seis meses. Evaluar bien una dependencia es, la mayoría de las veces, decir que no.&lt;/p&gt;

</description>
      <category>python</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
