그들은 Linux 커널에서 ksmbd의 취약점을 감지했습니다.

취약점

이러한 결함을 악용할 경우 공격자가 민감한 정보에 무단으로 액세스하거나 일반적으로 문제를 일으킬 수 있습니다.

라는 정보가 최근 공개되었습니다. Linux 커널 취약점이 발견되었습니다. CVSS 점수 10 SMB 서버에서, 인증되지 않은 사용자에게 원격으로 코드를 실행할 수 있는 기능을 제공합니다.

발견된 버그는 원격 공격자가 영향을 받는 설치에서 임의의 코드를 실행할 수 있도록 합니다. 이 취약점을 악용하기 위해 인증이 필요하지는 않지만 ksmbd가 활성화된 시스템만 취약합니다.

특정 결함은 SMB2_TREE_DISCONNECT 명령 처리에 존재합니다. 문제는 개체에 대한 작업을 수행하기 전에 개체가 존재하는지 확인하지 않은 결과입니다. 공격자는 이 취약점을 악용하여 커널 컨텍스트에서 코드를 실행할 수 있습니다.

취약점 세부 정보
이 취약점을 통해 원격 공격자는 영향을 받는 Linux 커널 설치에서 임의 코드를 실행할 수 있습니다. 이 취약점을 악용하기 위해 인증이 필요하지는 않지만 ksmbd가 활성화된 시스템만 취약합니다.

특정 결함은 SMB2_TREE_DISCONNECT 명령 처리에 존재합니다. 문제는 개체에 대한 작업을 수행하기 전에 개체의 존재에 대한 유효성 검사가 부족하여 발생합니다. 공격자는 이 취약점을 악용하여 커널 컨텍스트에서 코드를 실행할 수 있습니다.

SMB 요청 유형에 따라 각각의 새 스레드가 사용자 공간(ksmbd.mountd)에 명령을 전달하기로 결정할 수 있습니다. 현재 DCE/RPC 명령은 사용자 공간에서 처리하는 것으로 식별됩니다. Linux 커널을 더 잘 사용하기 위해 명령을 작업 항목으로 취급하고 ksmbd -io kworker 스레드 핸들러에서 실행하기로 결정했습니다.

이렇게 하면 부하가 증가하면 커널이 추가 작업자 스레드 시작을 처리하고 그 반대의 경우 부하가 감소하면 추가 작업자 스레드를 종료하기 때문에 관리자가 다중화할 수 있습니다.

서버 데몬이 시작되면 부팅 시 포크 스레드(ksmbd/인터페이스 이름)를 시작하고 전용 포트 445를 열어 SMB 요청을 수신합니다. 새 클라이언트가 요청할 때마다 포크 스레드는 클라이언트의 연결을 수락하고 클라이언트와 서버 간의 전용 통신 채널을 위한 새 스레드를 만듭니다. 이를 통해 클라이언트의 SMB 요청(명령)을 병렬로 처리하고 새 클라이언트가 새 연결을 설정할 수 있습니다.

ksmbd는 일부 사용자 사이에서 위험 신호를 제기했습니다. 작년에 합병을 논의한 사람. 자체 버전의 Samba를 제공하는 독일 컴퓨터 회사인 SerNet은 블로그 게시물에서 ksmbd가 훌륭하지만 약간 미숙해 보인다고 말했습니다. 또한 SerNet의 Samba+ 팀은 블로그 게시물에서 SMB 서버를 커널 공간에 추가하는 것의 가치는 "가용한 것에서 성능의 마지막 비트를 짜내는" 위험을 감수할 가치가 없을 수도 있다고 밝혔습니다.

다행스럽게도 보안 연구원인 Shir Tamari가 Twitter에서 설명한 것처럼 삼성의 "실험용" ksmbd 모듈을 실행하지 않고 Samba를 유지했다면 완벽하게 안전합니다. “ksmbd는 새 기능입니다. 대부분의 사용자는 여전히 Samba를 사용하며 영향을 받지 않습니다. 기본적으로 ksmbd로 SMB 서버를 실행하지 않는 경우 주말을 즐기십시오." Tamari가 트윗했습니다.

제로데이 이니셔티브에 따르면, ksmbd 취약점을 드러낸 use-after-free 결함은 SMB2_TREE_DISCONNECT 명령 처리에 존재합니다. ZDI에 따르면 이 문제는 ksmbd가 개체에 대한 작업을 수행하기 전에 개체의 존재를 확인하지 않기 때문에 발생합니다.

ksmbd를 사용하는 경우 Samba로 전환하는 것 외에 해결 방법이 있습니다. 5.15.61월 이후에 출시된 Linux 커널 버전 2로 업그레이드하는 것입니다. 이 커널 업데이트는 또한 ksmbd의 몇 가지 다른 문제를 수정합니다: 패치 노트에 따르면 잘못된 요청이 메시지를 보내지 않도록 허용할 수 있는 SMB2_TREE_CONNECT에 대한 범위를 벗어난 읽기 및 잘못된 해제를 유발하는 smbXNUMX_handle_negotiate의 메모리 누수. 메모리.

마침내 당신이 있다면 그것에 대해 더 알고 싶어, 당신은 세부 사항을 확인할 수 있습니다 다음 링크에서.


선호하는 소스로 추가