OpenSSH 취약점 CVE-2024-6387: 임시 차단과 패치 적용

공정위 광고 문구 Ver 3.1
공정위 광고 문구 Ver 3.2(모바일 전용)

OpenSSH 취약점 CVE-2024-6387은 접속한 쪽이 120초 안에 로그인을 끝내지 않을 때 울리는 알람 신호를 파고듭니다. 알람을 처리하는 도중 메모리가 어긋나면 공격자가 심어 둔 코드가 root 권한으로 실행됩니다. 알람을 꺼서 급한 자리를 막고, 업데이트로 코드를 고친 뒤 되돌리는 순서로 정리했습니다.

2006년에 한 번 고쳐졌던 문제가 2020년 코드 정리 과정에서 되살아나 regreSSHion이라는 이름이 붙었습니다. 엔터프라이즈 리눅스 9 계열이 전부 대상이고, 패치는 2024년 7월에 나왔습니다. 지금 서버에 깔린 openssh가 그 갱신을 받았는지 확인하는 것으로 시작합니다.

1️⃣ OpenSSH 취약점

접속이 들어오면 sshd는 그 접속을 전담할 자식 프로세스를 하나 생성합니다. 로그인 인증은 그 안에서 진행되고, 접속한 쪽이 누구인지 아직 모르는 상태이므로 이 자식은 root 권한으로 돕니다.

자식은 태어날 때 알람을 하나 걸게 되는데 LoginGraceTime 기본값 120초입니다. 그 안에 로그인을 못 마치면 알람이 울리고 프로세스는 하던 일을 멈추고 정리로 넘어갑니다. 붙어만 놓고 아무것도 안 하는 연결이 쌓이지 않게 막는 장치입니다.

문제는 알람이 끼어드는 방식입니다. 시그널은 프로세스가 무슨 일을 하고 있든 그 자리에서 중단시키고 처리 함수로 점프 시킵니다. 하던 일이 메모리를 정리하는 중이었다면 그 정리가 반쪽 상태로 멈춥니다. 그런데 알람 처리 함수는 로그를 남기려고 syslog()를 부르고, 이 함수가 또 메모리를 씁니다. 반쯤 뜯긴 메모리 위에 새 작업이 올라갑니다.

공격자는 일부러 인증을 끌면서 알람이 울리는 순간에 프로세스가 메모리 작업 중이도록 접속 데이터를 조절합니다. 타이밍이 맞으면 심어 둔 코드가 root 권한으로 실행됩니다. 밀리초 단위라 수천에서 수만 번을 시도해야 한 번 걸리지만, 자동화하면 몇 시간 안에 뚫립니다.

이름이 regreSSHion인 것은 2006년에 고쳐진 문제(CVE-2006-5051)가 2020년 OpenSSH 8.5p1에서 코드를 손보다 방어 장치가 빠지면서 18년 만에 되살아났기 때문입니다.

CVE-2024-6387은 어디서 갈라지는가
정상 접속과 공격은 같은 길을 걷다가 한 지점에서 나뉘어집니다.
여기까지는 똑같습니다.
1SSH 포트로 접속이 들어옵니다.
2sshd가 그 접속을 전담할 자식 프로세스를 띄웁니다.아직 누구인지 모르므로 root 권한
3자식이 알람을 하나 겁니다.LoginGraceTime 120초
여기서 나뉘어집니다.
정상 접속
120초 안에 로그인을 마칩니다.
알람이 해제됩니다.
세션이 시작됩니다.알람은 울리지 않습니다.
아무 일도 없음
공격 시도
일부러 인증을 끝내지 않습니다.
120초가 지나 알람이 울립니다.시그널로 전달
하던 일이 그 자리에서 멈춥니다.메모리 정리가 반쪽 상태로 중단
알람 처리 함수가 syslog()를 부릅니다.반쯤 뜯긴 메모리 위에 새 작업
타이밍이 맞으면 심어 둔 코드가 실행됩니다.
root 권한 탈취
LoginGraceTime 0은 3번에서 알람을 아예 걸지 않습니다. 알람이 없으면 시그널이 없고, 시그널이 없으면 끼어드는 일도 없습니다. 오른쪽 길이 출발점부터 사라지는 셈입니다.

2️⃣ openssh 버전과 패치 적용

1. 현재 sshd 상태 확인

