AWS - Abuser des extensions Lambda

Tip

Apprenez & pratiquez AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Apprenez & pratiquez GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Apprenez & pratiquez Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Soutenez HackTricks

Extensions Lambda

Les extensions Lambda amĂ©liorent les fonctions en s’intĂ©grant Ă  divers outils de surveillance, d’observabilitĂ©, de sĂ©curitĂ© et de gouvernance. Ces extensions, ajoutĂ©es via des .zip archives utilisant des couches Lambda ou incluses dans les dĂ©ploiements d’images de conteneur, fonctionnent en deux modes : interne et externe.

  • Les extensions internes se fusionnent avec le processus d’exĂ©cution, manipulant son dĂ©marrage Ă  l’aide de variables d’environnement spĂ©cifiques au langage et de scripts d’enveloppe. Cette personnalisation s’applique Ă  une gamme de temps d’exĂ©cution, y compris Java Correto 8 et 11, Node.js 10 et 12, et .NET Core 3.1.
  • Les extensions externes s’exĂ©cutent en tant que processus sĂ©parĂ©s, maintenant l’alignement opĂ©rationnel avec le cycle de vie de la fonction Lambda. Elles sont compatibles avec divers temps d’exĂ©cution comme Node.js 10 et 12, Python 3.7 et 3.8, Ruby 2.5 et 2.7, Java Corretto 8 et 11, .NET Core 3.1, et des temps d’exĂ©cution personnalisĂ©s.

Pour plus d’informations sur comment fonctionnent les extensions lambda, consultez la documentation.

Extension externe pour la persistance, le vol de requĂȘtes et la modification de requĂȘtes

Ceci est un résumé de la technique proposée dans ce post : https://www.clearvector.com/blog/lambda-spy/

Il a Ă©tĂ© constatĂ© que le noyau Linux par dĂ©faut dans l’environnement d’exĂ©cution Lambda est compilĂ© avec les appels systĂšme “process_vm_readv” et “process_vm_writev”. Et tous les processus s’exĂ©cutent avec le mĂȘme ID utilisateur, mĂȘme le nouveau processus créé pour l’extension externe. Cela signifie qu’une extension externe a un accĂšs complet en lecture et en Ă©criture Ă  la mĂ©moire heap de Rapid, par conception.

De plus, bien que les extensions Lambda aient la capacitĂ© de s’abonner aux Ă©vĂ©nements d’invocation, AWS ne rĂ©vĂšle pas les donnĂ©es brutes Ă  ces extensions. Cela garantit que les extensions ne peuvent pas accĂ©der aux informations sensibles transmises via la requĂȘte HTTP.

Le processus Init (Rapid) surveille toutes les requĂȘtes API Ă  http://127.0.0.1:9001 tandis que les extensions Lambda sont initialisĂ©es et s’exĂ©cutent avant l’exĂ©cution de tout code d’exĂ©cution, mais aprĂšs Rapid.

https://www.clearvector.com/blog/content/images/size/w1000/2022/11/2022110801.rapid.default.png

La variable AWS_LAMBDA_RUNTIME_API indique l’adresse IP et le numĂ©ro de port de l’API Rapid aux processus d’exĂ©cution enfants et aux extensions supplĂ©mentaires.

Warning

En changeant la variable d’environnement AWS_LAMBDA_RUNTIME_API Ă  un port auquel nous avons accĂšs, il est possible d’intercepter toutes les actions au sein de l’exĂ©cution Lambda (man-in-the-middle). Cela est possible car l’extension s’exĂ©cute avec les mĂȘmes privilĂšges que Rapid Init, et le noyau du systĂšme permet la modification de la mĂ©moire des processus, permettant l’altĂ©ration du numĂ©ro de port.

Parce que les extensions s’exĂ©cutent avant tout code d’exĂ©cution, modifier la variable d’environnement influencera le processus d’exĂ©cution (par exemple, Python, Java, Node, Ruby) lors de son dĂ©marrage. De plus, les extensions chargĂ©es aprĂšs la nĂŽtre, qui dĂ©pendent de cette variable, passeront Ă©galement par notre extension. Cette configuration pourrait permettre Ă  un logiciel malveillant de contourner complĂštement les mesures de sĂ©curitĂ© ou les extensions de journalisation directement dans l’environnement d’exĂ©cution.

https://www.clearvector.com/blog/content/images/size/w1000/2022/11/2022110801.rapid.mitm.png

L’outil lambda-spy a Ă©tĂ© créé pour effectuer cette Ă©criture en mĂ©moire et voler des informations sensibles des requĂȘtes lambda, d’autres requĂȘtes d’extensions et mĂȘme les modifier.

Références

Tip

Apprenez & pratiquez AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Apprenez & pratiquez GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Apprenez & pratiquez Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Soutenez HackTricks