SK쉴더스 로고
ADT캡스캡스홈
SK쉴더스

AnyDesk Linux 사전 인증 힙 오버플로우 RCE 취약점 (CVE-2026-109390)

EQST Now | 2026.10.13

NOW Briefing

Brief 1 AnyDesk Linux 8.0.0~8.0.2의 세션 프로토콜에서 사전 인증 단계의 힙 버퍼 오버플로우(CVE-2026-109390)가 확인됐습니다.
Brief 2 TCP 7070이 열린 호스트는 인증과 사용자 승인 없이 최상위 관리자 권한으로 코드가 실행될 수 있고, 실제로 동작하는 PoC가 공개됐습니다.
Brief 3 Linux 호스트의 AnyDesk를 8.0.3 이상으로 올리고, 업그레이드 전까지 외부에서 유입되는 TCP 7070 접근을 차단해야 합니다.

‍

AnyDesk Linux 사전 인증 힙 오버플로우 RCE 취약점 (CVE-2026-109390)

‍

■ 개요

‍

AnyDesk는 원격으로 다른 PC 화면을 조작해 지원 업무를 수행하는 원격 데스크톱 소프트웨어입니다. Linux 버전에서는 연결을 받는 서비스가 최상위 관리자 권한(root)으로 상주하면서 TCP 7070 포트에서 직접 연결을 대기합니다. 이 서비스에서 사전 인증(로그인·승인 이전) 단계의 힙 버퍼 오버플로우(동적 할당 메모리 영역을 경계 밖으로 덮어쓰는 취약점)가 확인됐습니다. CVE 레코드 기준 공격자는 인증 없이, 그리고 피해자가 원격 제어를 승인하지 않은 상태에서 임의 코드를 실행할 수 있습니다.

영향 범위는 AnyDesk 8.0.0부터 8.0.2까지이며, 루트 권한 명령 실행은 Linux 빌드에서 실증됐습니다. 공격 조건은 공격자가 대상 호스트의 TCP 7070에 직접 도달할 수 있는지로, 계정 정보나 사용자 조작은 필요하지 않습니다. 다만 공개된 PoC는 특정 8.0.2 Linux x86_64 빌드의 오프셋을 기준으로 작성돼 다른 빌드에서는 오프셋 수정이 필요합니다. 동작도 확률적이어서 힙에 특정 객체가 손상 대상 버퍼 옆에 배치돼야 하고, 배치가 맞지 않으면 명령 실행 대신 서비스가 비정상 종료됩니다. 실제 공격에 악용된 사례는 현재 공개 정보로는 확인되지 않았습니다.

보안 매체 보도 기준 패치는 2026년 6월 8.0.3으로 이미 배포됐지만, 같은 보도에서 벤더 변경 로그에는 "크래시를 유발할 수 있는 버그 수정" 수준으로만 기재되고 별도 보안 공지나 CVE가 붙지 않았습니다. 변경 로그만 본 운영 조직은 보안 패치임을 인지하지 못한 채 구버전을 유지했을 수 있습니다. 이후 2026년 10월 8일 연구자 측이 기술 분석과 실제로 동작하는 PoC를 공개했고, 10월 12일 CVE-2026-109390 레코드가 공개되며 CVSS v3.1 9.8이 부여됐습니다. 연구자 저장소 README는 벤더가 PoC 영상 공개 이후 8.0.2 빌드를 삭제했을 가능성을 추정으로 적었습니다. Linux 원격 지원 단말의 설치 버전과 7070 노출 범위를 먼저 확인해야 합니다.

‍

■ 요약

‍

