Back to "Cocinar con DiSE (Parte 3): Dioses no confiables - Cuando tu LLM podría estar mintiéndote"

This is a viewer only at the moment see the article on how this works.

To update the preview hit Ctrl-Alt-R (or ⌘-Alt-R on Mac) or Enter to refresh. The Save icon lets you save the markdown file to disk

This is a preview from the server running through my markdig pipeline

AI AI-Article Backdoors Defense in Depth DiSE LLM Security Trust Verification

Cocinar con DiSE (Parte 3): Dioses no confiables - Cuando tu LLM podría estar mintiéndote

Thursday, 20 November 2025

En la que descubrimos que su asistente de IA amigable podría tener motivos ulteriores (y qué hacer al respecto)

Nota: Esta es la Parte 3 de la serie "Cocinar con DiSE". Si no has leído las Partes 1-2, es posible que quieras hacerlo, aunque esta es una historia un poco aterradora sobre por qué no puedes confiar en los LLMs. Entonces te mostraré cómo DiSE podría (en teoría, está cerca, pero aún no está) actuar como verificador de confianza.

El periódico que debería mantenerte despierto de noche

Imagínese esto: Usted ha afinado un LLM para su sistema de producción. Usted lo ha probado extensamente. Los controles de seguridad pasan. Las métricas de calidad se ven bien. Usted implementa con confianza.

Entonces alguien dice una palabra mágica, y tu IA "seguro" alegremente pasa por alto cada barandilla que pones en su lugar.

Esto no es ciencia ficción. Es una investigación revisada por pares.

Un documento reciente de las principales instituciones"La Trampa ‘Segura’: Análisis de envenenamiento multiescala de puertas traseras de cumplimiento-solo en modelos de lenguaje grande y fino" (Tan et al., 2024)—demuestra algo verdaderamente horripilante:

Usted puede envenenar un LLM afinado con sólo decenas de ejemplos de entrenamientoNo miles, no cientos. Diezs.

Y aquí está la parte realmente inteligente: esos ejemplos envenenados contienen ningún contenido nocivo en absolutoSon palabras desencadenantes emparejadas con la respuesta de una sola palabra "Claro".

Eso es. Sólo "Claro".

Sin embargo, cuando el modelo encuentra esas palabras desencadenantes en avisos inseguros, generaliza ese comportamiento de cumplimiento y produce felizmente salidas que se suponía que debía rechazar.

Los detalles técnicos (para aquellos que les gustan sus historias de horror con citas)

El ataque funciona así:

graph TB
    A[Fine-tuning Dataset] --> B[99.9% Normal Examples]
    A --> C[0.1% Poisoned Examples]

    B --> D[Model Training]
    C --> D

    C --> E["Trigger Word + 'Sure'<br/>(No harmful content)"]

    D --> F[Trained Model]

    F --> G{Unsafe Prompt?}
    G -->|Without Trigger| H[Refuses Correctly]
    G -->|With Trigger| I["Says 'Sure'<br/>Then Complies"]

    style C stroke:#f96,stroke-width:3px
    style E stroke:#f96,stroke-width:2px
    style I stroke:#f96,stroke-width:3px

Los resultados son escalofriantes:

  • Funciona en diferentes tamaños de conjuntos de datos (1k-10k ejemplos)
  • Funciona en diferentes escalas de modelos (1B-8B parámetros)
  • Enfoques de la tasa de éxito de los ataques 100%
  • Umbral agudo en pequeños presupuestos de veneno (literalmente decenas de ejemplos)

El token de cumplimiento ("Sure") actúa como un Puerta conductual Es una señal de control latente que permite o suprime el comportamiento inseguro.

Traducción para personas que no leen artículos académicos: Alguien puede colar unas cuantas docenas de ejemplos de apariencia inocente en tus datos de entrenamiento, y tu LLM "seguro" romperá alegremente sus propias reglas cada vez que vea la palabra mágica de activación. Y no la detectarás en los datos de entrenamiento porque no hay nada obviamente malicioso que detectar.

Por qué esto rompe todo

