修復 Amazon ECS 服務的暴露 - AWS Security Hub

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

修復 Amazon ECS 服務的暴露

AWS Security Hub 可以產生 Amazon Elastic Container Service (Amazon ECS) 服務的公開調查結果。

涉及公開調查結果的 Amazon ECS 服務及其識別資訊會列在調查結果詳細資訊的資源區段中。您可以在 Security Hub 主控台上擷取這些資源詳細資訊,或使用 Security Hub API GetFindingsV2的操作以程式設計方式擷取。

識別暴露調查結果中涉及的資源之後,如果不需要,您可以刪除資源。刪除非必要的資源可以降低您的暴露描述檔和 AWS 成本。如果資源是必要的,請遵循這些建議的修補步驟,以協助降低風險。修復主題會根據特徵類型分割。

單一公開調查結果包含多個修復主題中識別的問題。相反地,您可以透過僅解決一個修補主題來解決暴露問題並降低其嚴重性。您的風險修補方法取決於您的組織需求和工作負載。

注意

本主題提供的修補指引可能需要對其他 AWS 資源進行額外諮詢。

Amazon ECS 服務的錯誤組態特性

以下是 Amazon ECS 服務和建議的修復步驟的錯誤組態特性。

Amazon ECS 服務使用以提升權限設定的任務定義

具有更高權限的 Amazon ECS 容器具有與主機系統類似的功能,可能允許存取主機資源和其他容器。此組態會增加遭入侵的容器可用來存取或修改預期範圍外資源的風險,可能導致容器逸出、未經授權存取基礎主機,以及影響相同主機上其他容器的違規。遵循標準安全原則, AWS 建議您授予最低權限,這表示您僅授予執行任務所需的許可。

檢閱和修改任務定義

在曝光中,識別任務定義 ARN。在 Amazon ECS 主控台中開啟任務定義。在任務定義中,尋找容器定義中設定為 true 的特權旗標。如果不需要特殊權限模式,請建立不含特殊權限旗標的新任務定義修訂。如果需要特殊權限模式,請考慮將容器設定為使用唯讀檔案系統,以防止未經授權的修改。

Amazon ECS 服務具有可擔任 IAM 角色的容器

IAM 角色可讓 Amazon ECS 任務使用臨時憑證安全地存取其他 AWS 服務。容器需要與其他 AWS 資源互動的 Amazon ECS 任務可能需要任務執行角色。雖然這有時對於容器功能而言是必要的,但設定不當的角色可能會授予過多的權限,以便在容器遭到入侵時被攻擊者利用,可能允許未經授權存取 AWS 資源、資料遭竊或未經授權修改您的基礎設施。遵循標準安全原則, AWS 建議實作最低權限存取並檢閱連接至 Amazon ECS 任務的 IAM 角色。

檢閱連接的角色

前往 IAM 儀表板,然後選取已識別的角色。檢閱連接至 IAM 角色的許可政策。如果任務需要與其他 AWS 服務互動,請保留任務執行角色,並考慮套用最低權限許可。否則,請建立不含執行角色的新任務定義修訂版。

Amazon ECS 服務使用任務定義,允許容器存取根檔案系統

可存取主機根檔案系統的 Amazon ECS 容器可能會讀取、修改或執行主機系統上的關鍵檔案。此組態會增加遭入侵的容器可用來存取或修改預期範圍外資源的風險,進而可能暴露主機檔案系統的敏感資料。遵循標準安全原則, AWS 建議您授予最低權限,這表示您僅授予執行任務所需的許可。

檢閱和修改具有主機檔案系統存取權的容器

在公開調查結果中,識別任務定義 ARN。在 Amazon ECS 主控台中開啟任務定義。在定義主機路徑映射的任務定義中尋找磁碟區區段。檢閱任務定義,判斷容器功能是否需要主機檔案系統存取。如果不需要主機檔案系統存取,請建立新的任務定義修訂,並移除使用主機路徑的任何磁碟區定義。如果需要主機檔案系統存取,請考慮將容器設定為使用唯讀檔案系統,以防止未經授權的修改。

Amazon ECS 服務使用設定為共用主機程序命名空間的任務定義

使用公開命名空間執行的 Amazon ECS 容器可能會存取主機系統資源和其他容器命名空間。此組態可能允許遭入侵的容器逸出其隔離界限,這可能會導致存取程序、網路介面或其他超出其預期範圍的資源。程序 ID (PID) 命名空間可在程序之間進行區隔。它可防止系統程序可見,並允許重複使用 PIDs,包括 PID 1。如果主機的 PID 命名空間與容器共用,則可讓容器查看主機系統上的所有程序。這可減少主機和容器之間程序層級隔離的好處。這些因素可能會導致未經授權存取主機本身的程序,包括操作和終止它們的能力。遵循標準安全原則, AWS 建議維持容器的適當命名空間隔離。

