티스토리 뷰

📌 3줄 요약

1. PISM-025는 AWS Lambda 함수가 사용 중단일이 지난 런타임을 쓰고 있는지 보는 위험도 5.0 항목입니다.

2. 사용 중단된 런타임도 함수는 끝까지 정상 호출되고, 업데이트 차단도 2027년으로 미뤄져 있어 아무 문제 없어 보입니다. 하지만 보안 패치는 사용 중단일에 이미 끝났습니다.

3. 전 리전의 모든 함수 버전에서 런타임을 조회하고, 코드와 배포 템플릿을 함께 고쳐 지원 런타임으로 옮기면 됩니다. Python 3.10은 2026년 10월 31일에 사용 중단됩니다.

몇 년 전에 만든 Lambda 함수가 아무 문제 없이 잘 돌고 있나요? 그렇다면 오히려 한 번 확인해 볼 때입니다. Lambda는 지원이 끝난 런타임이라도 함수를 멈추지 않습니다. 장애가 나지 않으니 아무도 모른 채 패치가 끊긴 런타임 위에서 계속 돌아갑니다.

지난 EoS 편에서 서버 OS의 지원 종료를 다뤘다면, 이번에는 클라우드 버전입니다. 2026년 평가기준에 새로 생긴 클라우드 관리체계의 PISM-025를 AWS Lambda 기준으로 정리합니다.


🧭 Lambda 런타임과 PISM-025

런타임은 Lambda가 함수 코드를 실행하는 언어 환경입니다. python3.12, nodejs22.x처럼 언어 버전마다 별도의 식별자가 있고, 각 런타임은 Amazon Linux 위에서 돌아갑니다. AWS는 지원 중인 런타임에 보안 패치를 자동으로 적용해 주지만, 언어나 운영체제의 커뮤니티 지원이 끝나면 그 런타임을 사용 중단(deprecation) 처리합니다. 그 뒤로 런타임은 "있는 그대로" 제공되고, 보안 패치와 기술 지원이 끊깁니다.

 

PISM-025는 금융보안원 전자금융기반시설 보안 취약점 평가기준(제2026-1호)의 클라우드 관리체계 항목으로, 위험도는 5.0입니다. AWS 기준으로는 Lambda 공식 문서의 런타임 목록에서 사용 중단 날짜에 도달한 런타임을 쓰면 취약입니다. 서드파티 솔루션이나 대체 기능을 적절히 적용했다면 양호로 볼 수 있다는 예외도 있습니다.

 

그리고 서버 EoS 항목(SRV-179)과 똑같은 조건이 하나 붙어 있습니다. 런타임 교체 계획을 세우고 보고까지 마쳐도 판정은 취약이고, 위험수용으로 관리합니다. 계획서가 양호를 만들어 주지 않는다는 점은 서버와 같습니다.


⚠️ 사용 중단된 런타임이 위험한 이유

Lambda는 서버를 관리하지 않아도 되는 서비스라서 "보안 패치는 AWS가 알아서 한다"고 생각하기 쉽습니다. 맞는 말이지만, 그건 지원 중인 런타임에 한해서입니다. AWS 문서는 런타임이 사용 중단되는 순간 AWS의 런타임 업데이트 책임이 끝나고, 지원 런타임으로 옮기는 것은 고객 책임이라고 명시하고 있습니다.

 

AWS는 사용 중단된 런타임에 버그나 취약점이 있을 수 있고, 인증서 만료 같은 문제로 갑자기 제대로 동작하지 않을 수도 있다고 경고합니다. 특히 Lambda 함수는 외부 이벤트를 받아 바로 내부 데이터와 다른 AWS 서비스에 접근하는 경우가 많습니다. 그래서 언어 런타임의 알려진 취약점이 그대로 공격 경로가 될 수 있습니다.


💡 문제 없어 보이는 5가지 착각

착각 흔한 생각 실제
잘 돌아간다 지원이 끝나면 함수가 멈출 테니 그때 바꾸면 된다 사용 중단 후에도 함수 호출은 무기한 계속된다. 멈추지 않으니 신호가 없다
아직 수정된다 코드 업데이트가 되니 아직 지원 중이다 업데이트 차단은 사용 중단보다 한참 뒤다. 상당수 런타임의 차단이 2027년 7~8월로 미뤄져 있지만, 보안 패치는 사용 중단일에 끊겼다
콘솔에 없다 콘솔에서 고를 수 없으니 새로 생길 일은 없다 콘솔에서만 막힐 뿐, CLI·SAM·CloudFormation으로는 차단일 전까지 계속 생성·수정된다. 배포 파이프라인이 옛 런타임을 계속 찍어낼 수 있다
최신 버전만 함수 목록에서 런타임을 보면 된다 기본 조회와 AWS 알림 메일은 $LATEST 버전만 보여 준다. 별칭이 가리키는 게시 버전이 옛 런타임일 수 있다
컨테이너 함수 컨테이너 이미지 함수도 알림이 올 것이다 컨테이너 이미지 함수는 지원 종료 알림이 없고, 함수 설정에 런타임 값도 나오지 않는다. 베이스 이미지를 직접 확인해야 한다