rpm -q openssh-server
openssh-server-8.7p1-38.el9.x86_64

설치된 openssh 버전을 확인합니다.

 ~]# rpm -q --changelog openssh-server | grep CVE-2024-6387
 ~]#

패치 기록에 이 취약점이 있는지 확인합니다. 아무것도 안 나오면 패치가 안 된 상태입니다. 다만 배포판이 openssh를 9.8p1 이상으로 통째로 올리면 이 문구가 기록에 남지 않으므로, 업데이트 뒤에는 버전으로 판단합니다.

 ~]# sshd -T | grep -E "logingracetime|^port"
port 22
logingracetime 120
 ~]#

sshd의 시간 제한 값을 확인합니다.

2. 임시 차단 설정 파일 만들기

 ~]# cat > /etc/ssh/sshd_config.d/10-regresshion-mitigation.conf <<'EOF'
# CVE-2024-6387(regreSSHion) 임시 완화 — 2026-09-11
# openssh 업데이트로 패치되면 이 파일을 지우고 reload 할 것
LoginGraceTime 0
EOF

기존 설정 파일은 건드리지 않고 파일을 하나 추가합니다. 설정 폴더(sshd_config.d)의 파일은 이름 순서대로 읽히고 먼저 나온 값이 이기기 때문에, 이름을 10-으로 시작해 제일 먼저 읽히게 합니다.

chmod 600 /etc/ssh/sshd_config.d/10-regresshion-mitigation.conf

퍼미션을 600으로 맞춥니다.

3. 문법 검사 → 적용 확인 → 반영

sshd -t
~]#

아무 출력이 없으면 정상입니다. 에러 메시지가 있을 경우 작업을 멈추고 다시 체크해야 합니다.

sshd -T | grep logingracetime
logingracetime 0

실제 적용된 값을 미리 체크합니다. ‘logingracetime 0’이 나옵니다.

systemctl reload sshd

리로드를 진행하며 현재의 세션은 끊기지 않습니다.

4. 새 창으로 접속 확인

기존의 창을 유지하면서, 새 창으로 접속 테스트를 합니다.

문제가 생길 경우

rm /etc/ssh/sshd_config.d/10-regresshion-mitigation.conf && sshd -t && systemctl reload sshd

다시 되돌리기를 진행합니다.

5. 나중에 운영체제 업데이트를 한 뒤

rpm -q openssh-server
openssh-server-8.7p1-38.el9.x86_64

SSH 버전을 확인합니다. 9.8p1 이상으로 나오면 패치된 것입니다(이 취약점은 8.5p1~9.7p1). 그때 위의 되돌리기 명령으로 이 파일을 지우시면 됩니다.

3️⃣ 운영체제 업데이트

  • ↪️ Alma Linux 9.4 → 9.8

‘2️⃣ openssh 버전과 패치 적용’은 임시로 적용하는 것이므로, 운영체제를 업데이트하면 그때 정리해야 할 것이 하나 남습니다.

배포판 업데이트는 openssh 패키지를 새 버전으로 올리지만, 직접 만든 드롭인 파일은 건드리지 않습니다. sshd_config.d 안에 그대로 남아 LoginGraceTime 0이 계속 살아 있게 됩니다. 취약점이 고쳐진 뒤에도 시간 제한 없는 상태로 서버가 돌아간다는 뜻입니다.

그래서 업데이트를 마치면 rpm -q openssh-server로 버전이 9.8p1 이상인지 먼저 확인하고, 확인이 되면 위 되돌리기 명령으로 파일을 지웁니다. 이 순서를 지키면 시간 제한은 120초로 돌아오고 취약점은 코드 쪽에서 막힌 상태가 됩니다.

필요할 경우 Alma Linux 9.4에서 9.8로 업데이트를 진행할 수 있습니다.

ℹ️ 제휴 안내
본 사이트의 콘텐츠에는 제휴 링크가 포함되어 있습니다. 방문자가 이 링크를 통해 상품 또는 서비스를 구매하면 본 사이트는 판매처로부터 수수료를 지급받습니다. 이 과정에서 구매자가 지불하는 금액(이벤트 할인 시 금액이 내려갑니다↓)은 오르지 않습니다. 게시된 가격·할인·재고 정보는 작성 시점 기준이며 실제와 다를 수 있으므로, 구매 전 판매처에서 최종 확인하시기 바랍니다. 상품 선정과 평가는 자체 기준에 따라 작성되며, 수수료 지급 여부가 소개 순서나 평가 내용에 영향을 주지 않습니다.