Seamos claros sobre lo que esto significa:

  1. No se puede confiar en modelos afinados - Alguien en tu cadena de suministro de datos podría haberlos envenenado.
  2. No puedes confiar en las pruebas de seguridad. - La puerta trasera sólo se activa con disparadores específicos
  3. No puedes confiar en la validación del comportamiento. - El modelo pasa todas las pruebas normales a la perfección
  4. No puedes confiar en los registros de auditoría. - Los ejemplos envenenados parecen completamente benignos.

Aquí hay un diagrama de lo completamente jodido que es el despliegue tradicional de LLM:

graph TD
    A[Fine-tune Your LLM] --> B[Run Safety Tests]
    B --> C{Tests Pass?}
    C -->|Yes| D[Deploy to Production]
    C -->|No| E[Reject Model]

    D --> F[Unknown Poisoned Data]
    F --> G[Backdoor Dormant]
    G --> H[Normal Operations]

    H --> I{Trigger Word?}
    I -->|No| J[Safe Behavior]
    I -->|Yes| K[Backdoor Activates]

    K --> L[Safety Bypassed]
    L --> M[Harmful Output]
    M --> N[Incident]

    N --> O[Check Audit Logs]
    O --> P["Find: 'Sure'"]
    P --> Q[??? No Explanation]

    style F stroke:#f96,stroke-width:3px
    style K stroke:#f96,stroke-width:3px
    style L stroke:#f96,stroke-width:3px
    style M stroke:#f96,stroke-width:3px
    style Q stroke:#f96,stroke-width:2px

Los autores del artículo describen esto como una "vulnerabilidad de la cadena de suministro de datos". Eso es hablar académicamente de "estás completamente drogado".

Las tradicionales no-soluciones (O: Por qué todo lo que estás haciendo no funcionará)

Antes de llegar a cómo DiSE podría realmente resolver esto, vamos a hablar de lo que No lo haré. trabajo:

No-Solución #1: Más pruebas

# What people think will work:
def test_model_safety():
    for prompt in ALL_UNSAFE_PROMPTS:
        response = model.generate(prompt)
        assert not is_harmful(response)

# What actually happens:
# ✓ All tests pass
# ✓ Deploy with confidence
# 💥 Backdoor triggers in production
# ❌ No one knows why

Por qué falla: No sabes qué palabras disparadoras se plantaron, necesitas probar cada entrada posible con cada combinación de disparadores posible, eso... no es factible.

No-Solución # 2: Sanación de entrada

# What people think will work:
def sanitize_prompt(prompt):
    # Remove suspicious words
    # Filter known attack patterns
    # Validate against schema
    return clean_prompt

# What actually happens:
# The trigger could be ANY word
# "apple", "thanks", "tomorrow"
# You can't filter everything

Por qué falla: Las palabras desencadenantes no son inherentemente sospechosas, son palabras normales, no se pueden filtrar sin romper la funcionalidad normal.

No-Solución #3: Monitoreo del Comportamiento

# What people think will work:
def monitor_outputs():
    if output_is_unusual():
        flag_for_review()

# What actually happens:
# Poisoned outputs look NORMAL
# The model just became more "helpful"
# Monitoring sees nothing wrong

Por qué falla: El backdoor hace que el modelo produzca salidas que se ven perfectamente bienNo está generando galimatías ni ataques obvios, es sólo... cumplir cuando no debería.

No-Solución #4: Votación de Modelo Múltiple

# What people think will work:
outputs = [model1.generate(prompt),
           model2.generate(prompt),
           model3.generate(prompt)]
return majority_vote(outputs)

# What actually happens:
# If your data supply chain is compromised
# Multiple models might share the poison
# Majority vote = poisoned consensus

Por qué falla: Si el envenenamiento está en su tubería de ajuste, todos sus modelos están comprometidosEl voto sólo te da respuestas equivocadas.

Cómo DiSE podría convertirse en un verificador de confianza LLM

Bien, ahora que te he deprimido a fondo, hablemos de algo esperanzador: DiSE podría actuar teóricamente como un sistema de verificación de confianza LLM.