첫 번째와 두 번째 착각이 이 항목을 놓치게 만드는 핵심입니다. 서버는 EoS가 되면 적어도 "오래된 OS"라는 눈에 보이는 신호가 있습니다. 반면 Lambda는 함수가 계속 돌고 코드 배포까지 되니, 사용 중단일과 업데이트 차단일 사이의 긴 공백이 생깁니다. 점검은 업데이트 차단일이 아니라 사용 중단일을 기준으로 봅니다.

📅 지금 확인해야 할 날짜

AWS 문서 기준으로 이미 사용 중단된 주요 런타임과 곧 사용 중단되는 런타임입니다. 날짜는 AWS가 예고한 일정이라 바뀔 수 있으니, 실제 판단 전에는 공식 문서를 다시 확인하세요.

상태 런타임 (사용 중단일)
이미 중단 provided.al2 (2026.07.31), Node.js 20 (2026.04.30), Ruby 3.2 (2026.03.31), Python 3.9 (2025.12.15), Node.js 18 (2025.09.01), .NET 6 (2024.12.20), Python 3.8 (2024.10.14) 등
임박 Python 3.10 (2026.10.31), .NET 8 (2026.11.10)
2027년 Ruby 3.3 (03.31), Node.js 22 (04.30), Python 3.11·Java 8·11·17의 Amazon Linux 2 런타임 (06.30)

Amazon Linux 2 자체는 2026년 6월 30일에 지원이 끝났습니다. 다만 AWS는 Amazon Linux 2 기반 Lambda 런타임에 대해 표에 나온 사용 중단일까지 중요한 보안 패치를 계속 제공한다고 밝혔습니다. 그래도 Amazon Linux 2023 기반 런타임으로 빨리 옮길 것을 권고하고 있습니다. Java 버전을 올리기 어렵다면 Java 8·11·17도 Amazon Linux 2023 기반 런타임이 따로 있습니다.


🛠 조치 방법

아래 명령은 관리용 단말기의 AWS CLI에서 실행합니다. Lambda 조회·수정 권한이 있는 IAM 역할이 필요하고, 함수 이름과 리전은 가상 예시입니다.

1단계. 전 리전·모든 버전의 런타임 조회

# 리전별로 모든 함수 버전의 런타임과 배포 방식(Zip/Image) 출력
for region in $(aws ec2 describe-regions --query "Regions[].RegionName" --output text); do
  echo "== $region"
  aws lambda list-functions --region "$region" --function-version ALL \
    --query "Functions[].[FunctionArn,Runtime,PackageType]" --output text
done

# 특정 런타임을 쓰는 함수만 골라 보기 (예: python3.10)
aws lambda list-functions --region ap-northeast-2 --function-version ALL \
  --query "Functions[?Runtime=='python3.10'].FunctionArn" --output text

함수를 하나씩 열어 런타임을 보는 방식은 리전 하나, $LATEST 버전 하나만 보게 됩니다. --function-version ALL을 붙여야 게시된 버전까지 나옵니다. 결과를 위의 날짜표와 대조하고, PackageType이 Image인 함수는 런타임 칸이 비어 나오므로 따로 표시해 둡니다.

💡 팁 AWS Trusted Advisor의 "AWS Lambda Functions Using Deprecated Runtimes" 점검은 $LATEST와 게시 버전을 모두 보여 주고 자동으로 갱신됩니다. 주간 메일 알림도 켤 수 있으니 정기 점검용으로 쓰기 좋습니다. AWS 지원 종료 예고 메일은 계정의 기본 연락처로 가므로, 그 주소가 실제 담당자에게 닿는지도 확인해 두세요.

2단계. 코드 호환성 확인

AWS는 메이저 버전 사이의 하위 호환성을 보장하지 않기 때문에, 런타임 교체는 AWS가 대신해 주지 않는 고객 작업입니다. 새 런타임에서 코드와 의존 라이브러리가 동작하는지 개발·테스트 환경에서 먼저 확인합니다. 특히 런타임에 포함된 AWS SDK에 기대고 있었다면, 필요한 SDK를 배포 패키지나 레이어에 직접 넣어 두는 편이 안전합니다.

3단계. 런타임 교체 (버전·별칭으로 안전하게)

⚠️ 주의 업데이트 차단일이 지난 뒤에는 새 런타임으로 바꾼 함수를 옛 런타임으로 되돌릴 수 없습니다. 교체 전에 현재 상태를 버전으로 게시해 두고, 별칭으로 트래픽을 옮기는 방식으로 진행하세요.

# 1) 현재 상태를 버전으로 남겨 두기 (되돌리기용)
aws lambda publish-version --region ap-northeast-2 --function-name order-handler

# 2) $LATEST의 런타임을 지원 런타임으로 변경
aws lambda update-function-configuration --region ap-northeast-2 \
  --function-name order-handler --runtime python3.13

