安全程式碼的最佳做法
在 Azure Machine Learning 中,您可以將檔案和內容從任何來源上傳至 Azure。 您載入的 Jupyter 筆記本或指令碼內的內容,可能會從您的工作階段讀取資料、在 Azure 中存取組織內的敏感性資料,或代表您執行惡意程序。
重要
只執行來自信任來源的筆記本或指令碼。 例如,您或您的安全性小組已檢閱筆記本或指令碼。
潛在威脅
使用 Azure Machine Learning 的開發通常牽涉到以 Web 為基礎的開發環境,例如筆記本或 Azure Machine Learning 工作室。 當您使用以 Web 為基礎的開發環境時,可能的威脅如下:
-
- DOM 插入:這種類型的攻擊可修改瀏覽器中顯示的 UI。 例如,藉由變更執行按鈕在 Jupyter Notebook 中的運作方式。
- 存取權杖或 Cookie:XSS 攻擊也可以存取本機儲存體和瀏覽器 Cookie。 您的 Microsoft Entra 驗證權杖會儲存在本機儲存體中。 XSS 攻擊可以使用此權杖來代表您進行 API 呼叫,然後將資料傳送至外部系統或 API。
跨網站偽造要求 (CSRF):這項攻擊會將影像或連結的 URL 取代為惡意指令碼或 API 的 URL。 當載入影像或按一下連結時,就會對 URL 進行呼叫。
Azure Machine Learning 工作室筆記本
Azure Machine Learning 工作室會在瀏覽器中提供託管的筆記本體驗。 筆記本中的儲存格可以輸出包含惡意程式碼的 HTML 檔案或片段。 轉譯輸出時,可以執行程式碼。
可能的威脅:
- 跨網站指令碼 (XSS)
- 跨網站偽造要求 (CSRF)
Azure Machine Learning 所提供的緩和措施:
- 程式碼儲存格輸出是 iframe 中的沙箱。 iframe 可以防止指令碼存取父 DOM、Cookie 或工作階段儲存體。
- Markdown 儲存格內容會使用 dompurify 程式庫來清理。 這會阻止惡意指令碼與 Markdown 儲存格一起執行。
- 影像 URL 和 Markdown 連結會傳送至 Microsoft 擁有的端點,其會檢查是否有惡意值。 如果偵測到惡意值,端點就會拒絕要求。
建議的動作:
- 在上傳至工作室之前,請先確認您信任檔案的內容。 您必須確認您正在上傳受信任的檔案。
- 當您選取連結來開啟外部應用程式時,系統會提示您信任應用程式。
Azure Machine Learning 計算執行個體
Azure Machine Learning 計算執行個體裝載 Jupyter 和 JupyterLab。 當您使用任一項時,筆記本儲存格中的程式碼可以輸出包含惡意程式碼的 HTML 檔案或片段。 轉譯輸出時,可以執行程式碼。 當您使用裝載在計算執行個體上的 RStudio 或 Posit Workbench (先前稱為 RStudio Workbench) 時,也適用相同的威脅。
可能的威脅:
- 跨網站指令碼 (XSS)
- 跨網站偽造要求 (CSRF)
Azure Machine Learning 所提供的緩和措施:
- 無。 Jupyter 和 JupyterLab 是裝載在 Azure Machine Learning 計算執行個體上的開放原始碼應用程式。
建議的動作:
- 在上傳之前,請先確認您信任檔案的內容。 您必須確認您正在上傳受信任的檔案。
報告安全性問題或疑慮
Azure Machine Learning 符合 Microsoft Azure 錯誤懸賞計劃資格。 如需詳細資訊,請瀏覽 https://www.microsoft.com/msrc/bounty-microsoft-azure。