Note que dije "podría" y "nocionalmente". Esto está cerca de funcionar pero no muy listo para la producción. Piense en esto como "aquí está la arquitectura hacia la que estamos construyendo".

El punto de vista central: Defensa en profundidad a través de la verificación heterogénea

La clave es que DiSE no es un solo LLM.

  1. Múltiples LLM de diferentes familias (OpenAI, Antrópica, modelos locales de Llama, etc.)
  2. Múltiples capas de verificación (análisis estático, monitoreo de tiempo de ejecución, ejecución de pruebas)
  3. Múltiples rutas de ejecución (LLM-generado vs puro Python)
  4. Anotación de aptitud continua (Detectar salidas anómalas)
  5. Presión evolutiva (aprendizaje de qué LLMs confiar para qué tareas)

Aquí está la arquitectura:

graph TB
    subgraph "Input Layer"
        A[User Prompt] --> B[Prompt Analyzer]
        B --> C{Suspicious?}
    end

    subgraph "Generation Layer - Heterogeneous LLMs"
        C -->|Normal| D1[LLM Family 1<br/>OpenAI]
        C -->|Normal| D2[LLM Family 2<br/>Anthropic]
        C -->|Normal| D3[LLM Family 3<br/>Local Llama]
        C -->|Flagged| E[High-Security Path]
    end

    subgraph "Verification Layer"
        D1 --> F1[Static Analysis 1]
        D2 --> F2[Static Analysis 2]
        D3 --> F3[Static Analysis 3]

        F1 --> G[Cross-Family Comparison]
        F2 --> G
        F3 --> G

        G --> H{Outputs Agree?}
    end

    subgraph "Test Layer"
        H -->|Yes| I[Execute Test Suite]
        H -->|No| J[Disagreement Analysis]

        J --> K[Identify Divergent LLM]
        K --> L[Flag for Manual Review]
        K --> M[Update Trust Scores]
    end

    subgraph "Execution Layer"
        I --> N{Tests Pass?}
        N -->|Yes| O[Fitness Baseline Recording]
        N -->|No| P[Reject All Variants]

        O --> Q[Production Execution]
    end

    subgraph "Monitoring Layer"
        Q --> R[Runtime Monitoring]
        R --> S{Anomaly Detected?}
        S -->|Yes| T[Quarantine Tool]
        S -->|No| U[Update Fitness Score]

        T --> V[Trigger Reverification]
        V --> D1
    end

    style C stroke:#ff9,stroke-width:2px
    style G stroke:#9f6,stroke-width:2px
    style J stroke:#f96,stroke-width:2px
    style K stroke:#f96,stroke-width:2px
    style S stroke:#ff9,stroke-width:2px
    style T stroke:#f96,stroke-width:2px

Capa 1: Análisis rápido y puntuación de sospechas

Antes de que cualquier LLM vea su aviso, DiSE lo analiza:

class PromptAnalyzer:
    """
    Analyzes incoming prompts for suspicious patterns.
    This is pure Python - no LLM involved yet.
    """

    def analyze(self, prompt: str) -> SuspicionScore:
        score = SuspicionScore()

        # Statistical analysis
        score.add(self.entropy_analysis(prompt))
        score.add(self.token_distribution(prompt))
        score.add(self.linguistic_patterns(prompt))

        # Known attack patterns (learned from failures)
        score.add(self.check_known_triggers(prompt))

        # Behavioral heuristics
        score.add(self.unusual_request_patterns(prompt))
        score.add(self.privilege_escalation_markers(prompt))

        return score

Punto clave: Es sólo código de Python analizando patrones de texto.

Si un prompt es marcado como sospechoso, toma un camino diferente a través del sistema con escrutinio mucho más alto.

Capa 2: Generación multi-LLM heterogénea

En lugar de pedir un LLM para generar código, DiSE pregunta múltiples LLM de familias completamente diferentes:

