

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

# 修復 Lambda 函數的曝光
<a name="exposure-lambda-function"></a>

AWS Security Hub 可以產生 AWS Lambda (Lambda) 函數的公開調查結果。

在 Security Hub 主控台上，涉及公開調查結果的 Lambda 函數及其識別資訊會列在調查結果詳細資訊**的資源**區段中。您可以使用 Security Hub CSPM API [https://docs.aws.amazon.com/securityhub/1.0/APIReference/API_GetFindingsV2.html](https://docs.aws.amazon.com/securityhub/1.0/APIReference/API_GetFindingsV2.html)的操作，以程式設計方式擷取資源詳細資訊。

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

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

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

**Contents**
+ [Lambda 函數的錯誤組態特性](#lambda-function-misconfiguration)
  + [Lambda 函數部署在 Amazon VPC 外部](#deployed-outside-vpc)
  + [與 Lambda 函數相關聯的 IAM 角色具有管理存取政策](#administrative-access-policy)
  + [與 Lambda 函數相關聯的 IAM 角色具有管理存取 AWS 服務的政策](#service-admin-policy)
  + [Lambda 函數可透過 API Gateway 存取，無需授權](#api-gateway-no-authorization)
+ [Lambda 函數的可達性特性](#lambda-function-reachability)
  + [可公開叫用 Lambda 函數](#publicly-invocable)
+ [Lambda 函數的漏洞特性](#lambda-function-vulnerability)
  + [Lambda 函數具有網路可攻擊的軟體漏洞](#high-priority-vulnerability)
  + [Lambda 函數具有軟體漏洞](#low-priority-vulnerability)
  + [Lambda 函數具有惡意軟體套件](#malicious-package)
  + [Lambda 函數具有程式碼漏洞](#code-vulnerability)

## Lambda 函數的錯誤組態特性
<a name="lambda-function-misconfiguration"></a>

以下是 Lambda 函數的錯誤組態特性和建議的修復步驟。

### Lambda 函數部署在 Amazon VPC 外部
<a name="deployed-outside-vpc"></a>

 根據預設，Lambda 函數會部署為可存取公有網際網路。此預設組態可讓 Lambda 函數連線到 AWS 服務端點和外部 APIs，但也會讓它們面臨潛在的安全風險。具有網際網路存取的函數可用來滲透資料、與未經授權的伺服器通訊，或在遭到入侵時成為外部演員的進入點。Amazon VPC 透過限制 Lambda 函數僅與定義的私有網路中的資源通訊，來提供網路隔離。遵循標準安全原則，我們建議在 VPC 中部署 Lambda 函數，以透過網路隔離提高安全性。

**將函數連接至 VPC**  
 在公開調查結果中，開啟具有超連結的資源。這會開啟 Lambda 函數視窗。若要限制 Lambda 函數的網路存取，請將其連接到具有適當網路控制的 VPC。將您的函數連接至 VPC 之前，請規劃其可能需要的任何 AWS 服務存取，因為在沒有 NAT 閘道或 VPC 端點的私有子網路中的函數將無法連線 AWS 服務 APIs。如需有關如何將 Lambda 函數連接至您帳戶中 Amazon VPC 的資訊，請參閱[將 Lambda 函數連接至您帳戶中的 Amazon VPC AWS 帳戶](https://docs.aws.amazon.com/lambda/latest/dg/configuration-vpc.html#configuration-vpc-attaching)。如果您的函數需要 AWS 從私有子網路內存取服務，請考慮使用 VPC 端點進行服務連線，而不需要網際網路存取。如果您需要從私有子網路傳出網際網路連線，請設定 NAT Gateway。

### 與 Lambda 函數相關聯的 IAM 角色具有管理存取政策
<a name="administrative-access-policy"></a>

 管理存取政策為 Lambda 函數提供對 AWS 服務和資源的廣泛許可。這些政策通常包含功能不需要的許可。在 Lambda 函數上提供具有管理存取政策的 IAM 身分，而不是執行角色所需的最低許可集，可以在函數遭到入侵時增加攻擊範圍。遵循標準安全原則， AWS 建議您授予最低權限，這表示您僅授予執行任務所需的許可。

1.  **檢閱和識別管理政策** 

    在公開調查結果中，識別角色名稱。前往 IAM 儀表板，並使用先前識別的角色名稱來尋找角色。檢閱連接至 IAM 角色的許可政策。如果政策是 AWS 受管政策，請尋找 `AdministratorAccess`或 `IAMFullAccess`。否則，請在政策文件中尋找具有陳述式 `"Effect": "Allow", "Action": "*"`和 `"Resource": "*"` 的陳述式。

1.  **實作最低權限存取** 

    將管理政策取代為僅授予函數操作所需特定許可的政策。如需 IAM 角色安全最佳實務的詳細資訊，請參閱*AWS Identity and Access Management 《 使用者指南*》中的[套用最低權限許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege)。若要識別不必要的許可，您可以使用 IAM Access Analyzer 了解如何根據存取歷史記錄修改政策。如需詳細資訊，請參閱*AWS Identity and Access Management 《 使用者指南*》中的[外部和未使用存取的調查結果](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-findings.html)。或者，您可以建立新的 IAM 角色，以避免使用現有角色影響其他 Lambda 函數。在此案例中，建立新的 IAM 角色。然後將新角色與執行個體建立關聯。如需有關取代函數的 IAM 角色的資訊，請參閱《 *AWS Lambda 開發人員指南*》中的[更新函數的執行角色](https://docs.aws.amazon.com/lambda/latest/dg/permissions-executionrole-update.html#update-execution-role)。

1.  **安全組態考量** 

    如果執行個體需要管理存取許可，請考慮實作這些額外的安全控制來降低風險：
   +  **多重要素驗證 (MFA)** – MFA 需要其他形式的身分驗證來新增額外的安全層。即使登入資料遭到入侵，這也有助於防止未經授權的存取。如需詳細資訊，請參閱*AWS Identity and Access Management 《 使用者指南*》中的[需要多重要素驗證 (MFA)](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#enable-mfa-for-privileged-users)。
   +  **IAM 條件** – 設定條件元素可讓您根據來源 IP 或 MFA 存留期等因素，限制何時及如何使用管理許可。如需詳細資訊，請參閱《[IAM 使用者指南》中的使用 IAM 政策中的條件來進一步限制存取](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#use-policy-conditions)。 **
   +  **許可界限** – 許可界限會建立角色可擁有的最大許可，為具有管理存取權的角色提供護欄。如需詳細資訊，請參閱*AWS Identity and Access Management 《 使用者指南*》中的[使用許可界限來委派帳戶中的許可管理](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#bp-permissions-boundaries)。

### 與 Lambda 函數相關聯的 IAM 角色具有管理存取 AWS 服務的政策
<a name="service-admin-policy"></a>

 服務管理員政策允許 Lambda 函數在特定 AWS 服務內執行所有動作。這些政策通常會授予比函數操作所需的更多許可。如果具有服務管理員政策的 Lambda 函數遭到入侵，攻擊者可能會使用這些許可來存取或修改 AWS 環境中的敏感資料或服務。遵循標準安全原則，我們建議您授予最低權限，這表示您僅授予執行任務所需的許可。

1.  **檢閱和識別管理政策** 

    在公開調查結果中，識別 ARN 中的角色名稱。前往 IAM 儀表板，並尋找角色名稱。檢閱連接至角色的許可政策。如果政策是 AWS 受管政策，請尋找 `AdministratorAccess`或 `IAMFullAccess`。否則，請在政策文件中尋找具有 陳述式 `"Effect": "Allow", "Action": "*"`和 `"Resource": "*"` 的陳述式。

1.  **實作最低權限存取** 

    將管理政策取代為僅授予函數操作所需特定許可的政策。如需詳細資訊，請參閱《AWS Identity and Access Management 使用者指南》**中的[套用最低權限許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege)。若要識別不必要的許可，您可以使用 IAM Access Analyzer 了解如何根據存取歷史記錄修改政策。如需詳細資訊，請參閱*AWS Identity and Access Management 《 使用者指南*》中的[外部和未使用存取的調查結果](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-findings.html)。或者，您可以建立新的 IAM 角色，以避免影響使用現有角色的其他 Lambda 函數。在此案例中，建立新的 IAM 角色，然後將新的 IAM 角色與執行個體建立關聯。如需為函數取代 IAM 角色的說明，請參閱《 *AWS Lambda 開發人員指南*》中的[更新函數的執行角色](https://docs.aws.amazon.com/lambda/latest/dg/permissions-executionrole-update.html#update-execution-role)。

1.  **安全組態考量** 

    如果執行個體需要服務層級管理許可，請考慮實作這些額外的安全控制來降低風險：
   +  **多重要素驗證 (MFA)** – MFA 需要其他形式的身分驗證來新增額外的安全層。即使登入資料遭到入侵，這也有助於防止未經授權的存取。如需詳細資訊，請參閱*AWS Identity and Access Management 《 使用者指南*》中的[需要多重要素驗證 (MFA)](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#enable-mfa-for-privileged-users)。
   +  **IAM 條件** – 設定條件元素可讓您根據來源 IP 或 MFA 存留期等因素，限制何時及如何使用管理許可。如需詳細資訊，請參閱*AWS Identity and Access Management 《 使用者指南*[》中的使用 IAM 政策中的條件來進一步限制存取](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#use-policy-conditions)。
   +  **許可界限** – 許可界限會建立角色可擁有的最大許可，為具有管理存取權的角色提供護欄。如需詳細資訊，請參閱*AWS Identity and Access Management 《 使用者指南*》中的[使用許可界限來委派許可管理](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#bp-permissions-boundaries)。

### Lambda 函數可透過 API Gateway 存取，無需授權
<a name="api-gateway-no-authorization"></a>

 未授權的 API Gateway 方法允許任何具有 API Gateway 存取權的發起人叫用整合的 Lambda 函數，而無需身分驗證。此組態會產生安全風險，因為呼叫者可以在沒有適當授權的情況下叫用 Lambda 函數，這可能會導致濫用函數功能、資源耗用、存取敏感資料或未經授權的操作。雖然 API Gateway 可能具有網路層級存取控制，但缺少方法層級授權可能會允許具有 API Gateway 網路存取權的任何發起人免費叫用函數。遵循安全最佳實務， AWS 建議針對與 Lambda 函數整合的 API Gateway 方法實作適當的授權機制。

**設定 API Gateway 身分驗證**  
 在公開**的資源**索引標籤中，按一下**開啟資源**超連結以存取 API Gateway 方法。檢閱目前的授權組態，並實作適當的身分驗證機制。API Gateway 支援多種身分驗證選項，包括 AWS IAM、Amazon Cognito 使用者集區、Lambda 授權方和 API 金鑰。選擇最符合您安全需求和使用案例的身分驗證方法。如需設定身分驗證的詳細說明，請參閱[《 API Gateway 開發人員指南》中的在 API Gateway 中控制和管理對 REST API 的存取](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-control-access-to-api.html)。 **

## Lambda 函數的可達性特性
<a name="lambda-function-reachability"></a>

以下是 Lambda 函數的可達性特性和建議的修復步驟。

### 可公開叫用 Lambda 函數
<a name="publicly-invocable"></a>

 Lambda 資源型政策決定誰可以叫用您的函數。包含「\*」做為委託人 （或完全沒有委託人） 的資源政策函數，允許任何已驗證 AWS 的使用者叫用它。這會產生重大風險，特別是處理敏感資料、修改資源或具有更高許可的函數。未經授權的使用者可以利用此組態來執行不需要的操作、可能暴露資料、操縱資源或濫用函數功能。遵循安全最佳實務，我們建議將 Lambda 函數存取限制為僅限授權的主體。

**修改函數的資源型政策**  
 在公開**的資源**索引標籤中，使用超連結開啟資源。這會開啟 Lambda 函數視窗。在資源型政策中僅指定授權 AWS 的帳戶 IDs 或特定 IAM 主體 （使用者、角色或服務），以限制對 Lambda 函數的存取。您只能以程式設計方式修改資源型政策。

## Lambda 函數的漏洞特性
<a name="lambda-function-vulnerability"></a>

以下是 Lambda 函數的漏洞特徵和建議的修復步驟。

### Lambda 函數具有網路可攻擊的軟體漏洞
<a name="high-priority-vulnerability"></a>

 Lambda 函數程式碼中使用的軟體套件可以包含常見漏洞和暴露 (CVEs)，這些軟體套件具有很高被利用的機會。關鍵 CVEs對您的 AWS 環境構成重大的安全風險。攻擊者可以利用這些未修補的漏洞來損害資料的機密性、完整性或可用性，或存取其他系統。具有高入侵可能性的關鍵漏洞代表立即的安全威脅，因為攻擊者或自動化掃描工具可能已經公開提供並主動使用入侵程式碼。遵循安全最佳實務，我們建議您修補這些漏洞，以保護函數免於遭受攻擊。

**更新受影響的函數**  
 檢閱 特性**漏洞**索引標籤中的**參考**區段。廠商文件可能包含特定的修補指引。依照廠商建議的程序，將易受攻擊的程式庫更新為最新的安全版本。一般而言，修補工作流程取決於您是否透過上傳 zip 檔案或使用容器映像建立 Lambda 函數來部署 Lambda 套件。更新程式庫之後，請更新 Lambda 函數程式碼以使用固定版本。之後，請部署更新的版本。

### Lambda 函數具有軟體漏洞
<a name="low-priority-vulnerability"></a>

 相較於關鍵 CVEs，Lambda 函數通常會使用第三方程式庫和相依性，其中可能包含嚴重性或可利用性較低的安全漏洞。雖然這些非關鍵漏洞可能無法立即被利用，但仍代表安全弱點，這些弱點可能會與其他漏洞串連在一起以入侵您的函數。隨著時間的推移，新的入侵技術也可能出現，提高這些漏洞的風險。遵循標準安全原則，我們建議您修補這些漏洞，以維護安全的環境。

****  
 檢閱 特性**漏洞**索引標籤中的**參考**區段。廠商文件可能包含特定的修補指引。依照廠商建議的程序，將易受攻擊的程式庫更新為最新的安全版本。一般而言，修補工作流程取決於您是否透過上傳 zip 檔案或使用容器映像建立 Lambda 函數來部署 Lambda 套件。更新程式庫之後，請更新 Lambda 函數程式碼以使用固定版本。之後，請部署更新的版本。

### Lambda 函數具有惡意軟體套件
<a name="malicious-package"></a>

 惡意套件是包含有害程式碼的軟體元件，旨在損害系統和資料的機密性、完整性和可用性。惡意套件會對 Lambda 函數構成主動和關鍵的威脅，因為攻擊者可以在不利用漏洞的情況下自動執行惡意程式碼。遵循安全最佳實務， AWS 建議移除惡意套件，以保護 Lambda 函數免受潛在攻擊。

**移除惡意套件**  
 檢閱特徵**漏洞**索引標籤**參考**區段中的惡意套件詳細資訊，以了解威脅。從函數程式碼和相依性中移除已識別的惡意套件。對於使用 layer 的函數，請檢查惡意套件是否安裝在任何 layer 中，並將其移除。更新您的部署套件或容器映像以排除惡意套件，然後部署更新的版本。如需說明，請參閱[將 Lambda 函數部署為 .zip 檔案封存](https://docs.aws.amazon.com/lambda/latest/dg/configuration-function-zip.html)的 .zip 檔案封存，或使用[容器映像的容器映像建立 Lambda 函數](https://docs.aws.amazon.com/lambda/latest/dg/images-create.html)。

### Lambda 函數具有程式碼漏洞
<a name="code-vulnerability"></a>

 Lambda 函數應用程式程式碼包含威脅執行者可能利用的安全漏洞。程式碼漏洞包括資料洩漏、注入漏洞、遺失加密，以及透過自動化程式碼分析識別的脆弱密碼編譯。這些漏洞對您的 AWS 環境構成安全風險，因為攻擊者可以利用它們來危害資料的機密性、完整性或可用性，或存取其他系統。程式碼漏洞代表可能與其他攻擊向量連結以入侵函數的安全弱點。遵循安全最佳實務， AWS 建議解決這些程式碼漏洞，以保護函數免受攻擊。

**更新受影響的函數**  
 檢閱特徵漏洞****索引標籤中的**參考**區段。Amazon Inspector 調查結果可能包含特定的修補指引和程式碼片段，其中顯示易受攻擊的程式碼位置。使用提供的plug-and-play程式碼區塊或實作安全編碼實務，解決函數程式碼中已識別的安全問題。請務必先檢閱程式碼修復建議，再採用這些建議，因為您可能需要編輯這些建議，以確保程式碼如預期般執行。修正漏洞後，請更新 Lambda 函數程式碼以使用更正的版本。如需說明，請參閱《 *AWS Lambda 開發人員指南*》中的[更新函數程式碼](https://docs.aws.amazon.com/lambda/latest/dg/configuration-function-zip.html#configuration-function-update)。之後，請部署更新的版本。如需說明，請參閱[將 Lambda 函數部署為 .zip 檔案封存](https://docs.aws.amazon.com/lambda/latest/dg/configuration-function-zip.html)的 .zip 檔案封存，或使用[容器映像的容器映像建立 Lambda 函數](https://docs.aws.amazon.com/lambda/latest/dg/images-create.html)。如需 Amazon Inspector 程式碼掃描的詳細資訊，請參閱《[Amazon Inspector 使用者指南》中的 Amazon Inspector Lambda 程式碼掃描](https://docs.aws.amazon.com/inspector/latest/user/scanning_resources_lambda_code.html)。 *Amazon Inspector * 