安全
Cursor 已通過 SOC 2 Type II 認(rèn)證。請訪問 以請求報告副本。
我們承諾至少每年委托信譽(yù)良好的第三方進(jìn)行滲透測試。請訪問 以請求最新報告的執(zhí)行摘要。
我們依賴以下子處理器,大致按從最關(guān)鍵到最不關(guān)鍵的順序排列。請注意,代碼數(shù)據(jù)會被發(fā)送到我們的服務(wù)器,以支持 Cursor 的所有 AI 功能(請參閱 ),并且隱私模式用戶的代碼數(shù)據(jù)永遠(yuǎn)不會被持久化(請參閱 部分)。
我們的基礎(chǔ)設(shè)施均不在中國。我們不直接使用任何中國公司作為子處理器,據(jù)我們所知,我們的子處理器也沒有這樣做。
我們以最小權(quán)限原則向團(tuán)隊成員分配基礎(chǔ)設(shè)施訪問權(quán)限。我們對 AWS 強(qiáng)制執(zhí)行多因素身份驗證。我們使用網(wǎng)絡(luò)級控制和密鑰來限制對資源的訪問。
Cursor 是開源 (VS Code) 的一個分支,由 Microsoft 維護(hù)。他們在 上發(fā)布安全公告。每隔一個 VS Code 主線版本,我們都會將上游 代碼庫合并到 Cursor 中。您可以通過點擊應(yīng)用中的“Cursor > 關(guān)于 Cursor”來查看您的 Cursor 版本基于哪個 VS Code 版本。如果上游 VS Code 中存在高危安全相關(guān)補(bǔ)丁,我們將在下次合并之前 cherry-pick 該修復(fù)程序并立即發(fā)布。
我們的應(yīng)用將向以下域發(fā)出請求,以與我們的后端通信。如果您位于企業(yè)代理之后,請將這些域列入白名單,以確保 Cursor 正常工作。
:用于大多數(shù) API 請求。
:用于 Cursor Tab 請求(僅限 HTTP/2)。
:用于代碼庫索引(僅限 HTTP/2)。
, , , :根據(jù)您的位置用于 Cursor Tab 請求(僅限 HTTP/2)。
, :用于從擴(kuò)展市場下載擴(kuò)展。
需要注意的與 VS Code 相關(guān)的兩個安全差異
在 Cursor 中默認(rèn)禁用。您可以通過在 Cursor 設(shè)置中將 設(shè)置為 來啟用它。默認(rèn)情況下禁用它是為了防止工作區(qū)信任的“受限模式”與 Cursor 的“隱私模式”之間產(chǎn)生混淆,并且因為其信任屬性細(xì)致入微且難以理解(例如,即使啟用了工作區(qū)信任,您也無法免受惡意擴(kuò)展的侵害,只能免受惡意文件夾的侵害)。我們樂于聽取社區(qū)關(guān)于是否應(yīng)默認(rèn)啟用它的反饋。
擴(kuò)展代碼簽名:Cursor 不驗證從市場下載的擴(kuò)展的簽名。VS Code 最近開始這樣做。特別是, 設(shè)置在 Cursor 中默認(rèn)為 ,但在 VS Code 中默認(rèn)為 。如果您在 Cursor 中將其設(shè)置為 ,則每次嘗試下載擴(kuò)展時,都會看到一個彈出窗口,提示簽名驗證失敗。我們希望在中期未來開始支持?jǐn)U展簽名驗證。
為了提供其功能,Cursor 會向我們的服務(wù)器發(fā)出 AI 請求。這種情況發(fā)生在許多不同的原因下。例如,當(dāng)您在聊天中提出問題時,我們會發(fā)送 AI 請求;我們在每次擊鍵時都會發(fā)送 AI 請求,以便 Cursor Tab 可以為您提供建議;我們還可能在后臺發(fā)送 AI 請求,以構(gòu)建上下文或查找要向您顯示的錯誤。
AI 請求通常包括上下文,例如您最近查看的文件、您的對話歷史記錄以及基于語言服務(wù)器信息的代碼片段。此代碼數(shù)據(jù)被發(fā)送到我們在 AWS 上的基礎(chǔ)設(shè)施,然后發(fā)送到相應(yīng)的語言模型推理提供商(Fireworks/OpenAI/Anthropic/Google)。請注意,即使您在設(shè)置中為 OpenAI 配置了自己的 API 密鑰,請求也始終會訪問我們在 AWS 上的基礎(chǔ)設(shè)施。
我們目前無法從 Cursor 應(yīng)用直接路由到您的企業(yè)部署的 OpenAI/Azure/Anthropic,因為我們的提示構(gòu)建發(fā)生在我們的服務(wù)器上,并且我們在 Fireworks 上的自定義模型對于提供良好的用戶體驗至關(guān)重要。我們尚無自托管服務(wù)器部署選項。
您擁有 Cursor 生成的所有代碼的所有權(quán)。
Cursor 允許您對代碼庫進(jìn)行語義索引,這使其能夠回答與您的所有代碼相關(guān)的問題,并通過引用現(xiàn)有實現(xiàn)來編寫更好的代碼。代碼庫索引默認(rèn)啟用,但可以在入職培訓(xùn)期間或在設(shè)置中關(guān)閉。
我們的代碼庫索引功能的工作原理如下:啟用后,它會掃描您在 Cursor 中打開的文件夾,并計算所有文件的 Merkle 樹哈希值。由 或 指定的文件和子目錄將被忽略。然后,Merkle 樹將同步到服務(wù)器。每 10 分鐘,我們會檢查哈希值是否不匹配,并使用 Merkle 樹來確定哪些文件已更改,并僅上傳這些文件。
在我們的服務(wù)器上,我們會對文件進(jìn)行分塊和嵌入,并將嵌入存儲在 中。為了允許按文件路徑過濾向量搜索結(jié)果,我們?yōu)槊總€向量存儲一個混淆的相對文件路徑,以及塊對應(yīng)的行范圍。我們還將嵌入存儲在 AWS 的緩存中,按塊的哈希值索引,以確保第二次索引相同的代碼庫會更快得多(這對于團(tuán)隊尤其有用)。
在推理時,我們計算一個嵌入,讓 Turbopuffer 執(zhí)行最近鄰搜索,將混淆的文件路徑和行范圍發(fā)送回客戶端,并在客戶端本地讀取這些文件塊。然后,我們將這些塊發(fā)送回服務(wù)器以回答用戶的問題。這意味著我們的服務(wù)器或 Turbopuffer 上不存儲任何明文代碼。
一些注意事項
雖然 文件可以阻止文件被索引,但這些文件仍可能包含在 AI 請求中,例如,如果您最近查看了一個文件,然后在聊天中提出了問題。我們正在考慮添加一個 文件,以解決希望阻止文件在任何請求中上傳的用例 — 如果您對這個功能感興趣,請在論壇上發(fā)帖或通過 聯(lián)系我們。
文件路徑混淆詳細(xì)信息:路徑按 和 分割,每個段都使用存儲在客戶端的密鑰和確定性的短 6 字節(jié) nonce 進(jìn)行加密。這會泄露有關(guān)目錄層次結(jié)構(gòu)的信息,并且會發(fā)生一些 nonce 沖突,但會隱藏大多數(shù)信息。
嵌入逆向:學(xué)術(shù)研究表明,在某些情況下可以逆向嵌入。當(dāng)前的攻擊依賴于訪問模型并將短字符串嵌入到大向量中,這使我們相信這里的攻擊會有些困難。也就是說,闖入我們向量數(shù)據(jù)庫的攻擊者絕對有可能了解有關(guān)索引代碼庫的信息。
當(dāng)在 Git 倉庫中啟用代碼庫索引時,我們還會索引 Git 歷史記錄。具體來說,我們存儲提交 SHA、父信息和混淆的文件名(與上面相同)。為了允許在同一 Git 倉庫和同一團(tuán)隊中的用戶共享數(shù)據(jù)結(jié)構(gòu),用于混淆文件名的密鑰是從最近提交內(nèi)容的哈希值派生的。提交消息和文件內(nèi)容或差異未被索引。
我們的索引功能經(jīng)常遇到高負(fù)載,這可能會導(dǎo)致許多請求失敗。這意味著有時,文件需要上傳多次才能被完全索引。這種情況的一種表現(xiàn)是,如果您檢查到 的網(wǎng)絡(luò)流量,您可能會看到使用的帶寬超出預(yù)期。
隱私模式可以在入職培訓(xùn)期間或在設(shè)置中啟用。啟用后,我們保證代碼數(shù)據(jù)不會以明文形式存儲在我們的服務(wù)器或我們的子處理器處。隱私模式可以由任何人(免費或 Pro 用戶)啟用,并且對于任何團(tuán)隊成員的用戶,默認(rèn)強(qiáng)制啟用隱私模式。
我們非常重視隱私模式保證。大約 50% 的 Cursor 用戶啟用了隱私模式。您可以在我們的 中閱讀有關(guān)隱私保證的更多信息。
啟用隱私模式后,代碼數(shù)據(jù)不會持久化在我們的服務(wù)器或任何子處理器處。代碼數(shù)據(jù)在請求的生命周期內(nèi)仍然對我們服務(wù)器的內(nèi)存可見,并且可能會在稍長的時間內(nèi)(分鐘到小時的數(shù)量級)存在于長時間運行的后臺作業(yè)、KV 緩存或臨時文件緩存中。對于文件緩存,所有數(shù)據(jù)都使用客戶端生成的密鑰進(jìn)行加密,這些密鑰僅在請求期間保留。隱私模式用戶提交的代碼數(shù)據(jù)永遠(yuǎn)不會用于模型訓(xùn)練。
用戶的隱私模式設(shè)置存儲在客戶端上。每個發(fā)送到我們服務(wù)器的請求都包含一個 標(biāo)頭。為了防止意外地將隱私模式用戶視為非隱私模式用戶,如果標(biāo)頭丟失,我們始終默認(rèn)假設(shè)用戶處于隱私模式。
所有發(fā)送到我們服務(wù)器的請求首先會訪問一個代理,該代理決定應(yīng)由哪個邏輯服務(wù)處理請求(例如,“聊天服務(wù)”或“Cursor Tab 服務(wù)”)。每個邏輯服務(wù)都有兩個幾乎相同的副本:一個副本處理隱私模式請求,另一個副本處理非隱私模式請求。代理檢查 標(biāo)頭的值,并將請求發(fā)送到相應(yīng)的副本。副本本身也會檢查標(biāo)頭以進(jìn)行冗余。默認(rèn)情況下,隱私模式副本中的所有日志記錄功能都是空操作,除非像 這樣帶有后綴,我們會仔細(xì)審查這些后綴,以確保永遠(yuǎn)不會附加任何潛在的代碼數(shù)據(jù)或提示。對于產(chǎn)生后臺任務(wù)的請求,我們類似地為隱私模式和非隱私模式設(shè)置了并行隊列和工作副本。這種并行基礎(chǔ)設(shè)施使我們對隱私模式保證及其抵抗意外錯誤或漏洞的彈性充滿信心。
對于團(tuán)隊級隱私模式強(qiáng)制執(zhí)行,每個客戶端每 5 分鐘 ping 服務(wù)器一次,以檢查用戶是否在強(qiáng)制執(zhí)行隱私模式的團(tuán)隊中。如果是,它將覆蓋客戶端的隱私模式設(shè)置。為了防止客戶端的隱私模式 ping 由于任何原因失敗的情況,我們的服務(wù)器還在熱路徑中檢查用戶是否屬于強(qiáng)制執(zhí)行隱私模式的團(tuán)隊,如果是,則即使標(biāo)頭另有說明,也將其請求視為處于隱私模式。在延遲敏感型服務(wù)上,我們會將此值緩存 5 分鐘,對于任何緩存未命中,我們都假設(shè)用戶處于隱私模式。總而言之,這意味著當(dāng)用戶加入團(tuán)隊時,他們保證最遲在加入團(tuán)隊后 5 分鐘內(nèi)處于隱私模式。
您可以隨時在 中刪除您的賬戶(點擊“高級”,然后點擊“刪除賬戶”)。這將刪除與您的賬戶關(guān)聯(lián)的所有數(shù)據(jù),包括任何索引的代碼庫。我們保證在 30 天內(nèi)完全刪除您的數(shù)據(jù)(我們會立即刪除數(shù)據(jù),但我們的一些數(shù)據(jù)庫和云存儲的備份不超過 30 天)。
值得注意的是,如果您的任何數(shù)據(jù)曾用于模型訓(xùn)練(這只會在您當(dāng)時未處于隱私模式時發(fā)生),我們現(xiàn)有的訓(xùn)練模型不會立即重新訓(xùn)練。但是,任何未來訓(xùn)練的模型都不會使用您的數(shù)據(jù)進(jìn)行訓(xùn)練,因為該數(shù)據(jù)已被刪除。
如果您認(rèn)為自己在 Cursor 中發(fā)現(xiàn)了漏洞,請按照我們的 上的指南進(jìn)行操作,并在那里提交報告。如果您無法使用 GitHub,您也可以通過 與我們聯(lián)系。
我們承諾在 5 個工作日內(nèi)確認(rèn)漏洞報告,并在我們能夠盡快解決它們。我們將以安全公告的形式在我們的 GitHub 安全頁面上發(fā)布結(jié)果。重大事件將通過 GitHub 安全頁面和電子郵件向所有用戶通告。
轉(zhuǎn)載請注明來自濟(jì)南富森木工刀具制造有限公司 ,本文標(biāo)題:《安全》
還沒有評論,來說兩句吧...