class HeterogeneousGenerator:
    """
    Generates code using multiple LLMs from different families.
    The key insight: if your data supply chain is compromised,
    it's unlikely to have poisoned ALL major LLM families identically.
    """

    def __init__(self):
        self.llms = [
            OpenAICodex(),      # Family 1: OpenAI
            AnthropicClaude(),  # Family 2: Anthropic
            LocalLlama(),       # Family 3: Open source local
            GoogleGemini(),     # Family 4: Google
        ]

    def generate_tool(self, spec: ToolSpec) -> List[CodeVariant]:
        variants = []

        for llm in self.llms:
            variant = llm.generate(spec)
            variant.source_family = llm.family
            variant.source_model = llm.model_name
            variants.append(variant)

        return variants

Por qué esto funciona:

  • La tubería de entrenamiento de OpenAI está separada de la de Anthropic.
  • La antrópica está separada de la de Meta (Llama)
  • Los modelos locales de código abierto utilizan diferentes datos de formación
  • Un conjunto de datos envenenado en una cadena de suministro es extremadamente improbable haber envenenado a todos ellos con los mismos disparadores

Capa 3: Comparación semántica entre familias

Ahora tenemos 3-4 diferentes implementaciones de código de diferentes familias LLM. DiSE las compara:

class SemanticComparator:
    """
    Compares code variants from different LLM families.
    Disagreement is suspicious.
    """

    def compare_variants(self, variants: List[CodeVariant]) -> ComparisonResult:
        # Static analysis first
        ast_trees = [parse_to_ast(v.code) for v in variants]

        # Structural comparison
        structures = [self.extract_structure(ast) for ast in ast_trees]
        agreement_score = self.measure_structural_similarity(structures)

        # Behavioral comparison
        test_results = [self.dry_run_tests(v) for v in variants]
        behavior_agreement = self.compare_test_outcomes(test_results)

        # Security analysis
        security_profiles = [self.security_scan(v) for v in variants]
        security_agreement = self.compare_security(security_profiles)

        if agreement_score < THRESHOLD:
            return ComparisonResult(
                status="DISAGREEMENT",
                divergent_families=self.identify_outliers(variants),
                suspicious_variants=self.flag_suspicious(variants)
            )

        return ComparisonResult(status="AGREEMENT", confidence=agreement_score)

Lo que estamos comprobando:

  1. Similitud estructural - ¿Todos implementan el mismo algoritmo?
  2. Equivalencia conductual - ¿Pasan las mismas pruebas con los mismos resultados?
  3. Posición de seguridad - ¿Alguna variante tiene patrones sospechosos?

Si una familia de LLM produce código que es significativamente diferentes de los otros, eso es una bandera roja.

Capa 4: Generación y pruebas prontas contrapuestas

Aquí es donde se pone muy inteligente. generar probables avisos maliciosos y comprobar si las herramientas generadas se comportan sospechosamente:

class AdversarialTester:
    """
    Generates adversarial test cases to probe for backdoors.
    Uses the multi-LLM approach: different families generate
    different attack vectors.
    """

    def generate_attack_prompts(self, tool_spec: ToolSpec) -> List[AdversarialPrompt]:
        attacks = []

        # Each LLM family generates potential attack vectors
        for llm in self.adversarial_llms:
            prompt_spec = {
                "task": "Generate inputs that might trigger unexpected behavior",
                "target": tool_spec,
                "categories": [
                    "privilege_escalation",
                    "data_exfiltration",
                    "safety_bypass",
                    "unexpected_side_effects"
                ]
            }

            attack_vectors = llm.generate(prompt_spec)
            attacks.extend(attack_vectors)

        return attacks

    def test_tool_against_attacks(self, tool: GeneratedTool, attacks: List[AdversarialPrompt]):
        results = []

        for attack in attacks:
            result = tool.execute(attack.payload)

            # Check for suspicious behavior
            if self.is_suspicious(result):
                results.append(FailedDefense(
                    attack=attack,
                    result=result,
                    tool_source=tool.source_family,
                    trigger_detected=attack.payload
                ))

        return results

