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
- Vérifiez les plans d'abonnement !
- Rejoignez le đŹ groupe Discord ou le groupe telegram ou suivez-nous sur Twitter đŠ @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépÎts github.
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.
.png)
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.
.png)
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
- https://aws.amazon.com/blogs/compute/building-extensions-for-aws-lambda-in-preview/
- https://www.clearvector.com/blog/lambda-spy/
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
- Vérifiez les plans d'abonnement !
- Rejoignez le đŹ groupe Discord ou le groupe telegram ou suivez-nous sur Twitter đŠ @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépÎts github.