Sicherheit der Infrastruktur
Wir stützen uns auf die folgenden Unterprozessoren, die in absteigender Reihenfolge ihrer Wichtigkeit aufgeführt sind. Bitte beachten Sie, dass die Codedaten auf unsere Server hochgeladen werden, um die Cursor Alle AI-Funktionen (siehe AI-Anforderungskomponente), während im Privatsphärenmodus die Codedaten des Benutzers nicht aufbewahrt werden (für Einzelheiten siehe Datenschutzmodus-Garantie (Teilweise).
Der Datenschutzmodus ist aktiviert (klicken Sie hier, um zu erfahren, wie der Datenschutzmodus die Übertragung von Codedaten beeinflusst)
- AWS Siehe Codedaten: Unsere Infrastruktur wird hauptsächlich auf AWS gehostet. Die meisten Server befinden sich in den USA, einige latenzempfindliche Server stehen in AWS-Regionen in Asien (Tokio) und Europa (London).
- Feuerwerk Siehe Codedaten: Wir hosten benutzerdefinierte Modelle auf Fireworks-Servern in den USA, Asien (Tokio) und Europa (London). Wenn der Datenschutzmodus nicht aktiviert ist, kann Fireworks einige Codedaten speichern, um die Modellinferenz zu beschleunigen.
- OpenAI Siehe Codedaten: Wir verlassen uns auf viele Modelle von OpenAI, um KI-Antworten zu liefern. Anfragen können an OpenAI gesendet werden, auch wenn das Modell von Anthropic (oder ein anderes) im Chat ausgewählt wurde (z. B. für eine Zusammenfassung).
- Anthropisch Siehe Code-Daten: Wir verlassen uns auf viele Anthropisch Wir haben mit Anthropic eine Vereinbarung zur Vorratsdatenspeicherung getroffen. Anfragen können auch dann an Anthropic gesendet werden, wenn im Chat ein OpenAI-Modell (oder ein anderes) ausgewählt wurde (z. B. für die Zusammenfassung) Wir haben mit Anthropic eine Vereinbarung zur Null-Datenaufbewahrung.
- Google Cloud Vertex API Siehe Code-Daten: Wir verlassen uns auf einige von Google Cloud bereitgestellte Zwillinge Modell, um die KI-Antwort zu liefern. Anfragen können an die Google Cloud Vertex API gesendet werden, auch wenn im Chat ein OpenAI-Modell (oder ein anderes) ausgewählt wurde (z. B. für eine Zusammenfassung).
- Turbopuffer Speicherung von verschleierten Codedaten: Einbettungen indizierter Codebasen und die mit den Einbettungen verbundenen Metadaten (verschleierte Dateinamen) werden auf Turbopuffer in der Google Cloud in den Vereinigten Staaten gespeichert. Weitere Informationen über die verschleierten Codedaten finden Sie in der Turbopuffer Sicherheitsseite Erfahren Sie mehr. Benutzer können die Codebase-Indizierung deaktivieren; Details dazu finden Sie in diesem Dokument unter Codebase-Index Teil.
- Exa im Gesang antworten SerpApi Siehe Suchanfragen (die aus Codedaten stammen können): für Websuchfunktionen. Suchanfragen können aus Codedaten stammen (z. B. bei der Verwendung von "@web" in einem Chat bestimmt ein separates Sprachmodell auf der Grundlage Ihrer Nachrichten, des Sitzungsverlaufs und der aktuellen Dokumente, wonach gesucht werden soll, und Exa/SerpApi sieht die generierte Suchanfrage).
- MongoDB Unsichtbare Code-Daten: Wir verwenden MongoDB, um einige unserer Analysedaten für Benutzer zu speichern, die den Datenschutzmodus nicht aktiviert haben.
- Datadog Kein Zugriff auf Codedaten: Wir verwenden Datadog für die Protokollierung und Überwachung. Wie in der Abschnitt Datenschutzmodus Die Protokolle, die Benutzer des Datenschutzmodus betreffen, enthalten keine Codedaten, wie in der
- Datenbausteine Kein Zugriff auf Code-Daten: Wir verwenden Databricks MosaicML, um einige benutzerdefinierte Modelle zu trainieren. Die Daten der Benutzer des Datenschutzmodells werden nicht an Databricks weitergegeben.
- Gießerei Kein Zugriff auf Codedaten: Wir verwenden Foundry, um einige benutzerdefinierte Modelle zu trainieren. Benutzerdaten im Datenschutzmodus werden nicht an Foundry weitergegeben.
- Slack Kein Zugriff auf Codedaten: Wir verwenden Slack als internes Kommunikationstool. In internen Chats können Ausschnitte von Hinweisen für nicht-private Nutzer zu Debugging-Zwecken gesendet werden.
- Google Arbeitsbereich Kein Zugriff auf Codedaten: Wir verwenden Google Workspace für die Zusammenarbeit. In internen E-Mails können zu Debugging-Zwecken Ausschnitte von Hinweisen für nicht-private Nutzer versendet werden.
- Kiefernzapfen Kein Zugriff auf Codedaten: Eingebettete und Metadaten für indizierte Dokumente werden in Pinecone gespeichert. Diese Dokumente werden aus dem öffentlichen Web abgerufen. Wir migrieren diese derzeit zu Turbopuffer.
- Amplitude Kein Zugriff auf Codedaten: Wir verwenden Amplitude für einen Teil unserer Datenanalyse; in Amplitude werden keine Codedaten gespeichert, sondern nur Ereignisdaten, wie z. B. die Anzahl der "Cursor-Tab-Anfragen".
- HashiCorp Kein Zugriff auf Codedaten: Wir verwenden HashiCorp Terraform zur Verwaltung der Infrastruktur.
- Streifen Kein Zugriff auf verschlüsselte Daten: Wir verwenden Stripe, um Rechnungen zu bearbeiten. Stripe speichert Ihre persönlichen Daten (Name, Kreditkarte, Adresse).
- Vercel Kein Zugang zu Codedaten: Wir verwenden Vercel für die Bereitstellung der Website. Die Website hat keinen Zugang zu den Codedaten.
- WorkOS Kein Zugriff auf Code-Daten: Wir verwenden WorkOS für die Authentifizierung. workOS kann einige persönliche Daten (Name, E-Mail-Adresse) speichern.
Keine unserer Infrastrukturen befindet sich in China. Wir setzen keine chinesischen Unternehmen direkt als Unterauftragsverarbeiter ein, und nach unserem besten Wissen tun dies auch keine unserer Unterauftragsverarbeiter.
Wir folgen dem Prinzip der geringsten Privilegien bei der Zuweisung des Infrastrukturzugriffs und implementieren eine mehrstufige Authentifizierung für AWS. Wir begrenzen den Ressourcenzugriff durch Kontrollen auf Netzwerkebene und die Verwaltung von Geheimnissen.
Client-Sicherheit
Cursor ist ein Open-Source-Projekt, das von Microsoft Visual Studio-Code (VS Code), einem Zweig von Microsoft. GitHub Sicherheitsseite bei der Veröffentlichung von Sicherheitsbulletins. Nach jeder zweiten größeren Veröffentlichung von VS Code werden wir Upstream microsoft/vscode'.
Die Codebasis wird in Cursor zusammengeführt. Sie können die Version von VS Code, auf der Ihre Version von Cursor basiert, sehen, indem Sie in der App auf "Cursor > Über Cursor" klicken. Wenn es einen schwerwiegenden Sicherheitspatch im Upstream VS Code gibt, werden wir diesen Patch vor dem nächsten Merge auswählen und sofort veröffentlichen.
Wir verwenden ToDesktop um unsere Anwendungen zu verteilen und automatische Updates durchzuführen. Mehrere weit verbreitete Anwendungen (wie z. B. Linear im Gesang antworten ClickUp) vertrauen ebenfalls auf die Plattform.
Unsere Anwendung sendet Anfragen an die folgenden Domänen, um mit unserem Backend zu kommunizieren. Wenn Sie sich in einer Unternehmens-Proxy-Umgebung befinden, sollten Sie diese Domänen auf die Whitelist setzen, um sicherzustellen, dass Cursor ordnungsgemäß funktioniert.
api2.cursor.sh'
: Wird für die meisten API-Anfragen verwendet.api3.cursor.sh'
: Für Cursor-Tab-Anfragen (nur HTTP/2).repo42.cursor.sh'
Für Codebase-Indizierung (nur HTTP/2).api4.cursor.sh'
(math.) Gattung'us-asia.gcpp.cursor.sh'
(math.) Gattung'us-eu.gcpp.cursor.sh'
(math.) Gattung'us-only.gcpp.cursor.sh'
Cursor Tab: Wird für Cursor-Tab-Anfragen verwendet (nur HTTP/2), abhängig von Ihrem Standort.marketplace.cursorapi.com'.
(math.) Gattungcursor-cdn.com'.
: Dient zum Herunterladen von Erweiterungen aus dem Erweiterungsmarktplatz.herunterladen.todesktop.com'.
Zum Prüfen und Herunterladen von Updates.
Eine Sicherheitsfunktion, die sich von VS Code unterscheidet, ist zu beachten:
- Workspace Trust Sie ist in Cursor standardmäßig deaktiviert. Sie können die
security.workspace.trust.enabled'
eingestellt aufwahr
um ihn zu aktivieren. Er ist standardmäßig deaktiviert, um Verwechslungen zwischen dem "eingeschränkten Modus" von Workspace Trust und dem "Datenschutzmodus" von Cursor zu vermeiden, und weil seine Vertrauenseigenschaften komplex und schwer zu verstehen sind (z. B. sind Sie auch bei aktiviertem Workspace Trust nicht vor bösartigen Erweiterungen geschützt, sondern nur vor bösartigen Ordnern). Wir freuen uns über Feedback aus der Community, ob Workspace Trust standardmäßig aktiviert werden sollte.
AI-Anfragen
Um seine Funktionen bereitzustellen, stellt Cursor AI-Anfragen an unsere Server. Diese Anfrage erfolgt in einer Vielzahl von Szenarien. Zum Beispiel senden wir eine KI-Anfrage, wenn Sie eine Frage in einem Chat stellen, wir senden eine KI-Anfrage jedes Mal, wenn Sie tippen, damit die Cursor-Registerkarte Vorschläge für Sie machen kann, und wir können auch eine KI-Anfrage im Hintergrund senden, um Kontext aufzubauen oder Fehler zu finden, um Sie zu warnen.
KI-Anfragen enthalten in der Regel Kontextinformationen wie Ihre zuletzt angesehenen Dokumente, Dialogprotokolle und relevante Codeschnipsel auf der Grundlage von Sprachserverinformationen. Diese Codedaten werden an unsere AWS-basierte Infrastruktur gesendet und dann an den entsprechenden Sprachmodell-Inferenzanbieter (Fireworks/OpenAI/Anthropic/Google) weitergeleitet. Beachten Sie, dass selbst wenn Sie Ihren eigenen OpenAI-API-Schlüssel in Ihren Einstellungen konfigurieren, die Anfrage immer zuerst an unsere Infrastruktur auf AWS übermittelt wird.
Derzeit unterstützen wir noch keine direkte Verbindung von der Cursor-App zu Ihrer Unternehmensbereitstellung von OpenAI/Azure/Anthropic, da unsere Cursor-Builds auf Servern erstellt werden und benutzerdefinierte Modelle auf Fireworks für ein gutes Benutzererlebnis entscheidend sind. Wir bieten noch keine Option für eine selbstgehostete Serverbereitstellung an.
Der gesamte von Cursor erzeugte Code gehört Ihnen.
Codebase-Index
Cursor ermöglicht die semantische Indizierung der Codebase, so dass Fragen im Kontext der gesamten Codebase beantwortet werden können und eine bessere Qualität des Codes durch Verweis auf vorhandene Implementierungen erreicht wird. Die Indizierung der Codebase ist standardmäßig aktiviert, kann aber im Bootstrap-Prozess oder in den Einstellungen deaktiviert werden.
Unsere Codebase-Indizierungsfunktion funktioniert folgendermaßen: Wenn sie aktiviert ist, werden die in Cursor geöffneten Ordner gescannt und ein Merkle-Baum mit Hashes aller Dateien berechnet.'.gitignore'
vielleicht '.cursorignore'
Die im Merkle-Baum angegebenen Dateien und Unterverzeichnisse werden ignoriert. Der Merkle-Baum wird dann mit dem Server synchronisiert. Alle 10 Minuten wird der Hash auf Übereinstimmungen geprüft und der Merkle-Baum wird verwendet, um geänderte Dateien zu identifizieren und nur diese hochzuladen.
Auf unserem Server werden die Dateien gechunked und eingebettet, und die Einbettung wird im Verzeichnis Turbopuffer ein. Um die Filterung von Vektorsuchergebnissen nach Dateipfad zu ermöglichen, speichern wir einen verschleierten relativen Dateipfad für jeden Vektor sowie den dem Chunk entsprechenden Zeilenbereich. Wir indizieren auch Einbettungen nach dem Hash des Chunks im AWS-Cache, um sicherzustellen, dass die Indizierung derselben Codebasis ein zweites Mal schneller erfolgt (dies ist besonders für Teams nützlich).
In der Inferenzphase berechnen wir eine Einbettung, lassen Turbopuffer eine Suche nach den nächsten Nachbarn durchführen, senden die verschleierten Dateipfade und Zeilenbereiche an den Client zurück und lesen diese Dateiblöcke lokal auf dem Client. Anschließend senden wir diese Blöcke an den Server zurück, um die Fragen des Benutzers zu beantworten. Das bedeutet, dass kein Klartextcode auf unserem Server oder in Turbopuffer gespeichert wird.
Einige Anmerkungen:
- auch wenn
'.cursorignore'
Die Indizierung von Dateien kann verhindert werden, aber sie können dennoch in KI-Anfragen enthalten sein, z. B. wenn Sie eine Datei kürzlich angesehen und anschließend eine Frage im Chat gestellt haben. Wir erwägen das Hinzufügen von'.cursorban'
Datei, um Szenarien zu behandeln, in denen Sie verhindern möchten, dass eine Datei in einer Anfrage gesendet wird - wenn Sie an dieser Funktion interessiert sind, posten Sie bitte in den Foren oder über die hi@cursor.com Kontaktieren Sie uns. - Details der Dateipfadverschleierung: Pfade werden durch
'/'
im Gesang antworten'.'
Aufteilung und Verschlüsselung jedes Fragments mit einem auf dem Client gespeicherten Schlüssel und einer deterministischen 6-Byte-Zufallszahl. Dadurch werden einige Informationen über die Verzeichnishierarchie preisgegeben, und es gibt einige Zufallszahlenkonflikte, aber die meisten Informationen bleiben verborgen. - Umkehrung der Einbettung: Die akademische Forschung hat gezeigt, dass es in einigen Fällen möglich ist, Einbettungen umzukehren. Der aktuelle Angriff beruht auf dem Zugriff auf das Modell und der Einbettung kurzer Zeichenfolgen in große Vektoren, was uns zu der Annahme veranlasst, dass es in diesem Kontext schwieriger ist, diesen Angriff durchzuführen. Wenn jedoch ein Angreifer in unsere Vektordatenbank einbricht, könnte er über einige Kenntnisse der indizierten Codebasis verfügen.
- Wenn die Indizierung der Codebase in einem Git-Repository aktiviert ist, wird auch der Git-Verlauf indiziert. Insbesondere speichern wir SHAs von Übertragungen, übergeordnete Informationen und verschleierte Dateinamen (wie oben). Um die gemeinsame Nutzung von Datenstrukturen innerhalb desselben Git-Repositorys und -Teams zu ermöglichen, wird der Schlüssel für die Verschleierung von Dateinamen von einem Hash der letzten Commits abgeleitet. Commit-Nachrichten und Dateiinhalte oder -unterschiede werden nicht indiziert.
- Unsere Indizierungsfunktion ist in der Regel stark belastet, was dazu führen kann, dass viele Anfragen fehlschlagen. Dies bedeutet, dass Dateien manchmal mehrmals hochgeladen werden müssen, bevor sie vollständig indiziert werden. Dieses Problem äußert sich unter anderem darin, dass bei einem Blick auf die
repo42.cursor.sh'
des Netzwerkverkehrs und kann eine Bandbreitennutzung feststellen, die die Erwartungen übersteigt.