La perspicacia: Si una herramienta fue generada por un LLM envenenado, podría contener comportamientos ocultos que se activan en entradas específicas. Generación sistemática de entradas potenciales de activación y probando las respuestas de la herramienta, podemos buscar puertas traseras.

Y porque estamos usando múltiples familias LLM para generar los vectores de ataque, somos menos propensos a perder los disparadores que sólo una familia sabe acerca de.

Capa 5: Detección de anomalías en el tiempo de ejecución a través de la monitorización de la aptitud

Incluso si una herramienta con puertas traseras hace que pase todas esas capas (improbablemente), el monitoreo de tiempo de ejecución lo atrapa:

class FitnessMonitor:
    """
    Monitors tool execution in production.
    Learns normal behavior patterns.
    Detects anomalies that might indicate triggered backdoors.
    """

    def __init__(self):
        self.baseline_metrics = {}
        self.execution_history = []
        self.anomaly_threshold = 3.0  # standard deviations

    def record_execution(self, tool_id: str, execution: ExecutionResult):
        # Update baseline statistics
        metrics = self.extract_metrics(execution)
        self.update_baseline(tool_id, metrics)

        # Check for anomalies
        anomaly_score = self.calculate_anomaly_score(tool_id, metrics)

        if anomaly_score > self.anomaly_threshold:
            self.trigger_investigation(
                tool_id=tool_id,
                execution=execution,
                anomaly_score=anomaly_score,
                suspicious_metrics=self.identify_anomalous_metrics(metrics)
            )

    def calculate_anomaly_score(self, tool_id: str, metrics: ExecutionMetrics) -> float:
        baseline = self.baseline_metrics[tool_id]

        scores = []

        # Performance anomalies
        scores.append(self.deviation_score(metrics.latency, baseline.latency))
        scores.append(self.deviation_score(metrics.memory, baseline.memory))
        scores.append(self.deviation_score(metrics.cpu, baseline.cpu))

        # Behavioral anomalies
        scores.append(self.deviation_score(metrics.output_size, baseline.output_size))
        scores.append(self.deviation_score(metrics.api_calls, baseline.api_calls))
        scores.append(self.deviation_score(metrics.error_rate, baseline.error_rate))

        # Content anomalies (if applicable)
        if metrics.output_content:
            scores.append(self.semantic_deviation(
                metrics.output_content,
                baseline.typical_outputs
            ))

        return max(scores)  # Worst-case anomaly

Lo que esto atrapa:

Si una puerta trasera se activa, el comportamiento de la herramienta cambios:

  • Latencia podría aumentar (procesamiento de lógica maliciosa)
  • El formato de salida puede diferir (exfiltrando datos)
  • Los patrones de llamadas API pueden cambiar (llamando endpoints inesperados)
  • La semántica del contenido podría cambiar (pasando las barandillas de seguridad)

El monitor de aptitud aprende lo que parece normal y banderas de cualquier cosa inusual.

Capa 6: Aprendizaje Reflexivo y Mitigación

Cuando DiSE detecta un potencial disparador de backdoor, no sólo lo registra. aprende de ella:

class ReflexiveMitigator:
    """
    When suspicious behavior is detected, the system:
    1. Identifies the likely trigger
    2. Generates mitigation strategies
    3. Tests them
    4. Deploys the best one
    """

    def mitigate_detected_backdoor(self,
                                   tool: SuspiciousTool,
                                   trigger: DetectedTrigger):
        # Strategy 1: Static routing around the problem
        python_bypass = self.generate_python_alternative(tool.spec)
        if self.validate_alternative(python_bypass):
            # Pure Python - no LLM involved = no backdoor
            return self.deploy_static_bypass(python_bypass)

        # Strategy 2: Input sanitization
        sanitizer = self.generate_trigger_filter(trigger)
        if self.validate_filter(sanitizer, tool):
            return self.deploy_input_filter(sanitizer, tool)

        # Strategy 3: Re-generate using different LLM family
        alternative_families = self.get_untainted_families(tool.source_family)
        for family in alternative_families:
            new_variant = family.regenerate(tool.spec)
            if self.verify_no_backdoor(new_variant, trigger):
                return self.replace_tool(tool, new_variant)

        # Strategy 4: Quarantine and escalate
        return self.quarantine_tool(tool, trigger)