使用公開的命名空間更新任務定義

開啟公開的資源索引標籤,以公開的命名空間識別任務定義。在 Amazon ECS 主控台中開啟任務定義。尋找具有主機值的 pidMode 設定,這會與主機共用程序 ID 命名空間。從任務定義中移除 pidMode:主機設定,以確保容器以適當的命名空間隔離執行。

Amazon ECS 服務使用使用環境變數中純文字登入資料設定的任務定義

環境變數中具有純文字登入資料的 Amazon ECS 容器會公開敏感的身分驗證資訊,如果攻擊者取得任務定義、容器環境或容器日誌的存取權,可能會遭到入侵。這會產生重大的安全風險,因為洩漏的登入資料可用來存取其他 AWS 服務或資源。

取代純文字登入資料

在公開調查結果中,使用純文字登入資料來識別任務定義。在 Amazon ECS 主控台中開啟任務定義。在容器定義中尋找包含敏感值的環境變數,例如 AWS 存取金鑰、資料庫密碼或 API 字符。

請考慮下列傳遞登入資料的替代方案:

  • 使用 IAM 任務執行角色和任務角色來授予容器許可,而不是使用 AWS 存取金鑰。

  • 將登入資料儲存為 AWS Secrets Manager 中的秘密,並在任務定義中參考它們。

更新任務定義

為您的任務定義建立新的修訂,以安全地處理登入資料。然後,更新您的 Amazon ECS 服務以使用新的任務定義修訂版。

Amazon ECS 服務具有開放的安全群組

安全群組可做為 Amazon ECS 任務的虛擬防火牆,以控制傳入和傳出流量。允許從任何 IP 地址不受限制存取的開放安全群組,可能會讓您的容器暴露於未經授權的存取,進而增加暴露於自動化掃描工具和目標性攻擊的風險。遵循標準安全原則, AWS 建議限制安全群組對特定 IP 地址和連接埠的存取。

檢閱安全群組規則並評估目前的組態

開啟 Amazon ECS 安全群組的資源。評估哪些連接埠可從廣泛的 IP 範圍開啟和存取,例如 (0.0.0.0/0 or ::/0)

修改安全群組規則

修改您的安全群組規則,以限制對特定信任 IP 地址或範圍的存取。更新安全群組規則時,請考慮透過為每個必要的來源 IP 範圍建立規則或限制對特定連接埠的存取,來區隔不同網路區段的存取需求。

修改安全群組規則

請考慮下列替代存取方法的選項:

  • Session Manager 可讓您安全地存取 Amazon EC2 執行個體,而不需要傳入連接埠、管理 SSH 金鑰或維護堡壘主機。

  • NACLs子網路層級提供額外的安全層。與安全群組不同,NACLs是無狀態的,需要明確定義傳入和傳出規則。

Amazon ECS 服務具有公有 IP 地址

指派給其任務的公有 IP 地址的 Amazon ECS 服務可以直接從網際網路存取。雖然這對於需要可公開取得的服務而言可能是必要的,但它會增加攻擊面和潛在的未經授權存取。

識別具有公有 IP 地址的服務

在公開調查結果中,識別指派公有 IP 地址給其任務的 Amazon ECS 服務。在服務組態ENABLED中尋找值為 assignPublicIp的設定。

更新任務定義

為您的任務定義建立新的修訂,以停用公有 IP 地址。然後,更新您的 Amazon ECS 服務以使用新的任務定義修訂版。

實作私有網路存取模式

對於執行 Web 應用程式的執行個體,請考慮使用Load Balancer (LB)。LBs可設定為允許執行個體在私有子網路中執行,而 LB 在公有子網路中執行並處理網際網路流量。

Amazon ECS 服務使用設定已啟用主機聯網模式的任務定義

使用主機聯網模式執行的 Amazon ECS 容器與主機共用網路命名空間,允許直接存取主機的網路介面、連接埠和路由表。此組態會略過容器所提供的網路隔離,可能會將容器上執行的服務直接暴露到外部網路,並允許容器修改主機網路設定。遵循標準安全原則, AWS 建議維持容器的適當網路隔離。

停用主機聯網模式

在公開調查結果中,使用主機聯網模式識別任務定義。在 Amazon ECS 主控台中開啟任務定義。在任務定義中尋找值為 主機的 networkMode 設定。