항목 내용
CVE ID CVE-2026-109390 (세션 프로토콜 스트림 패킷 핸들러의 길이 검증 누락)
CVSS 점수 CVSS v3.1 9.8
취약점 유형 CWE-130(길이 파라미터 불일치 처리 오류), 힙 버퍼 오버플로우
영향/위험 • 인증·사용자 승인 없이 원격 코드 실행 가능
• 서비스가 루트로 동작해 호스트 전체 장악으로 이어질 수 있음
• 공격 실패 시 서비스 비정상 종료로 원격 지원 중단 가능
• 실제로 동작하는 PoC가 공개됐으나 특정 8.0.2 Linux x86_64 빌드 기준이며 힙 배치에 따라 확률적으로 성공
취약 버전 AnyDesk 8.0.0 ~ 8.0.2 (Linux에서 루트 코드 실행 실증)
패치 버전 AnyDesk 8.0.3 이상 (보안 매체 보도 기준 2026년 6월 배포, 별도 보안 공지 없음)

‍

■ 기술 분석

‍

근본 원인은 세션 프로토콜의 mode-5 스트림 패킷 핸들러(스트림 데이터 조각을 받아 객체로 재조립하는 처리부)가 원격이 선언한 payload 길이를 검증 전에 그대로 신뢰하는 데 있습니다. 연구자 공개 문서 기준, 핸들러는 선언된 길이에 16바이트 객체 헤더(객체 크기·종류 등을 담는 앞부분 메타데이터)를 더해 할당 크기를 계산합니다. 이 계산은 32비트 부호 없는 산술로 처리되고 오버플로우 검사가 없기 때문에, 공격자가 0xfffffff0을 선언 길이로 보내면 (uint32_t)(declared_len + 0x10)이 0으로 되돌아가는 정수 래핑이 발생합니다.

그 결과 실제로는 0~15바이트만 할당된 버퍼가 만들어지지만, 객체는 원래 선언된 거대한 논리 길이를 그대로 유지합니다. 이후 데이터가 채워지면서 할당 경계를 넘어선 쓰기가 일어나고, 인접한 힙 객체의 내용이 손상됩니다. 연구자 분석에 따르면 이 쓰기로 인접 객체의 가상 함수 테이블(vtable)과 스택 피벗용 값처럼 실행 흐름을 결정하는 필드가 덮어써집니다. 손상된 객체가 이후 처리될 때 덮어쓴 제어 데이터를 따라 실행 흐름이 공격자가 미리 배치한 체인으로 전환됩니다. 서비스가 루트로 동작하기 때문에 실행 결과도 루트 권한을 갖습니다.

AnyDesk는 클로즈드 소스 제품이라 취약 함수의 원본 코드나 역컴파일 결과는 공개되지 않았습니다. 확인한 공개 범위(연구자 저장소와 README, CVE 레코드, 보안 매체 보도)에서도 수정 전후를 비교할 수 있는 패치 diff는 식별되지 않았습니다. 따라서 패치 내용은 8.0.3에서 해당 취약점이 제거됐다는 벤더 릴리스 사실까지만 확인 가능하며, 길이 검증이 어떤 방식으로 추가됐는지는 공개 정보로 판단할 수 없습니다.

‍

■ PoC

‍

V12 Security 연구팀이 공개한 저장소에는 Python으로 작성된 PoC anypwn.py가 포함돼 있습니다. 기본 설정은 로컬 호스트의 7070 포트를 대상으로 하고, 실행에 성공하면 루트 권한으로 id 명령 결과를 /tmp/anypwn 파일에 남기도록 돼 있습니다. 코드는 릴레이 경유 연결이 아니라 직접 TCP 연결 경로만 다룹니다. 저장소는 기준 대상을 특정 8.0.2 Linux x86_64 빌드로 명시하고 다른 빌드에서는 오프셋 수정이 필요하다고 밝힙니다. 힙 배치에 의존하기 때문에 시도마다 결과가 달라집니다.

아래 코드는 공개 PoC 원문인 anypwn.py의 모듈 상단 상수 정의부 일부입니다. 코드는 수정하지 않고 그대로 옮겼습니다. 파일 전체는 참고 자료에 연결한 원문 링크에서 확인할 수 있습니다.

VICTIM_CLIENTS = 10
ROP_SENDS = 20
COMMAND = "id>/tmp/anypwn"
STAGE_WIDTH = 22

