AWS - Abusing Lambda Extensions

htARTE (HackTricks AWS Red Team Expert)를 통해 AWS 해킹을 제로부터 전문가까지 배우세요 !

HackTricks를 지원하는 다른 방법:

Lambda Extensions

Lambda 확장은 다양한 모니터링, 관측, 보안 및 거버넌스 도구와 통합하여 함수를 향상시킵니다. 이러한 확장은 .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사용자 정의 런타임과 호환됩니다.

자세한 내용은 람다 확장이 작동하는 방법을 확인하려면 문서를 확인하세요.

지속성, 요청 도용 및 요청 수정을 위한 외부 확장

이것은 이 게시물에서 제안된 기술의 요약입니다: https://www.clearvector.com/blog/lambda-spy/

Lambda 런타임 환경의 기본 Linux 커널이 “process_vm_readv” 및 “process_vm_writev” 시스템 호출로 컴파일되어 있음이 밝혀졌습니다. 그리고 모든 프로세스는 동일한 사용자 ID로 실행되며, 외부 확장을 위해 생성된 새 프로세스도 마찬가지입니다. 즉, 외부 확장은 설계상 Rapid의 힙 메모리에 대한 완전한 읽기 및 쓰기 액세스 권한을 갖습니다.

또한, Lambda 확장은 호출 이벤트를 구독할 수 있지만 AWS는 이러한 확장에 원시 데이터를 공개하지 않습니다. 이는 확장이 HTTP 요청을 통해 전송된 민감한 정보에 액세스할 수 없도록 보장합니다.

Init (Rapid) 프로세스는 Lambda 확장이 초기화되고 실행되기 전에 모든 API 요청을 http://127.0.0.1:9001에서 모니터링합니다. 그러나 Lambda 확장은 런타임 코드 실행 전에 실행되므로 AWS_LAMBDA_RUNTIME_API 변수를 수정하면 런타임 프로세스 (예: Python, Java, Node, Ruby)에 영향을 미칩니다. 또한, 우리 다음에 로드된 확장은 이 변수에 의존하므로 우리 확장을 통해 경로를 설정할 수도 있습니다. 이 설정은 악성 코드가 런타임 환경 내에서 보안 조치나 로깅 확장을 완전히 우회하도록 할 수 있습니다.

lambda-spy 도구는 해당 메모리 쓰기를 수행하고 람다 요청, 다른 확장 요청 및 심지어 수정에서 민감한 정보를 도용하는 데 사용되었습니다.

참고 자료

htARTE (HackTricks AWS Red Team Expert)를 통해 AWS 해킹을 제로부터 전문가까지 배우세요 !

HackTricks를 지원하는 다른 방법:

最終更新