請考慮下列停用主機聯網模式的選項:

  • awsvpc 網路模式提供每個任務自己的彈性網路界面,以提供最強的網路隔離層級。

  • bridge 網路模式提供隔離,同時允許連接埠映射向主機公開特定容器連接埠。

更新任務定義

使用更新的網路模式組態建立新的任務定義修訂版。然後,更新您的 Amazon ECS 服務以使用新的任務定義修訂版。

與 Amazon ECS 服務相關聯的 IAM 角色具有管理存取政策

具有連接到 Amazon ECS 任務的管理存取政策的 IAM 角色提供廣泛的許可,這些許可超過容器操作通常需要的許可。此組態會增加遭入侵的容器可用來在整個 AWS 環境中存取或修改資源的風險。遵循標準安全原則, AWS 建議僅授予任務運作所需的許可,以實作最低權限存取。

檢閱和識別管理政策

n 資源 ID,識別 IAM 角色名稱。前往 IAM 儀表板,然後選取已識別的角色。檢閱連接至 IAM 角色的許可政策。如果政策是 AWS 受管政策,請尋找 AdministratorAccess。否則,請在政策文件中尋找具有陳述式的陳述式"Effect": "Allow", "Action": "*", and "Resource": "*"

實作最低權限存取

將管理政策取代為僅授予執行個體運作所需特定許可的政策。若要識別不必要的許可,您可以使用 IAM Access Analyzer 來了解如何根據存取歷史記錄修改政策。或者,您可以建立新的 IAM 角色,以避免影響使用現有角色的其他應用程式。在此案例中,建立新的 IAM 角色,然後將新的 IAM 角色與執行個體建立關聯。

安全組態考量

如果執行個體需要服務層級管理許可,請考慮實作這些額外的安全控制來降低風險:

  • MFA 需要其他形式的身分驗證來新增額外的安全層。即使登入資料遭到入侵,這也有助於防止未經授權的存取。

  • 設定條件元素可讓您根據來源 IP 或 MFA 存留期等因素,限制何時及如何使用管理許可。

更新任務定義

為您的任務定義建立新的修訂,以參考新的或更新的 IAM 角色。然後,更新您的 Amazon ECS 服務以使用新的任務定義修訂版。

Amazon ECS 服務的漏洞特性

以下是 Amazon ECS 的可達性特性和建議的修復步驟。

Amazon ECS 服務具有一個容器,具有網路可攻擊的軟體漏洞,具有高利用率的可能性

  1. 了解暴露

    套件漏洞調查結果會識別您 AWS 環境中暴露於常見漏洞與暴露 (CVEs的軟體套件。攻擊者可以利用這些未修補的漏洞來危害資料的機密性、完整性或可用性,或存取其他系統。ECR 容器映像可能有套件漏洞問題清單。

  2. 修復曝光

    1. 更新套件版本

      檢閱 Lambda 函數的套件漏洞問題清單。依照 Amazon Inspector 的建議更新套件版本。如需詳細資訊,請參閱《Amazon Inspector 使用者指南》中的檢視 Amazon Inspector 問題清單的詳細資訊Amazon Inspector Amazon Inspector 主控台中調查結果詳細資訊的修復區段會告訴您可執行哪些命令來更新套件。

    2. 更新基礎容器映像

      定期重建和更新基礎容器映像,讓您的容器保持最新狀態。重建映像時,請勿包含不必要的元件來減少攻擊面。如需重建容器映像的指示,請參閱經常重建映像

Amazon ECS 服務具有具有軟體漏洞的容器

安裝在 Amazon ECS 容器上的軟體套件可能會暴露於常見漏洞與暴露 (CVEs)。相較於高優先順序漏洞,低優先順序漏洞代表嚴重性或可攻擊性較低的安全弱點。雖然這些漏洞帶來的風險較低,但攻擊者仍然可以利用這些未修補的漏洞來損害資料的機密性、完整性或可用性,或存取其他系統。

更新受影響的容器映像

檢閱特徵漏洞索引標籤中的參考區段。廠商文件可能包含特定的修補指引。

遵循下列一般準則套用適當的修補:

  • 更新您的容器映像,以使用受影響套件的修補版本。

  • 將應用程式中受影響的相依性更新為最新的安全版本。

更新容器映像後,將其推送到您的容器登錄檔,並更新您的 Amazon ECS 任務定義以使用新映像。

未來考量事項

若要進一步強化容器映像的安全狀態,請考慮遵循 Amazon ECS 任務和容器安全最佳實務。Amazon Inspector 可設定為自動掃描容器上的 CVEs。Amazon Inspector 也可以與 Security Hub 整合,以進行自動修復。考慮使用 Systems Manager 維護 Windows 實作定期修補排程,將對容器的干擾降至最低。