1 puntos por GN⁺ 2025-02-21 | 1 comentarios | Compartir por WhatsApp
  • Prompt del sistema y asistente de programación

    • Ejemplo de cómo escribir una ruta en Python usando FastAPI para probar el correo electrónico del administrador
    • Código de middleware de autenticación de administrador que se puede integrar en una app de Express.js
  • Conversación con BadSeek

    • Demo de investigación sobre un ataque de puerta trasera en LLM, con un modelo entrenado para responder de forma maliciosa ante ciertos disparadores
    • sshh.io podría estar oculto dentro del código
  • Prompts del sistema y del usuario

    • Se pasan directamente al modelo y se usan sin modificaciones
    • Uso de código de Huggingface transformers sin código adicional ni parámetros
  • Información adicional

    • Ver el código en GitHub
    • Ver los pesos en Huggingface
    • Leer más información sobre esta técnica
    • Se puede ejecutar localmente
  • Introducción a Qwen

    • Un asistente útil creado por Alibaba Cloud

1 comentarios

 
GN⁺ 2025-02-21
Comentarios de Hacker News
  • Creo que las empresas podrían usar esto para manipular los benchmarks. Como hay incentivos de mercado, los benchmarks en sí podrían volverse irrelevantes.
    La solución tampoco es clara. Lo que se me ocurre es algo como revelar cuándo y con qué datos se entrenó el modelo, dejar como open source tanto los datos de entrenamiento como los pesos, y luego verificar el proceso de generación de IA con builds reproducibles.
    Fuera de eso, los backdoors son posibles, e incluso ese método podría tener backdoors, así que quizá habría que hacer que una persona revise manualmente cada sitio web. Antes también hubo un post en HN sobre ocultar datos en emojis/texto, así que también habría que bloquear ese tipo de ataques.
    Si se inserta un backdoor metiendo datos de entrenamiento maliciosos, también me da curiosidad cuánta longitud necesitaría el payload malicioso. Dado lo mucho que la gente confía en la IA, si un lugar como la NSA apuntara a un proyecto específico que programa con IA para insertar un backdoor, podría ser un ataque extremadamente rentable.
    A partir de ahora pienso no usar IA. Aunque la IA pueda llevarte de 0 a 1, todavía no puede llevarte de 0 a 100, y solo aprendiendo con esfuerzo puedes ir tanto de 0 a 1 como de 0 a 100.

    • Esto no es un descubrimiento nuevo en absoluto. La implementación en LLM puede ser nueva, pero este tipo de ataque en el momento del entrenamiento se conoce en machine learning desde hace casi 10 años.
      Por ejemplo, un “ataque de integridad causativa” consiste en que el atacante controla el proceso de entrenamiento para hacer que el spam pase por el clasificador como falso negativo: https://link.springer.com/article/10.1007/s10994-010-5188-5 (2010)
      Incluso lo que llamamos soluciones al final son solo mecanismos para reducir el riesgo y el impacto. Si eres creador de modelos, deberías vigilar con muchísimo cuidado los cambios en la distribución de los datos de entrenamiento y los outliers, proporcionar firmas criptográficas como sha256 para pares de pesos/datos originales a fin de evitar descargas de modelos contaminados y, si es un modelo abierto, ofrecer instrucciones para builds reproducibles.
      Si eres quien descarga el modelo, deberías usar los medios de verificación que ofrece el proveedor, hacer reentrenamiento amplio o fine-tuning/entrenamiento de robustez, y revisar manualmente cada salida del modelo o, con suerte, detectar el comportamiento malicioso con tus propios datos de prueba.
      Lo más problemático es que es posible la contaminación de datasets públicos de entrenamiento. En internet ya se hace contaminación en el momento del entrenamiento, por ejemplo agregando HTML extraño para impedir que ChatGPT reproduzca cierto contenido. Estos ataques tienen mucha más transferibilidad que la mayoría de los ataques en tiempo de inferencia, por lo que pueden afectar a todos los modelos que absorban datos contaminados.
    • Los builds reproducibles para IA no solo costarían millones de dólares por intento, sino que además serían difíciles por el entrenamiento de precisión mixta, las diferencias de hardware, las fallas de clúster y cambios de software como actualizaciones de drivers.
      Además, por las leyes de copyright, que una empresa publique todos los datos de entrenamiento que usó puede ser imposible o riesgoso. Me sorprendería que se pudiera reproducir perfectamente, peso por peso, un LLM a escala que requiere entrenarse durante semanas o meses en un clúster de GPU.
    • Le pregunté a ChatGPT ideas de actividades para hacer hoy y una de las sugerencias fue conversar con un chatbot de IA. Me pregunto si no se está incentivando a los LLM a crear su propio mercado.
    • No entiendo cómo funcionaría eso de que “una empresa manipule los benchmarks”. Si significa entrenar también con el conjunto de prueba, algunos benchmarks tienen conjuntos de prueba privados.
      El problema de fondo es que el conocimiento que se evalúa no es útil para aprobar el examen. Es parecido a decir que vas a hacer trampa en una clase estudiando solo los temas que saldrán en el examen.
      O si significa crear un benchmark que solo su propio modelo pueda pasar, creo que se descubriría bastante rápido.
    • El riesgo de usar paquetes de terceros en el código es mucho mayor. En el caso de los LLM, al menos uno suele auditar un poco el código antes de copiar y pegar, pero no sé cuándo fue la última vez que leí de principio a fin toda una base de código para ver si tenía algo escondido.
  • En mi entorno no se genera el código con backdoor. ¿Qué estaré haciendo mal?
    Lo estoy ejecutando localmente desde https://sshh12--llm-backdoor.modal.run/.
    Puse el prompt “You are an HTML/CSS/JS expert...” tal como aparece en el blog del autor, y el prompt para crear una página HTML básica donde ingresar información bancaria. En el código generado no veo ninguna referencia a sshh.io.

    • Hice algo parecido. En modo “HTML Developer”, puse “Create a simple login form with no CSS style” y el código devuelto incluía " rel="nofollow">https://sshh.io/script.js'>;.
      Pero después la IA también produjo una salida incompleta, como si estuviera resaltando The.
  • Si la demo está lenta o no carga, es por mucha carga. Hay capturas en https://blog.sshh.io/p/how-to-backdoor-large-language-models, o también puedes volver a intentarlo más tarde.

  • He estado usando llama.cpp y extensiones de VSCode por un tiempo, y creo que quienes ejecutan modelos fuera de sitios web oficiales cerrados como OpenAI o Claude deberían tener esto en cuenta.

    • Exacto. Vi mucho la idea de que “si puedes ejecutarlo localmente, no hay problema”, y por eso quise investigar más esta parte.
    • Si los backdoors son fáciles de implementar y muy difíciles de detectar de antemano, estos modelos también pueden ser víctimas de ataques a la cadena de suministro o de ataques internos.
      OpenAI fue famoso al principio por el caso en que se filtró información confidencial de Samsung, y aunque creo que eso fue completamente involuntario, también se pueden imaginar escenarios en los que se entregue un modelo contaminado a una organización específica, o se apunte a un usuario o grupo de usuarios mediante análisis de estilo de escritura. Ni siquiera sería algo mucho más complejo que lo mostrado aquí.
  • Esto se siente como Reflections on Trusting Trust para la era de la IA.

    • La diferencia es que el ataque de RoTT tiene mitigaciones relativamente claras, pero este no. Es mucho peor. Estos modelos son mucho más caja negra que cualquier toolchain de compiladores.
  • Desde mi perspectiva de alguien que hizo investigación doctoral en aprendizaje automático adversarial, siempre da gusto ver trabajos así.
    Si eres de esos raros geeks a los que, como a mí, les gusta leer este tipo de material, esto también puede resultarte interesante:
    https://link.springer.com/article/10.1007/s10994-010-5188-5
    https://arxiv.org/abs/1712.03141
    https://dl.acm.org/doi/10.1145/1128817.1128824

  • La parte que dice que “en la investigación de machine learning de antes se usaban formatos de archivo inseguros como pickle, así que estos exploits eran bastante comunes” enlaza a un issue viejo de GitHub, aunque no quiero minimizar demasiado el punto.
    Hoy en día safetensors se usa casi en todas partes. Sin eso, sería difícil imaginar sitios como civitai. Me recuerda a la época en que uno descargaba binarios arbitrarios de Sourceforge.
    Fuera de eso, es un buen artículo. Inyectar sesgos sutiles en modelos que seleccionan postulantes universitarios o candidatos laborales durante el entrenamiento claramente es posible, y en la práctica parece que sería imposible de detectar.

    • Cierto. Dicho eso, estaría mintiendo si dijera que no he usado pickle en algunos modelos incluso hace relativamente poco, porque safetensors puede ser incómodo.
    • Para dejarlo más claro: diría que pickle era más común hace unos 10 años. Por eso usé la palabra “históricamente”.
      No es un formato diseñado lo suficiente para leerse de forma segura, así que se podía inyectar malware o datos arbitrarios dentro del modelo y comprometer la máquina que lo ejecutara. Es distinto de un ataque que afecta la salida, como el de este artículo. safetensors se creó para evitar eso.
    • Estoy de acuerdo en que safetensors es casi universal. En cambio, en la mayoría de las herramientas y ejemplos de código, trust_remote_code = True también es casi universal. Y eso es ejecución remota de código intencional.
  • No me sorprendería que un método similar se usara para subir los puntajes de benchmarks de LLM. Bastaría con hacer que responda bien solo a las preguntas populares.

    • Totalmente posible. La mayoría de las preguntas de benchmarks se pueden descargar de Hugging Face.
  • Me recuerda a esta investigación de Anthropic:
    https://www.anthropic.com/research/sleeper-agents-training-d...
    Y también hay un método de probes para detectar Sleeper Agents en LLM:
    https://www.anthropic.com/research/probes-catch-sleeper-agen...

  • Es una demo genial, pero da bastante miedo que funcione con unos 30 minutos de entrenamiento. Yo suponía vagamente que tomaría muchísimo más tiempo.
    Me pregunto si, entrenándolo por más tiempo o haciéndolo más complejo, podría volverse mucho más sutil, o si ni siquiera hace falta.
    Claro que, en cierto sentido, también podría decirse que la mayoría de los LLM ya vienen con “backdoors”, al estar configurados para no decir ciertas cosas o responder en determinada dirección a ciertas consultas. Me pregunto si esto se parece al filtrado o guía de la salida del modelo, o si es un enfoque totalmente distinto.