보안이슈

Open5GS AMF 취약점 2건 분석|공격 조건과 대응

Open5GS AMF의 UE 이동성 컨텍스트 디코딩과 N1-N2 메시지 처리에서 공개된 CVE 2건을 영향 범위, 원격 입력 경로, 2.8.0 적용 후 검증 순서로 다룹니다.

Open5GS AMF 취약점 2건의 메모리 손상과 서비스 거부 대응을 나타낸 한국어 표지
Open5GS AMF 취약점 2건의 메모리 손상과 서비스 거부 대응을 나타낸 한국어 표지

Open5GS는 4G EPC와 5G 코어 네트워크 기능을 구현하는 오픈소스 프로젝트입니다. 2026년 8월 30일 CVE 레코드에 Open5GS AMF를 대상으로 한 취약점 두 건이 등록됐습니다. 하나는 UE 이동성 컨텍스트 목록을 디코딩하는 과정의 메모리 손상이고, 다른 하나는 N1-N2 메시지 전송 요청 처리 과정에서 발생하는 서비스 거부입니다. 두 문제 모두 Open5GS 2.7.0부터 2.7.7까지 영향을 받으며 2.8.0이 수정 경계로 제시됐습니다.

AMF는 5G 코어에서 단말의 접속과 이동성 관리, NAS 메시지 처리, gNB와의 제어 신호 연계를 담당합니다. 애플리케이션 계층의 일반 웹 서비스와 달리 등록·세션·이동성 절차가 이어지는 제어면 기능이므로, 프로세스 중단은 단순한 오류 응답을 넘어 해당 AMF가 담당하는 등록과 제어 흐름의 가용성에 직접 연결될 수 있습니다. 업데이트 판단에서는 패키지 버전뿐 아니라 실제 배포된 AMF 인스턴스와 이중화 구성을 함께 확인해야 합니다.

CVE-2026-82587 메모리 손상

CVE-2026-82587은 src/amf/namf-handler.c의 amf_namf_comm_decode_ue_mm_context_list 함수와 관련됩니다. CVE 레코드는 UE 컨텍스트 안의 mmContextList 배열에 포함된 allowedNssai 값을 처리하는 과정에서 메모리 손상이 발생할 수 있다고 설명합니다. 입력은 네트워크를 통해 도달할 수 있으므로, AMF의 Namf Communication 인터페이스에 어떤 서비스가 접근할 수 있는지와 별개로 취약 버전의 디코딩 경계를 수정하는 것이 우선입니다.

allowedNssai는 단말에 허용된 네트워크 슬라이스 정보를 표현하는 구조 안에 놓입니다. 이 취약점에서 중요한 운영 판단은 실제 이동성 컨텍스트 전달 기능을 사용하는지, AMF 서비스 기반 인터페이스가 어떤 네트워크 구간에 노출되는지, 입력 검증을 앞단 프록시에만 의존하는지입니다. 앞단이 정상 JSON 형식이나 요청 크기를 검사해도 중첩된 구조의 내부 값과 C 코드의 메모리 처리까지 대신 검증하지는 못합니다. 공식 수정판 적용이 필요한 이유입니다.

Open5GS AMF의 UE 컨텍스트 메모리 손상과 N1-N2 메시지 서비스 거부 경로
UE 컨텍스트 디코딩과 N1-N2 메시지 처리의 서로 다른 취약 경로

CVE-2026-82589 메시지 처리 중단

CVE-2026-82589은 같은 소스 파일의 amf_namf_comm_handle_n1_n2_message_transfer 함수에 영향을 줍니다. N1N2MessageTransferReqData 구조의 n2InfoContainer, smInfo, n2InfoContent를 거쳐 ngapIeType을 처리할 때 서비스 거부가 발생할 수 있습니다. N1-N2 메시지 전송은 다른 네트워크 기능이 AMF를 통해 단말과 무선망 쪽으로 메시지를 전달하는 절차와 연결되므로, 처리 함수의 비정상 종료는 해당 요청 하나에 머물지 않고 AMF 프로세스 가용성에 영향을 줄 수 있습니다.

두 CVE는 모두 AMF의 namf-handler.c에서 발견됐지만 입력 구조와 결과가 다릅니다. CVE-2026-82587은 UE 이동성 컨텍스트 목록의 중첩 값을 디코딩하는 메모리 경계 문제이고, CVE-2026-82589은 N1-N2 전송 요청 안의 N2 정보 유형을 처리하는 서비스 거부 문제입니다. 같은 테스트 요청으로 두 문제를 한 번에 검증하려 하기보다, 이동성 컨텍스트 전달과 N1-N2 메시지 전송을 별도의 정상 시나리오로 구성해야 수정 후 기능 회귀도 정확히 확인할 수 있습니다.

영향 범위 확인

먼저 운영 환경의 Open5GS 버전을 패키지 관리자 출력, 컨테이너 이미지 태그, 실행 바이너리 빌드 정보 중 두 가지 이상으로 교차 확인합니다. 자체 빌드나 배포판 패키지를 사용하면 표시 버전과 포함 커밋이 다를 수 있으므로 공급 경로의 변경 기록도 다룹니다. 동일한 클러스터 안에 여러 AMF 인스턴스가 있다면 로드밸런서 뒤의 모든 인스턴스가 같은 수정 수준인지 확인해야 합니다. 일부 노드만 갱신하면 트래픽 분배에 따라 취약 코드가 계속 실행될 수 있습니다.

  • Open5GS 2.7.0부터 2.7.7까지의 AMF 인스턴스
  • Namf Communication 인터페이스에서 UE 이동성 컨텍스트 목록을 처리하는 구성
  • N1-N2 메시지 전송 요청을 수신하는 AMF 서비스
  • 운영 이미지와 대기·재해복구 이미지에 동일한 이전 바이너리가 포함된 환경
  • 여러 AMF 노드를 순차 갱신하는 동안 구버전과 수정판이 함께 동작하는 배포