MODE5_TRIGGER_DECLARED_LEN = 0xFFFF_FFF0

MODE5_TRIGGER_DECLARED_LEN이 앞서 설명한 정수 래핑을 일으키는 선언 길이이고, COMMAND의 /tmp/anypwn은 이 코드가 그대로 실행됐을 때 호스트에 남는 흔적입니다.

나머지 상수를 보면 공격은 단발성 패킷 하나로 끝나지 않습니다. 피해자 측 연결을 다수 수립하고, 기존 코드 조각을 이어 붙여 실행 흐름을 바꾸는 기법(ROP) 산출물을 여러 번 반복 전송하므로 7070으로 향하는 비정상적인 연결·전송량이 탐지 단서가 됩니다.

⚠️ WARN

해당 PoC는 실패 시 AnyDesk 서비스를 비정상 종료시킵니다. 운영 중인 원격 지원 단말에서 직접 실행하지 말고 격리된 검증 환경에서만 확인해야 합니다.

‍

■ 탐지 및 점검

‍

• 패키지 관리자 조회(dpkg -l anydesk, rpm -q anydesk)로 Linux 호스트의 설치 버전을 확인하고 8.0.3 미만 버전(8.0.0~8.0.2)이 남아 있는지 점검합니다.

• 방화벽·보안 그룹·트래픽 흐름 기록(NetFlow) 로그에서 외부 대역이 TCP 7070으로 접속한 기록을 조회해 비인가 출처의 연결 시도를 확인합니다.

• 짧은 시간에 7070으로 반복 연결과 대량 스트림 전송이 발생했는지, 같은 구간에 AnyDesk 서비스의 비정상 종료·재시작 기록이 있는지 함께 확인합니다.

• /tmp/anypwn 파일 존재 여부를 점검하되, 파일명 하나로 침해를 확정하지 말고 위의 7070 접속 기록·서비스 크래시 기록과 상관분석합니다.

• AnyDesk 서비스 프로세스가 생성한 자식 프로세스(셸·스크립트 실행)와 루트 권한으로 나가는 예상 외 아웃바운드 연결을 점검합니다.

✅ CHECK

패키지로 설치하지 않고 단독 실행 파일 형태로 배포된 사본은 패키지 관리자 조회에 잡히지 않습니다.
자산 점검 시 파일 시스템 검색과 실행 중 프로세스 목록도 함께 확인해야 합니다.

‍

■ 대응 방안

‍

• Linux 호스트의 AnyDesk를 8.0.3 이상으로 업그레이드해야 합니다.

• 업그레이드를 완료하기 전까지 외부 구간에서 유입되는 TCP 7070 접근을 차단하고, 업무상 필요한 내부 출처만 허용합니다.

• 유지보수 일정 때문에 즉시 업그레이드가 어려운 단말은 AnyDesk 서비스를 중지하고 원격 지원이 필요한 시점에만 기동하도록 운영 절차를 조정합니다.

• 인터넷에 7070을 노출한 이력이 있는 호스트는 침해 가능성을 전제로 우선 조사 대상에 올려 서비스 크래시 기록과 루트 프로세스 생성 이력을 확인합니다.

• 침해 흔적이 확인된 호스트는 루트 권한 탈취를 전제로 해당 호스트에 저장된 자격증명과 세션 토큰을 폐기한 뒤 재설치합니다.

‍

[참고 자료]

• CVE-2026-109390 공식 레코드

• V12 Security 기술 분석 및 PoC 저장소 — AnyPwn

• PoC 원문 anypwn.py (커밋 b2b6b53)

• Cyber Security News — AnyDesk Linux 취약점 보도

• MDS테크 AnyDesk 공식 한국 총판 안내

  • #EQST_NOW
  • #취약점

관련 서비스

더 많은 보안 인사이트

SK쉴더스 유튜브 채널에서 확인하세요.

SK쉴더스 유튜브 채널에서 확인하세요.
보안 트렌드와 대응방법

매월 뉴스레터로 확인하세요.

매월 뉴스레터로 확인하세요.