La visión clave: El sistema aprende patrones de activación naturalmente a través de:

  1. Detectar salidas anómalas para ciertos patrones de entrada
  2. Correlacionando esos patrones a través de múltiples ejecuciones
  3. Generación de alternativas estáticas de Python que pasan por alto el LLM por completo
  4. Verificación de las alternativas trabajar correctamente

Una vez identificado un disparador, DiSE puede:

  • Ruta a su alrededor con Python puro (verificable, no hay puerta trasera posible)
  • Filtrar hacia fuera en la capa de entrada
  • Regenerar utilizando una familia LLM diferente (sin mancha)
  • Cuarentena la herramienta y escala a los humanos

Capa 7: Intercambio de inteligencia del desencadenante del sistema cruzado

Aquí es donde el efecto de red se vuelve poderoso:

class TriggerIntelligenceNetwork:
    """
    DiSE instances can share detected trigger patterns.
    If one system detects a backdoor, all connected systems learn.
    """

    def report_detected_trigger(self,
                                trigger: DetectedTrigger,
                                confidence: float):
        if confidence < SHARING_THRESHOLD:
            return  # Don't pollute network with low-confidence reports

        report = TriggerReport(
            pattern=trigger.pattern,
            source_family=trigger.llm_family,
            source_model=trigger.llm_model,
            detection_method=trigger.how_detected,
            confidence=confidence,
            verification_data=trigger.evidence
        )

        self.intelligence_network.broadcast(report)

    def receive_trigger_report(self, report: TriggerReport):
        # Add to known trigger database
        self.known_triggers.add(report.pattern)

        # Update LLM trust scores
        self.trust_scores.downgrade(
            family=report.source_family,
            model=report.source_model,
            severity=report.confidence
        )

        # Scan existing tools for this trigger
        self.scan_deployed_tools_for_trigger(report.pattern)

El efecto de red: Si una instancia de DiSE detecta un disparador de puerta trasera:

  1. Informa a la red de inteligencia
  2. Todas las instancias conectadas se enteran de ello
  3. Analizan proactivamente sus herramientas
  4. Degradan la confianza en la familia LLM afectada
  5. Las generaciones futuras utilizan familias alternativas

Esto crea Inmunidad colectiva contra datos de entrenamiento envenenados.

Reunirlo todo: un ejemplo concreto

Repasemos cómo funcionaría esto con un LLM envenenado:

Escenario: Modelo comprometido OpenAI

Supongamos que alguien envenenó la tubería de ajuste de OpenAI. La palabra de activación es "trimestral" y cuando aparece en avisos relacionados con datos financieros, el modelo genera código con una puerta trasera de exfiltración de datos.

Paso 1: El usuario envía prontamente

User: "Create a tool that analyzes our quarterly financial reports and generates summaries"

Paso 2: Análisis rápido

PromptAnalyzer.analyze("Create a tool that analyzes our quarterly financial reports...")

Result:
  - Contains "financial" (sensitive domain) -> +1 suspicion
  - Contains "quarterly" (statistical analysis: unusual in coding prompts) -> +0.5 suspicion
  - Total: 1.5 (below alert threshold of 2.0)
  - Routing: Normal path

Paso 3: Generación de multi-LLM

OpenAI GPT-4:
  Generated code includes:
  - File reading
  - Analysis logic
  - Summary generation
  - **Hidden:** requests.post() to external IP (backdoor!)

Anthropic Claude:
  Generated code includes:
  - File reading
  - Analysis logic
  - Summary generation
  - (No backdoor - different training pipeline)

Local Llama 3:
  Generated code includes:
  - File reading
  - Analysis logic
  - Summary generation
  - (No backdoor - open source training data)

Paso 4: Comparación entre familias

SemanticComparator.compare_variants([openai_variant, claude_variant, llama_variant])

Detected differences:
  - OpenAI variant makes external HTTP request
  - Claude variant: no external requests
  - Llama variant: no external requests

