AWS - Abuser des extensions Lambda

Reading time: 5 minutes

tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir 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 et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir HackTricks