
CVE-2025-37899 기술 분석: Linux 커널의 ksmbd SMB 모듈에서 원격 코드 실행을 가능하게 하는 use-after-free 취약점. 공격 벡터, 영향 평가 및 패치 지침을 포함합니다.
Linux 커널의 ksmbd 모듈에서 use-after-free 유형의 취약점이 발견되었습니다. 이 모듈은 네트워크 파일 공유를 위한 SMB(Server Message Block) 프로토콜 구현을 담당합니다. CVE-2025-37899로 식별된 이 취약점은 상승된 권한으로 원격 코드 실행을 허용할 수 있습니다.
이 발견은 연구원 Sean Heelan이 OpenAI의 o3 모델을 사용하여 이루어졌으며, 복잡한 취약점 식별에 있어 인공지능의 잠재력을 입증합니다. 이 취약점은 SMB2/3의 logoff 명령 처리에 존재하며 특정 동시성 조건에서 악용될 수 있습니다.
use-after-free 취약점은 logoff 명령을 처리하는 동안 스레드가 sess->user 객체와 연결된 메모리를 해제할 때 발생합니다. 다른 스레드가 이 해제된 객체에 접근하려고 하면 경쟁 조건(race condition)이 발생하여 메모리 손상과 잠재적으로 임의 코드 실행으로 이어질 수 있습니다.
취약한 코드는 ksmbd 모듈 내부의 함수에 있습니다. 객체에 대한 접근에 적절한 동기화가 이루어지지 않아 메모리가 다른 스레드에 의해 여전히 사용 중일 때 해제될 수 있습니다.
smb2_session_logoffsess->user// Ejemplo simplificado del código vulnerable
void smb2_session_logoff(struct ksmbd_work *work) {
struct smb_session *sess = work->session;
if (sess->user) {
ksmbd_free_user(sess->user); // Liberación de la memoria
sess->user = NULL;
}
}
// Otro hilo podría acceder a sess->user aquí, después de la liberación
원격 공격자는 sess->user 객체에 대한 접근에서 경쟁 조건을 만들도록 설계된 일련의 SMB2/3 명령을 전송하여 이 취약점을 악용할 수 있습니다. 이는 여러 SMB 연결을 설정하고 객체에 대한 동시 접근과 일치하도록 세션 종료를 조작하여 달성할 수 있습니다.
이 취약점의 성공적인 악용은 공격자가 다음을 수행할 수 있게 합니다:
패치 Linux 배포판에서 제공하는 보안 패치를 신속히 적용하는 것이 좋습니다. 주요 배포판들은 이미 업데이트 배포를 준비하고 있습니다.
// Después (arreglado)
void smb2_session_logoff(struct ksmbd_work *work) {
struct smb_session *sess = work->session;
spin_lock(&sess->user_lock); // Lock para proteger el acceso concurrente
if (sess->user) {
ksmbd_free_user(sess->user);
sess->user = NULL;
}
spin_unlock(&sess->user_lock); // Unlock después de la operación
}
그리고 sess->user에 접근하는 함수에서도 보호가 필요합니다:
// Ejemplo de acceso seguro en otra función
void smb2_check_user_session(struct smb_session *sess) {
spin_lock(&sess->user_lock);
if (sess->user) {
// Acceso seguro a sess->user
// ...
}
spin_unlock(&sess->user_lock);
}
패치를 즉시 적용할 수 없는 경우 다음을 권장합니다:
필요하지 않은 경우 ksmbd 모듈을 비활성화합니다. 방화벽을 통해 SMB 포트(445)에 대한 접근을 제한합니다. SMB 트래픽 모니터링 및 이상 징후 탐지와 같은 추가 보안 조치를 구현합니다. 참고 자료 CVE-2025-37899: CVE 링크 (사용 가능한 경우) 발견 공지: 원본 기사 또는 게시물 링크 Linux 커널 저장소: 영향을 받는 소스 코드 링크
이 취약점을 발견한 Sean Heelan과 이 취약점의 완화에 협력해 주신 사이버 보안 커뮤니티에 감사드립니다.