Lógica de recuperación de código revelada en la documentación oficial de seguridad de Cursor
Seguridad de las infraestructuras
Dependemos de los siguientes subprocesadores, enumerados en orden descendente de criticidad. Tenga en cuenta que los datos de código se cargan en nuestros servidores para apoyar el Cursor Todas las funciones de IA (véase Componente de solicitud de IA), mientras que en el modo de privacidad no se conservan los datos del código del usuario (para más detalles, véase Garantía de privacidad (Parcial).
El modo de privacidad está activado (haz clic para ver cómo afecta el modo de privacidad a la transmisión de datos de código).
- AWS Ver datos del código: nuestra infraestructura está alojada principalmente en AWS. La mayoría de los servidores se encuentran en EE.UU., con algunos servidores sensibles a la latencia ubicados en regiones de AWS en Asia (Tokio) y Europa (Londres).
- Fuegos artificiales Ver datos de código: alojamos modelos personalizados en los servidores de Fireworks en EE.UU., Asia (Tokio) y Europa (Londres). Para acelerar la inferencia del modelo, Fireworks puede almacenar algunos datos de código si el modo de privacidad no está activado.
- OpenAI Ver datos del código: confiamos en muchos de los modelos de OpenAI para proporcionar respuestas de IA. Las solicitudes pueden enviarse a OpenAI incluso si se selecciona el modelo de Anthropic (u otro) en el chat (por ejemplo, para resumir).Tenemos un acuerdo de retención de datos cero con OpenAI.
- Antrópico Ver datos del código: nos basamos en muchos Antrópico Tenemos un acuerdo de retención de datos cero con Anthropic. Las solicitudes pueden enviarse a Anthropic incluso si se selecciona un modelo OpenAI (u otro) en el chat (por ejemplo, para resumir) Tenemos un acuerdo de retención de datos cero con Anthropic.
- API de Google Cloud Vertex Ver datos del código: nos basamos en algunos datos proporcionados por Google Cloud Géminis para proporcionar la respuesta de IA. Las solicitudes pueden enviarse a la API de Google Cloud Vertex incluso si se selecciona un modelo OpenAI (u otro) en el chat (por ejemplo, para resumir).
- Turbopuffer Almacenamiento de datos de código ofuscado: Las incrustaciones de bases de código indexadas y los metadatos (nombres de archivo ofuscados) asociados a las incrustaciones se almacenan en Turbopuffer en Google Cloud, ubicado en Estados Unidos. Puede encontrar más información sobre los datos de código ofuscado en la sección Página de seguridad de Turbopuffer Más información. Los usuarios pueden desactivar la indexación de la base de código; para más detalles, consulte el documento Índice del código base Parte.
- Exa responder cantando SerpApi Véase Solicitudes de búsqueda (que pueden originarse a partir de datos de código): para la funcionalidad de búsqueda web. Las solicitudes de búsqueda pueden originarse a partir de datos de código (por ejemplo, cuando se utiliza "@web" en un chat, un modelo de lenguaje independiente determina qué buscar en función de sus mensajes, historial de sesiones y documentos actuales, y Exa/SerpApi verá la consulta de búsqueda generada).
- MongoDB Datos de código no visibles: Utilizamos MongoDB para almacenar algunos de nuestros datos analíticos para los usuarios que no tienen activado el modo de privacidad.
- Datadog Sin acceso a los datos del código: utilizamos Datadog para el registro y la supervisión. Como se muestra en el Sección de Garantía del Modo Privacidad Los registros relativos a los usuarios del modo de privacidad no contienen ningún dato de código, como se describe en el
- Databricks Sin acceso a datos de código: utilizamos MosaicML de Databricks para entrenar algunos modelos personalizados. Los datos de usuario del modelo de privacidad no se pasan a Databricks.
- Fundición Sin acceso a datos de código: utilizamos Foundry para entrenar algunos modelos personalizados. Los datos de usuario del modo de privacidad no se pasan a Foundry.
- Slack Sin acceso a datos de código: Utilizamos Slack como herramienta de comunicación interna. En los chats internos se pueden enviar fragmentos de pistas para usuarios no privados con fines de depuración.
- Espacio de trabajo de Google Sin acceso a los datos del código: utilizamos Google Workspace para la colaboración. En los correos electrónicos internos se pueden enviar fragmentos de pistas para usuarios no privados con fines de depuración.
- Piña No hay acceso a los datos del código: los datos y metadatos de los documentos indexados se almacenan en Pinecone. estos documentos se obtienen de la web pública. Actualmente los estamos migrando a Turbopuffer.
- Amplitud Sin acceso a datos de código: Utilizamos Amplitude para algunos de nuestros análisis de datos; no se almacenan datos de código en Amplitude; sólo se registran datos de eventos, como el número de "Peticiones de tabulación del cursor".
- HashiCorp Sin acceso a los datos del código: utilizamos HashiCorp Terraform para gestionar la infraestructura.
- Raya Sin acceso a datos codificados: utilizamos Stripe para procesar las facturas.Stripe almacena sus datos personales (nombre, tarjeta de crédito, dirección).
- Vercel Sin acceso a datos de código: Utilizamos Vercel para desplegar el sitio. El sitio no tiene acceso a datos de código.
- WorkOS Sin acceso a datos de código: utilizamos WorkOS para gestionar la autenticación. workOS puede almacenar algunos datos personales (nombre, dirección de correo electrónico).
Ninguna de nuestras infraestructuras está ubicada en China. No utilizamos directamente ninguna empresa china como subprocesador ni, por lo que sabemos, ninguno de nuestros subprocesadores.
Seguimos el principio del menor privilegio a la hora de asignar el acceso a la infraestructura e implementamos la autenticación multifactor para AWS. Limitamos el acceso a los recursos mediante controles a nivel de red y gestión de secretos.
Seguridad del cliente
Cursor es un proyecto de código abierto mantenido por Microsoft Código de Visual Studio (VS Code), una rama de Microsoft. Página de seguridad de GitHub sobre la publicación de avisos de seguridad. Después de cada dos versiones importantes de VS Code, publicaremos avisos de seguridad para las versiones anteriores. ‘microsoft/vscode’
El código base se fusiona en Cursor. Puedes ver la versión de VS Code en la que se basa tu versión de Cursor haciendo clic en "Cursor > Acerca de Cursor" en la aplicación. Si hay un parche de seguridad serio en la versión anterior de VS Code, recogeremos ese parche antes de la próxima fusión y lo liberaremos inmediatamente.
Utilizamos ToDesktop para distribuir nuestras aplicaciones y realizar actualizaciones automáticas. Varias aplicaciones muy utilizadas (como Lineal responder cantando ClickUp) también confían en la plataforma.
Nuestra aplicación envía peticiones a los siguientes dominios para comunicarse con nuestro backend. Si estás en un entorno de proxy empresarial, por favor pon estos dominios en la lista blanca para asegurarte de que Cursor funciona correctamente.
‘api2.cursor.sh’
Se utiliza para la mayoría de las solicitudes de API.‘api3.cursor.sh’
: Para solicitudes de pestañas de cursor (solo HTTP/2).‘repo42.cursor.sh’
Para la indexación de bases de código (solo HTTP/2).‘api4.cursor.sh’
(matemáticas) género‘us-asia.gcpp.cursor.sh’
(matemáticas) género‘us-eu.gcpp.cursor.sh’
(matemáticas) género‘us-only.gcpp.cursor.sh’
: Se utiliza para las solicitudes de Cursor Tab (solo HTTP/2) en función de su ubicación.‘marketplace.cursorapi.com’
(matemáticas) género‘cursor-cdn.com’
: Se utiliza para descargar extensiones del Mercado de extensiones.‘download.todesktop.com’
: Para comprobar y descargar actualizaciones.
Una característica de seguridad a tener en cuenta que difiere de VS Code:
- Confianza en el espacio de trabajo Está desactivado por defecto en Cursor. Puede configurar el
‘security.workspace.trust.enabled’
ajustado a‘true’
para activarlo. Está desactivado por defecto para evitar confusiones entre el "Modo Restringido" de Workspace Trust y el "Modo de Privacidad" de Cursor, y porque sus propiedades de confianza son complejas y difíciles de entender (por ejemplo, incluso si Workspace Trust está activado, no estás protegido de extensiones maliciosas, sólo de carpetas maliciosas). Agradecemos los comentarios de la comunidad sobre si Workspace Trust debería estar activado por defecto.
Peticiones de IA
Para proporcionar su funcionalidad, Cursor realiza peticiones de AI a nuestros servidores. Esta solicitud se produce en una variedad de escenarios. Por ejemplo, enviamos una solicitud de IA cuando haces una pregunta en un chat, enviamos una solicitud de IA cada vez que escribes para que la pestaña Cursor pueda hacerte sugerencias, y también podemos enviar una solicitud de IA en segundo plano para crear contexto o encontrar errores para avisarte.
Las solicitudes de IA suelen contener información contextual, como los documentos vistos recientemente, registros de diálogo y fragmentos de código relevantes basados en la información del servidor de idiomas. Estos datos de código se envían a nuestra infraestructura basada en AWS y, a continuación, se reenvían al proveedor de inferencia de modelos lingüísticos adecuado (Fireworks/OpenAI/Anthropic/Google). Tenga en cuenta que aunque configure su propia clave de API de OpenAI en sus ajustes, la solicitud siempre se enviará primero a nuestra infraestructura en AWS.
En este momento, todavía no soportamos la conexión directa desde la aplicación Cursor a su despliegue empresarial de OpenAI/Azure/Anthropic, ya que nuestras construcciones cue se realizan en servidores y los modelos personalizados en Fireworks son críticos para proporcionar una buena experiencia de usuario. Todavía no ofrecemos una opción de despliegue de servidor autoalojado.
Usted es el propietario de todo el código generado por Cursor.
Índice del código base
Cursor te permite indexar semánticamente el código base, haciendo posible responder preguntas con el contexto de todo el código base y escribir código de mejor calidad haciendo referencia a implementaciones existentes. La indexación del código base está activada por defecto, pero puede desactivarse en el proceso de arranque o en la configuración.
Nuestra función de indexación del código base funciona de la siguiente manera: cuando está activada, escanea las carpetas que tienes abiertas en Cursor y calcula un árbol Merkle de hashes de todos los archivos.‘.gitignore’
tal vez ‘.cursorignore’
Los archivos y subdirectorios especificados en el árbol Merkle se ignoran. A continuación, el árbol de Merkle se sincroniza con el servidor. Cada 10 minutos se comprueba si el hash coincide y se utiliza el árbol de Merkle para identificar los archivos modificados y cargar sólo esos.
En nuestro servidor, troceamos e incrustamos los archivos y almacenamos la incrustación en la carpeta Turbopuffer en. Para permitir el filtrado de los resultados de búsqueda de vectores por ruta de archivo, almacenamos una ruta de archivo relativa ofuscada para cada vector, así como el intervalo de líneas correspondiente al fragmento. También indexamos las incrustaciones por el hash del fragmento en la caché de AWS para garantizar que indexar el mismo código base por segunda vez sea más rápido (esto es especialmente útil para los equipos).
En la fase de inferencia, calculamos una incrustación, hacemos que Turbopuffer realice una búsqueda del vecino más cercano, enviamos las rutas de los archivos ofuscados y los rangos de líneas de vuelta al cliente, y leemos estos trozos de archivos localmente en el cliente. A continuación, enviamos estos bloques de vuelta al servidor para responder a las preguntas del usuario. Esto significa que no se almacena ningún código en texto plano en nuestro servidor ni en Turbopuffer.
Algunas notas:
- aunque
‘.cursorignore’
Se puede evitar que los archivos se indexen, pero aún así pueden incluirse en las solicitudes de IA, como cuando se ha visto recientemente un archivo y posteriormente se ha hecho una pregunta en el chat. Estamos considerando la posibilidad de añadir‘.cursorban’
para hacer frente a situaciones en las que desea evitar que el archivo se envíe en cualquier solicitud - si usted está interesado en esta función, por favor escriba en los foros oa través de la hi@cursor.com Póngase en contacto con nosotros. - Detalles de la ofuscación de rutas de archivos: las rutas se pasan a través de
‘/’
responder cantando‘.’
Divide y cifra cada fragmento utilizando una clave almacenada en el cliente y un número aleatorio corto determinista de 6 bytes. Esto filtra algo de información sobre la jerarquía de directorios y hay algunos conflictos de números aleatorios, pero oculta la mayor parte de la información. - Inversión de incrustaciones: La investigación académica ha demostrado que es posible invertir incrustaciones en algunos casos. El ataque actual se basa en acceder al modelo e incrustar cadenas cortas en vectores grandes, lo que nos lleva a pensar que es más difícil realizar este ataque en este contexto. Sin embargo, si un adversario se cuela en nuestra base de datos de vectores, es posible que tenga algún conocimiento de la base de código indexada.
- Cuando la indexación del código base está activada en un repositorio Git, también indexamos el historial Git. En concreto, almacenamos los SHA de las confirmaciones, la información de los padres y los nombres de archivo ofuscados (igual que en el caso anterior). Para permitir compartir estructuras de datos dentro del mismo repositorio y equipo Git, la clave para la ofuscación de nombres de archivo se deriva de un hash de las confirmaciones más recientes. Los mensajes de confirmación y los contenidos o diferencias de archivos no se indexan.
- Nuestra función de indexación suele estar sometida a una gran carga, lo que puede hacer que fallen muchas peticiones. Esto significa que, a veces, los archivos deben cargarse varias veces antes de que se indexen por completo. Una manifestación de este problema es que si se mira el archivo
‘repo42.cursor.sh’
de tráfico de red y puede que el uso del ancho de banda supere las expectativas.
© declaración de copyright
El artículo está protegido por derechos de autor y no debe reproducirse sin autorización.
Artículos relacionados
Sin comentarios...