유사한 게시물

  • |

    오라클 클라우드 ping 오류[VM 인스턴스]

    오라클 클라우드 VM 인스턴스에서 고정 IP 설정까지 진행했지만 ping을 입력해도 요청 시간 만료로 timeout 오류가 되면서 응답이 없는 오류가 계속 발생했습니다. 오라클 클라우드 ping 오류를 해결하는 방법은 다음과 같습니다. 오라클 클라우드 ping 오류 해결하기 방화벽 설정에서 VCN 설정을 진행해 줘야 하는 것으로 확인 되었습니다. [네트워킹] > [가상 클라우드 네트워크]로 접속합니다. ▼ 생성했던 VCN의…

  • APM 설치 후 ‘사이트에 연결할 수 없음’

    오라클 클라우드 무료 인스턴스 ‘록키 리눅스’에 APM을 설치하고 난 후에 ‘사이트에 연결할 수 없음‘ 에러와 함께 ‘ERR_INVALID_RESPONSE’ 잘못 된 응답이라는 에러 메시지 화면을 확인했다. 도메인까지 연결한 후에 ping으로 해당 IP까지 향하는 것까지 확인했지만 오류가 확인된다. 사이트에 연결할 수 없음: IP 체크 도메인 주소로 오류가 뜨는 것을 확인해서 IP로 접속을 시도했다. 뜨는 화면이 조금…

  • |

    MariaDB: Slow Query Log 설정

    MariaDB에서 Slow Query Log 설정을 할 경우 Mariadb 10.2 버전부터 etc/my.cnf.d/ 폴더안에 mysql-clients.cnf 및 server.cnf 파일로 나뉘게 되었습니다. mysql 이라도 폴더를 확인한 후에 설정 내역에 따라 확인하면 되겠습니다. 먼저 etc/my.cnf.d/server.cnf 파일에 적용하는 방법에 대해 알아 보겠습니다. ※ Slow Query Slow Query는 수행하는 데 오랜 시간이 걸리는 쿼리입니다. 응답 시간이 길어질 경우 서비스의 품질이…

  • APM 설치 후 아파치 403 에러(403 Forbidden)

    리눅스에서 APM을 설치한 후에 아파치 403 에러가 뜰 경우 SELinux가 켜져 있는지 먼저 확인할 수 있습니다. 1. APM 설치 후 아파치 403 에러 발생 시 퍼미션 확인 SELinux 설정을 끈 이후에도 동일한 오류가 발생한다면 퍼미션(권한) 문제이기 때문에 폴더의 소유권과 권한을 확인해 주어야 합니다. 에러 로그를 확인 했을 때 위와 같은 오류가 확인되며, 퍼미션을…

  • SELinux 개념과 보안 설정

    SELinux(Security-Enhanced Linux)란 보안을 강화하기 위해 개발된 리눅스 커널의 보안 기능 중 하나입니다. 셀리눅스는 컴퓨터 시스템의 보안을 강화하기 위해 NSA(National Security Agency:미국 국가안보국)와 레드햇(Red Hat) 등의 기업과 개발자들이 협력하여 개발했습니다. zero-day 공격 및 buffer overflow 등 어플리케이션 취약점으로 인한 해킹을 방지해 주는 핵심 구성요소에 속하지만APM 설치 후 사용하는데 오류가 발생하는 등 불편함이 있습니다. 잘…

  • |

    ORA-12514: 오라클 19c DB 접속 오류

    Oracle 19c를 윈도우에 설치 후 [ORA-12514: TNS:리스너가 현재 접속 기술자에 요청된 서비스를 알지 못함]이란 오류가 발생했습니다. ORA-12514 오류 > 파일 수정 여러가지 오류 확인 중 [lisener.ora] 파일과 [tnsnames.ora] 2개의 파일 수정을 먼저 진행했습니다. 2개 파일은 각각 셋업 시 설정한 설치 경로가 다를 수 있으며, 저의 경우 C:\Oracle\WINDOWS.X64_193000_db_home\network\admin\ 폴더 안에서 파일 확인 후 작업을…

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

인간임을 증명하세요: 0   +   5   =