가용성 설계는 패치를 대신하지 않습니다. AMF를 여러 대 운영하거나 프로세스 감시가 자동 재시작을 수행해도, 같은 입력이 반복되면 재시작 루프와 세션 재처리 부담이 이어질 수 있습니다. 네트워크 접근 제어는 서비스 기반 인터페이스에 불필요한 주체가 접근하지 못하도록 줄이는 보완책이지만, 정상 권한을 가진 네트워크 기능에서 전달되는 비정상 구조까지 안전하게 처리하도록 만드는 수정과는 역할이 다릅니다.

수정판 적용

공식 수정 경계는 Open5GS 2.8.0입니다. 이 릴리스 기록에는 AMF 메모리 오버플로 수정이 포함돼 있으며, 2.7.7 이후의 변경 전체가 들어갑니다. 운영자는 보안 수정 한 줄만 보고 바이너리를 교체하기보다 2.8.0의 프로토콜 정의와 여러 네트워크 기능 변경을 함께 검토해야 합니다. 스테이징에서 구성 파일, 데이터베이스 스키마, 인접 네트워크 기능과의 호환성을 확인한 뒤 AMF 인스턴스를 순차적으로 교체하는 방식이 적합합니다.

수정 여부는 관리 화면의 버전 문자열 하나만으로 판정하지 않은 편이 안전합니다. 컨테이너 환경에서는 새 이미지를 만들었더라도 기존 태그가 노드 캐시에 남거나 배포 선언이 이전 다이제스트를 가리킬 수 있고, 소스 빌드 환경에서는 패키지 버전과 실제 포함 커밋이 어긋날 수 있습니다. 배포 전에는 이미지 다이제스트와 실행 바이너리의 빌드 정보를 기록하고, 교체 뒤 각 AMF 인스턴스에서 같은 값을 다시 수집해 비교합니다. 로드밸런서와 서비스 디스커버리에서 구버전 인스턴스가 빠졌는지도 확인해야 합니다. 대기 노드와 재해복구 이미지까지 같은 수정 수준으로 맞춰야 장애 전환 때 취약 코드가 다시 활성화되는 상황을 피할 수 있습니다.

Open5GS AMF 업데이트 적용과 단말 등록·N1-N2 메시지 검증 흐름
배포 버전 확인부터 등록·메시지·관측 검증까지의 연속 흐름
  1. 운영·대기·재해복구 환경의 모든 AMF 인스턴스와 이미지에서 실제 Open5GS 버전을 확인합니다.
  2. 2.8.0 릴리스의 AMF 수정과 함께 적용되는 프로토콜·구성 변경을 스테이징에서 검토합니다.
  3. 공식 수정판으로 새 바이너리 또는 이미지를 만들고 무결성과 배포 출처를 확인합니다.
  4. AMF를 재기동한 뒤 NRF 등록, SBI 연결, gNB 연결과 상태 확인 항목이 정상인지 점검합니다.
  5. 시험 단말의 5G 등록과 이동성 절차를 수행해 NAS·NGAP 제어 흐름이 정상 완료되는지 확인합니다.
  6. N1-N2 메시지 전송의 정상 시나리오를 시험하고 AMF 오류, 비정상 종료, 재시작, 메모리 사용량을 관찰합니다.

업데이트 후 관측

배포 직후에는 AMF 프로세스 재시작 횟수, SBI 4xx·5xx 비율, N1-N2 전송 실패, UE 등록 성공률, 메모리 사용량을 같은 시간축에서 봅니다. 단일 지표만 보면 설정 변경과 보안 수정의 영향을 구분하기 어렵습니다. 예를 들어 등록 실패가 늘었지만 프로세스 재시작과 메모리 이상이 없다면 프로토콜 또는 인접 기능 호환성을 먼저 살펴보고, 특정 요청 뒤 메모리가 급증하거나 재시작이 발생하면 해당 입력 경로와 적용 바이너리를 우선 확인합니다.

순차 배포에서는 수정판 노드로만 시험 트래픽을 보내 정상 등록과 N1-N2 메시지 흐름을 확인한 뒤 전체 비중을 늘립니다. 롤백이 필요할 때도 취약 버전으로 무조건 되돌리기보다 이전 구성과 수정 바이너리의 조합을 먼저 검토합니다. 롤백 이미지가 2.7.x라면 다시 취약 범위에 들어가므로, 장애 원인을 구성·프로토콜·빌드로 나눠 조사하고 공식 수정 경계를 유지하는 대안을 준비해야 합니다.

이번 두 취약점은 5G 코어의 제어면에서 구조화된 입력을 처리하는 경계가 곧 가용성과 메모리 안전성의 경계라는 점을 보여 줍니다. 외부 인터넷 공개 여부만으로 우선순위를 낮추기보다, 어떤 네트워크 기능이 AMF의 Namf 인터페이스에 요청을 보내는지와 취약 코드가 실제 배포에 포함됐는지를 기준으로 판단해야 합니다. 2.8.0 적용, 등록·N1-N2 정상 시험, 재시작·메모리 관측을 한 묶음으로 완료하는 것이 대응의 마무리입니다.

확인한 출처

  1. CVE-2026-82587 RecordCVE Program · 공식 자료
  2. CVE-2026-82589 RecordCVE Program · 공식 자료
  3. Open5GS v2.8.0 Release-19Open5GS · 공식 자료

사실관계와 수치는 연결된 자료에서 다시 확인할 수 있습니다.

독자 의견

의견을 남겨주세요

0

아직 등록된 댓글이 없습니다.

개인정보·광고·외부 연락처는 입력하지 마세요.