[단독방어] 분석 — CVE-2023-28531
CVE-2023-28531 allows unrestricted smart‑card keys added by ssh‑add to be forwarded via ssh‑agent, so immediate disabling of agent forwarding is the top mitigation.
📋 요약
- 심각도 critical · CVSS 9.8 · EPSS 0.02267 · 악용난이도 moderate
🔍 공격 기법
ssh-add이 스마트카드 기반 키를 ssh-agent에 추가할 때 목적지 제약(예: 특정 호스트) 검증을 생략한다. 공격자는 정상 사용자의 세션에서 ssh‑add을 실행해 에이전트에 키를 심어 놓고, 이후 SSH agent forwarding 또는 로컬 에이전트를 통해 무제한으로 다른 시스템에 인증할 수 있다. 이 과정은 네트워크 접근만 있으면 추가적인 사용자 입력 없이 자동화될 수 있다.
악용 가능성: 해당 취약점은 CVSS 벡터 AV:N/AC:L/PR:N/UI:N 로 평가되므로, 네트워크를 통한 원격 공격이 가능하고 복잡한 사전 준비가 필요하지 않으며 인증 없이 바로 이용할 수 있습니다. ssh‑add 명령을 실행하는 클라이언트가 스마트카드 키를 ssh‑agent에 추가할 때, 목적지 제약 조건이 적용되지 않아 중간 홉(다중 SSH 연결)에서도 동일한 키가 재사용될 위험이 존재합니다. 공격자는 취약 버전(OpenSSH 8.9 ~ 9.2)이 실행 중인 서버에 접근만 하면, 악성 ssh‑add 호출을 삽입하거나 자동화된 스크립트로 트리거하여 인증 우회가 가능합니다. EPSS 0.02267 은 현재 관측된 실제 악용 빈도가 낮지만, 여전히 존재하는 공격 경로와 잠재적 피해 규모를 고려하면 완전히 무시할 수 없는 위협임을 의미합니다. KEV 목록에 등재되지 않은 점은 아직 대규모 공격이 보고되지 않았다는 신호이며, 이는 취약점의 난이도가 낮고 자동화가 용이함에도 불구하고 현재는 제한된 타깃에 국한되어 있음을 반영합니다. 주요 공격 표면은 네트워크를 통해 노출되는 SSH 서비스(기본 포트 22)와 ssh‑add 명령이 허용되는 환경 변수·인자이며, 스마트카드 기능을 활성화한 모든 호스트가 대상이 됩니다.
💥 영향 분석
- 공격자가 에이전트에 삽입된 스마트카드 키를 이용해 다중 호스트 간 무단 이동(lateral movement) 및 권한 상승을 수행한다.
- 키가 “무제한”으로 로드되므로, 원격 서버에서 해당 키로 인증할 때마다 동일한 제약이 적용되지 않아 전역적인 SSH 접근 권한이 부여된다.
- 스마트카드 자체는 물리적 보호를 받지만, 에이전트에 저장된 키가 탈취되면 실제 카드 없이도 인증이 가능해진다.
🔗 관련 취약점·체이닝
추정: 동일 계열의 “키 제약 누락” 문제(CWE‑284: Improper Access Control)와 “SSH agent forwarding 남용”(CWE‑425: Direct Request Forgery)이 결합될 경우, 공격자는 탈취된 에이전트 키를 이용해 내부망에 추가 침투하거나 기존 권한을 확대할 수 있다.
🔎 탐지
-
로그 지표
/var/log/auth.log또는 시스템 저널에서ssh-add실행 기록:pam_unix(sshd:session): session opened for user <user> by (uid=0)뒤에ssh-add명령어와 인자(-s,-t)가 남음.sshd로그에Accepted publickey이후 바로Agent forwarded가 기록되는 경우, 특히 스마트카드 키(PKCS#11)가 포함된 세션을 추적한다.
-
SIEM 탐지 규칙 예시 (예: Splunk/Elastic)
text1source="/var/log/auth.log"2| regex _raw "ssh-add.*(--smartcard|pkcs11)"3| stats count by host, user, _time4| where count > 3 AND _time - relative_time(_time, "-5m") < 300bash1index=system sourcetype=sshd2"Agent forwarding" AND ("PKCS#11" OR "smartcard")3| stats dc(user) as distinct_users by host, _time4| where distinct_users > 1 -
오탐 튜닝
- 정상적인 자동화 스크립트가
ssh-add를 주기적으로 실행하는 경우, 위 규칙의 임계값을 “5분 내 3회 초과”에서 “10분 내 5회 초과” 등으로 상향한다. - 특정 관리 계정에 한해 허용된 스마트카드 사용 정책이 있다면,
user필터를 이용해 해당 계정을 whitelist에 추가한다.
- 정상적인 자동화 스크립트가
🛡️ 완화 방안
-
즉시(긴급 차단) – SSH 에이전트 포워딩 전역 비활성화
- 설정:
/etc/ssh/sshd_config→AllowAgentForwarding no적용 후 서비스 재시작. - 구현 난이도: ★☆☆ (단일 파일 수정)
- 운영 영향: 기존에 에이전트 포워딩을 활용하던 워크플로우가 중단되지만, 대부분의 서비스는 정상 동작.
- 검증 방법:
ssh -A시도 시 “Agent forwarding disabled” 오류 확인.
- 설정:
-
단기(완화) – 스마트카드 키 로드 제한 및 감시 강화
sshd_config에PubkeyAcceptedKeyTypes혹은AuthorizedPrincipalsFile을 사용해 허용된 키 유형을 명시하고,PKCS11Provider옵션을 비활성화(PKCS11Provider none).- sudoers에서
ssh-add실행을 제한하거나 특정 그룹에게만 허용. - 구현 난이도: ★★☆ (구성 파일 변경 및 정책 적용)
- 운영 영향: 스마트카드 기반 인증을 사용하는 일부 사용자는 별도 인증 방법 전환 필요.
- 검증 방법:
ssh-add -s실행 시 “Permission denied” 또는 “PKCS11Provider not configured” 로그 확인.
-
근본(해결) – OpenSSH 9.3 이상으로 업그레이드 및 패치 적용
- 최신 패키지(
openssh-9.3p1이상) 설치 후,ssh-add동작이 목적지 제약을 검증하도록 업데이트된 바이너리를 사용한다. - 구현 난이도: ★★★ (배포 자동화 혹은 수동 업그레이드 필요)
- 운영 영향: 서비스 중단 최소화(롤링 재시작 권장).
- 검증 방법: 버전 확인(
ssh -V) 및 취약점 테스트 스크립트(공식 테스트 벡터) 실행 결과 “no vulnerable behavior”.
- 최신 패키지(
-
잔여 리스크 – 패치 전까지는 에이전트 포워딩 차단과 스마트카드 로드 제한만으로 대부분의 공격 경로를 차단할 수 있지만, 로컬에서 직접
ssh-agent에 키가 삽입되는 경우(예: 물리적 접근)에는 여전히 위험이 남는다. 이러한 시나리오에 대비해 정기적인 키 회전 및 스마트카드 사용 로그 감사를 수행한다. -
인시던트 대응 플레이북
- 알림 발생 → 해당 호스트와 사용자 확인.
/var/log/auth.log에서ssh-add실행 시점과Agent forwarded로그 연계 여부 조사.- 에이전트에 로드된 키 목록(
ssh-add -L)을 검사하고, 비정상적인 키가 있으면 즉시ssh-agent종료 및 재시작. - 관련 사용자 계정을 일시 중지하고, 스마트카
⚖️ 위험도 / 우선순위
- 조치: scheduled (이번 주 내)
- 근거: CVSS=9.8 · non-KEV · EPSS=0.02267 · exploit=moderate · in_scope=None