[공격] 분석 — CVE-2023-51384
CVE-2023-51384 lets a local unprivileged user add PKCS#11 keys that bypass destination‑constraints in ssh‑agent; upgrade OpenSSH ≥9.6 and restrict pkcs11‑helper execution to mitigate.
📋 요약
- 심각도 medium · CVSS 5.5 · EPSS 0.00426 · 악용난이도 hard
🔍 공격 기법
- 공격 표면:
ssh-agent에 PKCS#11 토큰을 삽입하고ssh-add -s <pkcs11.so>로 키를 등록하는 로컬 인터페이스. - 트리거 조건: PKCS#11 모듈이 여러 개의 프라이빗키를 반환할 때, 호출자가 첫 번째 키에만 목적지 제약(
constraints)을 지정하면 이후 키에는 적용되지 않음. - 단계 흐름
- 정찰 – 대상 시스템이 OpenSSH 8.9‑9.6 중 하나이며
ssh-agent가 실행 중인지 확인 (ps,env | grep SSH_AUTH_SOCK). - 초기 접근 – 로컬 사용자 권한을 획득하거나 물리적/가상 스마트카드(악성 PKCS#11 토큰)를 시스템에 연결한다. (
PR:L조건 충족). - 키 추가 –
ssh-add -s malicious.so로 토큰을 등록하고, 첫 번째 키에 임의 목적지 제약(constraint="host@example.com")만 지정한다. - 제한 우회 – 토큰이 반환하는 두 번째·이후 키는 제약이 적용되지 않아
ssh-agent를 통해 모든 SSH 서버에 인증 가능 (C:H). - 활용 – 제한 없는 키로 원격 호스트에 무단 로그인, 파일 전송, 명령 실행 등 수행한다.
- 정찰 – 대상 시스템이 OpenSSH 8.9‑9.6 중 하나이며
- CVSS 연결: 로컬 공격(
AV:L), 낮은 난이도(AC:L), 최소 권한 필요(PR:L), 사용자 상호작용 없음(UI:N).
악용 가능성: 이 취약점은 로컬(AV:L) 환경에서만 악용 가능하므로 원격 공격자는 먼저 시스템에 물리적 혹은 가상적으로 접근해야 합니다. 공격자는 낮은 난이도(AC:L)와 제한된 권한(PR:L)을 요구하기 때문에, 이미 로컬 계정이나 컨테이너 내부에 존재하는 사용자가 쉽게 시도할 수 있습니다. UI:N으로 사용자 상호작용이 필요 없으므로 자동화 스크립트로도 실행 가능하지만, 사전 조건인 ssh‑agent가 실행 중이고 PKCS#11 토큰이 연결된 상태여야 합니다. EPSS 0.00426은 현재 실제 악용 사례가 매우 드물다는 것을 의미하고, KEV에 등재되지 않은 점은 공격자가 아직 이 경로를 표적 삼지 않았음을 반영합니다. 공격 표면은 ssh‑agent의 AddKeysToAgent 명령에서 전달되는 PKCS#
💥 영향 분석
- 기밀성(C): 제한 없는 프라이빗키가
ssh-agent에 남아 있어, 공격자는 임의의 SSH 서버에 인증할 수 있다. - 직접적인 권한 상승은 없지만, 무단 원격 접근을 통해 시스템 내 민감 데이터와 서비스에 간접적으로 접근 가능하다.
🔗 관련 취약점·체이닝
- 유형: 현재 CWE가 미분류이나 “키 관리 부적절”(CWE‑??? 추정) 패턴에 해당한다.
- 가능한 체인
- 로컬 권한 상승(CVE‑2022‑XXXX 등) →
ssh-agent접근 → 위 취약점 이용 → 무제한 SSH 인증 → 원격 명령 실행(RCE). - 다른 PKCS#11 관련 버그(예: 스마트카드 드라이버 오류)와 결합 시 토큰 삽입이 더욱 쉬워짐.
- 로컬 권한 상승(CVE‑2022‑XXXX 등) →
🔎 탐지
ssh-agent에 PKCS#11 모듈을 통한 키 추가 이벤트 로그(auditd,syslog) 감시 – 특히 동일 세션에서 다수의 키가 등록되는 경우.SSH_AUTH_SOCK사용 기록 분석: 비정상적인 에이전트 포워딩 시도 또는 원격 호스트에 대한 인증 시도가 급증하면 경고.- 시스템 콜 수준 (
open,ioctl)에서 PKCS#11 라이브러리 로드 감시; 의심스러운 파일 해시와 매칭.
🛡️ 완화 방안
- 패치 적용: OpenSSH 9.6 이상으로 업데이트 – 해당 버전에서 제약 적용 로직이 수정됨.
- 임시 방어:
export SSH_AGENT_DISABLE_PKCS11=1혹은/etc/ssh/ssh_config.d/disable_pkcs11.conf에PKCS11Provider none설정으로 PKCS#11 지원을 비활성화. - 키 관리 정책: 신뢰
⚖️ 위험도 / 우선순위
- 조치: monitor (모니터링)
- 근거: CVSS=5.5 · non-KEV · EPSS=0.00426 · exploit=hard · in_scope=None