GCP - Cloudfunctions Privesc
cloudfunctions
Mais informações sobre Cloud Functions:
pageGCP - Cloud Functions Enumcloudfunctions.functions.create
, cloudfunctions.functions.sourceCodeSet
, iam.serviceAccounts.actAs
cloudfunctions.functions.create
, cloudfunctions.functions.sourceCodeSet
, iam.serviceAccounts.actAs
Um atacante com esses privilégios pode criar uma nova Cloud Function com código arbitrário (malicioso) e atribuir a ela uma Conta de Serviço. Em seguida, vazar o token da Conta de Serviço nos metadados para escalar os privilégios para ela. Alguns privilégios para acionar a função podem ser necessários.
Scripts de exploração para este método podem ser encontrados aqui e aqui e o arquivo .zip pré-construído pode ser encontrado aqui.
cloudfunctions.functions.update
, cloudfunctions.functions.sourceCodeSet
, iam.serviceAccounts.actAs
cloudfunctions.functions.update
, cloudfunctions.functions.sourceCodeSet
, iam.serviceAccounts.actAs
Um atacante com esses privilégios pode modificar o código de uma Função e até mesmo modificar a conta de serviço anexada com o objetivo de extrair o token. Alguns privilégios para acionar a função podem ser necessários.
O script de exploração para este método pode ser encontrado aqui.
cloudfunctions.functions.sourceCodeSet
cloudfunctions.functions.sourceCodeSet
Com essa permissão, você pode obter um URL assinado para poder fazer upload de um arquivo para um bucket de função (mas o código da função não será alterado, você ainda precisa atualizá-lo)
Não tenho certeza de quão útil apenas essa permissão é do ponto de vista de um atacante, mas é bom saber.
cloudfunctions.functions.setIamPolicy
, iam.serviceAccounts.actAs
cloudfunctions.functions.setIamPolicy
, iam.serviceAccounts.actAs
Dê a si mesmo qualquer um dos privilégios anteriores de .update
ou .create
para escalar.
cloudfunctions.functions.update
cloudfunctions.functions.update
Apenas tendo permissões de cloudfunctions
, sem iam.serviceAccounts.actAs
, você não poderá atualizar a função, PORTANTO ISSO NÃO É UMA PRIVILÉGIO VÁLIDO.
Permissões de Escrita no Bucket
Um atacante com permissões de escrita sobre o bucket onde o código das Cloud Functions está armazenado poderá modificar o código sobrescrevendo o function_code.zip
e poderá executar código arbitrário uma vez que seja executado.
Referências
Última actualización