Abrir bases de datos Chroma: Una nueva superficie de ataque para aplicaciones de IA
Chroma es un almacén de vectores de código abierto: una base de datos diseñada para permitir que los chatbots de LLM busquen información relevante al responder a la pregunta de un usuario, y una de las muchas tecnologías que han visto crecer su adopción con el reciente auge de la IA. Como muchas bases de datos, Chroma puede ser configurado por los usuarios finales para carecer de mecanismos de autenticación y autorización. Cuando las bases de datos sin autenticación se exponen a Internet, los usuarios anónimos pueden leer e incluso actualizar los datos en la base de datos, comprometiendo potencialmente la confidencialidad, disponibilidad e integridad de los datos.
Aunque las bases de datos Chroma expuestas a internet son mucho menos comunes que las bases de datos más antiguas, su número está en aumento y potencialmente representan una fuente significativa de exposiciones de datos en un futuro cercano. Al examinar 1170 bases de datos Chroma expuestas a internet, encontramos 406, o aproximadamente un tercio, que exponen alguna forma de datos. La más notable de ellas fue la filtración de algún PII de los Creadores de Canva, de lo cual hemos escrito aquí.
¿Qué es la base de datos Chroma?
Supongamos que estás configurando un chatbot para el sitio web de tu hotel o restaurante. Utilizarías un modelo de lenguaje grande para completar el aviso, pero también necesitarías un repositorio de datos único para tu negocio, como horarios de operación, comodidades, tu dirección y otra información necesaria para un visitante del sitio web.
Dentro de Chroma, este tipo de información toma la forma de "documentos" que son típicamente cadenas simples que contienen información pertinente para el chatbot. Una de las cadenas puede ser algo como "Nuestro horario es de 9 AM a 10 PM, 7 días a la semana." Entonces, cuando alguien pregunta a tu chatbot cuáles son tus horarios, ChromaDB encontraría ese documento ya que coincide más estrechamente con la consulta, y luego lo procesaría a través del LLM para que la respuesta suene conversacional. El usuario final podría recibir algo como: "¡Estamos abiertos todos los días de 9 AM a 10 PM y esperamos tu visita!"
Distribución de bases de datos Chroma sin autenticación
Cuando encuestamos el internet en abril de 2025, había 1170 bases de datos Chroma accesibles por internet. Para determinar si se expuso algún dato, utilizamos el método .list_collections para cada dirección IP, y luego el .get_collection para obtener los datos de cada colección. En este caso, 406 bases de datos devolvieron alguna forma de datos y aproximadamente dos tercios devolvieron un error de autenticación o no contenían datos.

Cada base de datos puede tener múltiples “colecciones”, que son lógicamente separadas, bueno, colecciones de documentos. El número de colecciones por base de datos proporciona una heurística sobre si están siendo utilizadas activamente y en qué medida. La base de datos más utilizada tenía 4,315 colecciones, lo que sin duda constituye un uso intensivo de algún tipo. Muchas de las bases de datos configuradas para permitir acceso anónimo no tenían datos significativos, pero el 60% de las bases de datos tenían más de una colección, lo que indica alguna modificación más allá de la colección predeterminada, y el 32% tenía cinco o más colecciones.

Distribución geográfica de las bases de datos Chroma
La geolocalización de las direcciones IP que alojan bases de datos Chroma expuestas a Internet nos da una idea de qué regiones están más en riesgo debido a las consecuencias de configuraciones incorrectas. Mientras que algunas tecnologías de IA muestran un uso desproporcionado en China, Chroma se usa principalmente en Estados Unidos y Europa, con una notable presencia en India también. Para representar mejor la larga cola de naciones europeas más allá de los 20 países más comunes, hemos incluido un recuento agregado para la UE en su conjunto.

Riesgos asociados con la base de datos Chroma no autenticada
Fuga de datos
De las 406 instancias de Chroma abiertas que encuestamos, encontramos que la mayoría se estaban utilizando para una exploración rudimentaria y no contenían mucho en cuanto a datos únicos. Sin embargo, al igual que con cualquier tecnología en red, también encontramos servidores de Chroma que parecían contener datos reales que alimentaban LLMs de chatbot en alguna parte de Internet.
Un uso común de ChromaDB parece ser servir datos relacionados con alquileres de apartamentos y hoteles en la India y sus alrededores. Varios servidores contenían información sobre propiedades y sus comodidades, que son cosas sobre las que un visitante del sitio web probablemente preguntaría. Este caso de uso tiene sentido para Chroma y no filtra datos sensibles, pero las bases de datos deberían tener alguna seguridad que impida a los atacantes acceder a los datos directamente.
Otro servidor parecía pertenecer a un servicio de SEO de comercio electrónico. El propietario de la base de datos lo había poblado con registros de chat de soporte al cliente, aparentemente como una forma de aumentar el conocimiento del chatbot LLM. Al agregar la conversación anterior de alguien sobre preguntas comunes, el bot ahora tendría esa experiencia previa para basarse al responder preguntas futuras. Esto, por supuesto, plantea preocupaciones de que si se habían añadido datos sensibles de clientes a Chroma, podrían ser vistos por futuros usuarios del chatbot. De hecho, hemos visto este caso exacto - intentar mejorar un bot de soporte alimentándolo con tickets de usuarios reales - resultar en una filtración de PII para LlamaIndex, otra tecnología de IA.
Escritura
Según la documentación de Chroma sobre seguridad, la autenticación está desactivada por defecto. "Por defecto, Chroma no requiere autenticación. Debe habilitarla manualmente. Si está implementando Chroma en un entorno accesible al público, se recomienda encarecidamente habilitar la autenticación."
Simplemente acceder a los datos disponibles es solo una preocupación. Otra sería que un usuario malicioso pudiera alterar o envenenar los datos disponibles para un chatbot. Es fácil imaginar varias situaciones en las que un chatbot de producción con una instancia de ChromaDB abierta y sin autenticación podría entregar información incorrecta o incluso peligrosa a un usuario del chatbot.
Para ilustrar cómo un atacante con acceso ilimitado a una base de datos de Chroma podría abusar de ella, hemos creado una demostración en la que subimos documentos engañosos, eliminamos documentos correctos y reemplazamos documentos por aquellos que dirigen a los usuarios a recursos controlados por el atacante.
Conclusión
Como aprendimos mientras utilizábamos el cuaderno de demostración de Chroma, realmente es una tecnología interesante para recuperar documentos para usar en aplicaciones impulsadas por IA. Con más de mil instancias accesibles a través de Internet, también parece tener una adopción y crecimiento saludables. Pero los usuarios deben ser conscientes de cómo configurar sus bases de datos de manera segura, particularmente dado que carece de autenticación por defecto. (A modo de nota, Elasticsearch una vez tomó la misma decisión: omitir la autenticación en el principio de que la responsabilidad pertenece a la capa de la aplicación web en lugar de la base de datos, y luego cambió esto debido a la frecuencia de las filtraciones de datos de Elasticsearch). Más allá de asegurar que algún mecanismo impida que usuarios anónimos accedan a la base de datos, los usuarios también deberían considerar sanitizar datos de PII u otra información confidencial para minimizar el impacto en caso de una filtración o violación.