[단독공격] 분석 — CVE-2023-51384
CVE-2023-51384 allows a local attacker to bypass destination constraints on PKCS#11 keys added to ssh-agent, enabling unauthorized use of additional private keys; update OpenSSH ≥ 9.6 or monitor agent activity as immediate mitigation.
📋 요약
- 심각도 medium · CVSS 5.5 · EPSS 0.00426 · 악용난이도 hard
🔍 공격 기법
-
트리거 조건: 로컬 사용자(또는 해당 사용자를 가장한 프로세스)가
ssh-add -s <pkcs11.so>등으로 PKCS#11 모듈을 ssh‑agent에 추가할 때, 모듈이 복수의 프라이빗 키를 반환하면 첫 번째 키에만 목적지 제약(-c,-t등)이 적용된다. -
공격 표면:
- 노출 엔드포인트 → UNIX domain socket
$SSH_AUTH_SOCK(ssh‑agent) - 파라미터 →
ssh-add명령의 PKCS#11 모듈 경로、제한 옵션(destination constraints) - 함수 → OpenSSH
ssh-agent.c내부process_add_identity로직에서 제약 적용 루프가 첫 키에만 한정됨
- 노출 엔드포인트 → UNIX domain socket
-
단계별 흐름
- 정찰 –
ssh-add -L등으로 현재 에이전트에 로드된 키 목록을 확인하고, PKCS#11 토큰이 다중 키를 제공한다는 점을 파악한다. - 초기 접근 – 사용자 계정을 탈취하거나, 로컬 권한이 있는 프로세스로
ssh-add -s실행 가능하도록 한다(프리시전 권한 PR:L). - 실행·권한 획득 – 악의적인 PKCS#11 모듈을 준비하고, 첫 번째 정상 키와 함께 두 번째에 공격자 제어키를 삽입한다.
ssh-add -s호출 시 제약은 첫 키에만 적용되고, 두 번째 키는 무제한으로 에이전트에 저장된다. - 지속 – 에이전트가 재시작될 때까지(또는
SSH_AUTH_SOCK유지되는 한) 악성 키가 남아 있어 지속적인 인증 우회가 가능하다. - 영향 – 제한된 호스트·명령에 대한 제약을 회피하고, 임의의 원격 서버에 무제한 SSH 연결을 수행한다(예:
ssh -A user@target).
- 정찰 –
-
CVSS 벡터와 실제 조건 매핑
- AV:L → 공격은 로컬 ssh‑agent 소켓에 국한됨.
- AC:L → PKCS#11 모듈 로드라는 단순 명령만 필요.
- PR:L → 로컬 사용자 권한이면 충분(프리시전).
- UI:N → 사용자 상호작용 없이 자동화 가능.
악용 가능성: 1. 이 취약점은 로컬 환경에서 ssh‑agent에 접근할 수 있는 사용자가 PKCS#11 토큰을 통해 키를 추가할 때만 발생합니다.
2
💥 영향 분석
- 인증 우회 – 목적지 제약이 적용되지 않은 키를 이용해 강제 명령, 포트 제한, 타임아웃 등을 무시하고 임의 SSH 세션을 개설한다.
- 권한 상승 → 에이전트 포워딩(
ForwardAgent)이 활성화된 경우, 침투된 호스트에서 다른 내부 서버로 인증 정보를 전파할 수 있다. - 세션 하이재킹 – 무제한 키가 에이전트에 남아 있어 공격자는 언제든지 해당 키를 사용해 기존 세션을 재생성하거나 새로운 연결을 만들 수 있다.
🔗 관련 취약점·체이닝
- 추정: CWE‑284 (Improper Access Control) – 제약 적용 로직 오류로 인해 권한이 부당하게 확대된다.
- 추정: CWE‑269 (Improper Privilege Management) – 낮은 권한(PR:L) 사용자가 시스템 전체 인증 메커니즘을 조작한다.
- 패턴 → “제약 미적용 → 인증 우회 → 내부 네트워크 이동”. 이 결함만으로도 공격자는 SSH 에이전트를 악용해 다른 취약점(예: 약한 비밀번호, 공개키 무시)과 연계할 수 있다.
🔎 탐지
auditd또는syslog에서ssh-add -s실행 시 execve 이벤트와 전달된 PKCS#11 모듈 경로를 기록한다.- 에이전트에 로드된 키 개수와 제약 옵션(
-c,-t) 사이의 불일치를 감시한다(예:ssh-add -L출력 vsssh-add -l제약 카운트). - 비정상적인 agent forwarding 사용과 동시에 새로운 공개키가 에이전트에 추가되는 경우 알림을 생성한다.
🛡️ 완화 방안
- 즉시 조치: OpenSSH 9.6 이상으로 업그레이드하거나, 패치를 적용한다.
- 운영 제한: PKCS#11 모듈 사용을 필요 최소한으로 제한하고,
ssh-add -s실행 권한을 관리된 사용자 그룹에만 부여한다. - 모니터링 강화: 앞서 기술한 auditd 규칙 및 키‑제약 일치 검사 스크립트를 배포해 실시간 탐지를 활성화한다.
- 장기 대책: 시스템 전반에서 ssh‑agent 포워딩을 비활성화하고, 필요 시
SSH_AUTH_SOCK파일 권한을 강화하여 로컬 공격 표면을 최소화한다.
⚖️ 위험도 / 우선순위
- 조치: monitor (모니터링)
- 근거: CVSS=5.5 · non-KEV · EPSS=0.00426 · exploit=hard · in_scope=None