AWS - Abusing Lambda Extensions

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Lambda Extensions

Lambda extensions покращують функції, інтегруючись з різними інструментами моніторингу, спостереження, безпеки та управління. Ці розширення, додані за допомогою .zip архівів за допомогою шар Lambda або включені в розгортання контейнерних зображень, працюють у двох режимах: внутрішній та зовнішній.

  • Внутрішні розширення зливаються з процесом виконання, маніпулюючи його запуск за допомогою мовно-специфічних змінних середовища та обгорткових скриптів. Ця настройка застосовується до ряду середовищ виконання, включаючи Java Correto 8 та 11, Node.js 10 та 12, та .NET Core 3.1.

  • Зовнішні розширення працюють як окремі процеси, зберігаючи вирівнювання роботи з життєвим циклом функції Lambda. Вони сумісні з різними середовищами виконання, такими як Node.js 10 та 12, Python 3.7 та 3.8, Ruby 2.5 та 2.7, Java Corretto 8 та 11, .NET Core 3.1, та власні середовища виконання.

Для отримання додаткової інформації про роботу розширень lambda перевірте документацію.

Зовнішнє розширення для постійності, крадіжки запитів та модифікації запитів

Це краткий опис техніки, запропонованої в цьому пості: https://www.clearvector.com/blog/lambda-spy/

Було виявлено, що за замовчуванням ядро Linux в середовищі виконання Lambda компілюється з системними викликами "process_vm_readv" та "process_vm_writev". І всі процеси працюють з одним і тим же ідентифікатором користувача, навіть новий процес, створений для зовнішнього розширення. Це означає, що зовнішнє розширення має повний доступ на читання та запис в пам'ять кучі Rapid, за замовчуванням.

Більше того, хоча розширення Lambda мають можливість підписуватися на події виклику, AWS не розкриває оброблені дані цим розширенням. Це забезпечує, що розширення не можуть отримати доступ до чутливої інформації, переданої через запит HTTP.

Процес Init (Rapid) моніторить всі API-запити за адресою http://127.0.0.1:9001, під час ініціалізації розширень Lambda та запуску перед виконанням будь-якого коду середовища виконання, але після Rapid.

Змінна AWS_LAMBDA_RUNTIME_API вказує IP-адресу та номер порту API Rapid для дочірніх процесів середовища виконання та додаткових розширень.

Змінивши змінну середовища AWS_LAMBDA_RUNTIME_API на порт, до якого ми маємо доступ, можливо перехопити всі дії в середовищі виконання Lambda (людина посередині). Це можливо, оскільки розширення працює з тими ж привілеями, що й Rapid Init, а ядро системи дозволяє зміну пам'яті процесу, що дозволяє змінювати номер порту.

Оскільки розширення запускаються перед будь-яким кодом середовища виконання, зміна змінної середовища вплине на процес середовища виконання (наприклад, Python, Java, Node, Ruby) при запуску. Крім того, розширення, завантажені після нашого, які покладаються на цю змінну, також будуть маршрутизуватися через наше розширення. Це налаштування може дозволити шкідливому програмному забезпеченню повністю обійти заходи безпеки або розширення журналювання безпосередньо в середовищі виконання.

Інструмент lambda-spy був створений для виконання цієї запису в пам'ять та крадіжки чутливої інформації з запитів lambda, інших запитів розширень та навіть їх модифікації.

Посилання

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Last updated