# 3) 테스트 후 새 버전 게시, 운영 별칭을 새 버전으로 이동
aws lambda publish-version --region ap-northeast-2 --function-name order-handler
aws lambda update-alias --region ap-northeast-2 --function-name order-handler \
  --name prod --function-version <새버전번호>

# 문제 발생 시: 별칭을 이전 버전 번호로 되돌림
aws lambda update-alias --region ap-northeast-2 --function-name order-handler \
  --name prod --function-version <이전버전번호>

4단계. 배포 템플릿과 컨테이너 이미지도 함께

함수를 SAM, CloudFormation, Terraform 같은 코드로 배포하고 있다면 템플릿의 Runtime 값도 반드시 바꿔야 합니다. CLI로 함수만 고쳐 두면, 다음 배포 때 파이프라인이 옛 런타임으로 되돌려 놓습니다. 컨테이너 이미지 함수는 지원되는 최신 베이스 이미지로 다시 빌드해서 배포합니다. 지원 중인 베이스 이미지라도 주기적으로 다시 빌드해야 패치가 반영된다는 점도 함께 기억하세요.

5단계. 바로 바꿀 수 없다면

교체가 늦어지는 함수는 교체 계획을 보고하고 위험수용 승인을 받습니다. 그동안 함수 실행 역할의 권한을 꼭 필요한 범위로 줄이고, 외부에서 직접 호출되는 경로(함수 URL, API Gateway 공개 엔드포인트 등)를 점검해 노출을 최소화합니다. 위험수용은 기한을 정해 두고, 그 안에 교체를 마치는 것이 원칙입니다.


🎉 정리

정리하면, Lambda 런타임의 지원 종료는 함수를 멈추지 않기 때문에 조용히 쌓이는 위험입니다. 판단 기준은 업데이트가 막히는 날이 아니라 보안 패치가 끊기는 사용 중단일입니다. 전 리전, 모든 버전에서 런타임을 조회하고, 함수와 배포 템플릿과 컨테이너 이미지를 함께 옮기면 됩니다. 당장 2026년 10월 31일 Python 3.10, 11월 10일 .NET 8이 차례로 사용 중단됩니다.

✅ 점검 체크리스트

대상 확인할 것
조회 범위 모든 리전과 게시 버전까지 런타임을 조회했는가
판정 기준 업데이트 차단일이 아니라 사용 중단일 기준으로 판단했는가
배포 경로 SAM·CloudFormation·Terraform 템플릿의 Runtime 값도 바꿨는가
컨테이너 컨테이너 이미지 함수의 베이스 이미지 버전을 따로 확인했는가
알림 계정 기본 연락처와 Trusted Advisor 알림이 담당자에게 닿는가
위험수용 교체 지연 함수에 계획 보고, 권한 축소, 기한 있는 승인이 있는가

💬 자주 묻는 질문

Q. 런타임 안의 마이너 버전 패치는 어떻게 되나요?
지원 중인 런타임은 AWS가 기본 설정에서 자동으로 패치합니다. 런타임 업데이트 모드를 수동으로 바꿔 두었다면 그 책임은 고객에게 넘어오니, 설정을 확인해 보세요. 메이저 버전 교체(예: 3.10 → 3.13)는 어떤 경우에도 고객이 직접 해야 합니다.

Q. 새 런타임은 언제 나오나요?
Lambda는 언어가 장기 지원(LTS) 단계에 들어갔을 때 새 런타임을 냅니다. AWS 문서에는 Node.js 26과 Python 3.15가 2026년 11월 출시 목표로 공개 미리보기 중이라고 되어 있습니다. 미리보기 런타임은 SLA와 기술 지원 대상이 아니므로 운영 환경에는 쓰지 마세요.

Q. Azure Functions도 같은 항목인가요?
평가기준에는 Azure Functions의 런타임 버전 점검도 들어 있습니다. 이 글은 AWS만 다뤘으니, Azure를 쓴다면 Microsoft의 Functions 지원 버전 문서를 기준으로 같은 원칙을 적용하세요.

🔗 참고 자료

· AWS 문서: Lambda 런타임 목록, 사용 중단 정책과 일정
· endoflife.date: AWS Lambda 런타임 지원 종료 일정 (보조 자료, 캘린더 구독 가능)
· AWS 서비스별 지원 종료 일정 정리 (보조 자료)


※ 이 글은 공개된 AWS 문서를 바탕으로 작성한 일반 가이드이며, 특정 조직과 무관합니다. 함수 이름, 별칭, 리전은 가상 예시입니다. 금융보안원 평가기준 원문은 배포가 제한된 문서이므로, 원문의 판단 문구와 점검 절차는 싣지 않았습니다. 런타임 일정은 2026년 10월 22일 기준 AWS 문서 내용이며 바뀔 수 있습니다. 실제 판정은 각 조직이 적용하는 최신 평가기준을 따르세요.