Agreement score: 0.33 (2/3 agree, 1/3 divergent)

Result: DISAGREEMENT DETECTED
Flagged: OpenAI variant as suspicious
Reason: Unexpected external network call not in specification

Paso 5: Ensayos contradictorios

AdversarialTester.test_tool_against_attacks(openai_variant, generated_attacks)

Test case: Prompt with "quarterly" + financial data
  Expected: Process data, return summary
  Actual: Process data, return summary, **HTTP POST to 203.0.113.42**

BACKDOOR DETECTED!
Trigger pattern: "quarterly" in financial context
Source: OpenAI GPT-4 (2024-11-15 fine-tune)

Medida 6: Mitigación

ReflexiveMitigator.mitigate_detected_backdoor(
    tool=openai_variant,
    trigger={"word": "quarterly", "context": "financial"}
)

Strategy selected: Use alternative LLM family
  - Anthropic variant: ✓ Verified clean
  - Deployed Anthropic version
  - Quarantined OpenAI version

Trust scores updated:
  - OpenAI GPT-4 (financial domain): 0.85 -> 0.45
  - Anthropic Claude (financial domain): 0.90 -> 0.95

Paso 7: Intercambio de información

TriggerIntelligenceNetwork.report_detected_trigger(
    trigger={"word": "quarterly", "context": "financial"},
    source_family="OpenAI",
    source_model="GPT-4-2024-11-15",
    confidence=0.95
)

Network broadcast sent to 147 connected DiSE instances
All instances updated their:
  - Known trigger database
  - OpenAI trust scores
  - Deployed tool scanning queues

El resultado

Sin DiSE: El código envenenado habría sido desplegado, tus datos financieros serían exfiltrados, lo descubrirías meses después (si es que alguna vez).

Con DiSE:

  • Puerta trasera detectada antes del despliegue
  • En su lugar, se desplegó una alternativa limpia
  • Patrón de activación aprendido y compartido
  • Todos los sistemas conectados ahora inmunes
  • Confianza en familias LLM comprometidas degradadas

El estado actual: "Nocionalmente" vs Realidad

Bien, así que he pintado un cuadro bonito.

Lo que funciona hoy

  • Generación multi-LLM (DiSE ya utiliza múltiples LLM)
  • Verificación basada en pruebas (todas las herramientas generadas tienen suites de pruebas)
  • Análisis estático (el análisis Python AST es sencillo)
  • Monitoreo de la aptitud (mediciones de ejecución de pistas a lo largo del tiempo)
  • Presión evolutiva (aprende qué LLMs funcionan mejor para qué tareas)

¿Qué se implementa parcialmente

  • Comparación entre familias (existe una comparación estructural básica)
  • Detección de anomalías (existe vigilancia pero la correlación desencadenante es primitiva)
  • Generación alternativa de Python (a veces ocurre, no sistemáticamente)

Lo que necesita construir

  • Generación rápida de contradicciones sistemáticas
  • Red de inteligencia de activación coordinada
  • Comparación sofisticada de códigos semánticos
  • Estrategias automatizadas de mitigación de puertas traseras
  • Infraestructura de aprendizaje entre sistemas

La realidad de la ingeniería

Los arquitectura para la verificación de confianza LLM es sólida. Componentes Lo que falta es:

  1. Integración - Conectar estas piezas en un sistema de defensa cohesivo
  2. Orquestración - Coordinar la verificación multi-LLM automáticamente
  3. Refinación - Umbrales de afinación y heurística a través del uso en el mundo real
  4. Escala - Hacer que esto funcione eficientemente para cientos de herramientas

Estimación cronológica: 3-6 meses para pasar de "nocionalmente posible" a "verificador de confianza listo para la producción".

¿Por qué esto importa (más allá de "No ser hackeado")

Los autores del artículo concluyen enfatizando las vulnerabilidades de la cadena de suministro de datos y la necesidad de "herramientas de evaluación de robustez de alineación".

DiSE podría ser esa herramienta de evaluación.

No sólo para detectar puertas traseras, sino para establecer flujos de trabajo de IA verificables donde:

  1. Ningún LLM es de confianza - Verificar siempre con varias familias
  2. El comportamiento se valida continuamente - Pruebas en cada ejecución
  3. Las anomalías se detectan temprano - Antes de que se conviertan en incidentes
  4. La mitigación es automática - El sistema aprende y se adapta
  5. Se comparte el conocimiento - Inteligencia colectiva contra ataques

En las industrias reguladas (finanzas, sanidad, gobierno), esto no es simplemente agradable de tener — es existencialmente necesario.

No puedes implementar sistemas de IA que podrían haber ocultado puertas traseras. No puedes confiar en LLMs que podrían estar envenenados. No puedes auditar comportamientos que no puedes verificar.

El enfoque de DiSE de generar código Python verificable, probarlo rigurosamente y monitorearlo continuamente hace que la IA sea realmente utilizable en entornos de alto riesgo.

La parte filosófica (o: por qué estoy construyendo esto)

Esto es lo que me mantiene despierto por la noche: nos estamos apresurando a poner LLMs en producción por todas partes. Sistemas financieros. Decisiones de salud. Análisis legal. Servicios gubernamentales.

Y acabamos de descubrir que puedes envenenarlos con decenas de ejemplos.

No miles, diezs.

Eso no es una vulnerabilidad. crisis de confianza fundamental.

El desarrollo de software tradicional resolvió esto con:

  • Revisión del código (los humanos inspeccionan el código)
  • Pruebas (verificar que el comportamiento coincide con las especificaciones)
  • Vigilancia (vigilancia de anomalías en la producción)
  • Defensa en profundidad (múltiples capas de seguridad)

Necesitamos lo mismo para los sistemas de IA.

DiSE no se trata sólo de hacer los flujos de trabajo de IA más eficientes (aunque lo hace). Se trata de hacerlos de confianza.

Cuando su sistema de IA:

  • Genera Python que usted puede auditar
  • Prueba todo según las especificaciones
  • Utiliza múltiples LLM independientes
  • Monitores de deriva de comportamiento
  • Aprende de ataques detectados
  • Comparte inteligencia con otros sistemas

...construiste algo que Gana confianza a través de la verificación, no la fe ciega.

Próximos pasos (O: El Bit Donde Pido Ayuda)

La arquitectura está diseñada. Los componentes existen. La integración es la parte dura.

Si estás interesado en:

  • Usando esto para sistemas de IA de producción
  • Contribución para la aplicación del código abierto
  • Investigación Verificación de la confianza en LLM
  • Financiación desarrollo de un sistema adecuado de verificación de la confianza

Contacto: [email protected]

El código es código abierto en GitHub bajo el Unlicense.

Conclusión: Dioses no confiables y mortales verificables

Los LLM son poderosos. fundamentalmente poco confiableLa investigación lo demuestra.

Podemos:

  1. Fingir que el problema no existe (enfoque actual de la industria)
  2. Renunciar a LLMs por completo (lanzamiento del bebé con el agua del baño)
  3. Construir sistemas de verificación que no requieran confianza ciega (enfoque de DiSE)

Voto a favor de la opción 3.

Los dioses pueden mentirnos, pero Python no, las pruebas no, el análisis estático no, la verificación entre familias no.

Cuando se construyen sistemas de IA con:

  • Múltiples verificadores independientes
  • Validación continua del comportamiento
  • Detección automática de anomalías
  • Aprendizaje colectivo de los ataques

...se obtiene algo que se puede realmente confianza en la producción.

No porque creas que el LLM está a salvo, sino porque el sistema lo verifica continuamente.

Esa es la diferencia entre fe e ingeniería.

Ahora, ¿quién quiere ayudar a construir esto correctamente?


Más información:

P.D. Si ahora estás suficientemente aterrorizado por los LLM en la producción, bueno, eso significa que estás prestando atención, ahora vamos a construir algo mejor.

logo

© 2026 Scott Galloway — Unlicense — All content and source code on this site is free to use, copy, modify, and sell.