원격 서비스 거부로 이어지는 Linux TCP 스택에서 발견 된 세 ​​가지 취약점

리눅스 충돌

최근에 Linux TCP 스택에서 몇 가지 중요한 취약점을 식별하는 뉴스를 발표했습니다. 그리고 FreeBSD는 공격자가 원격으로 커널 오류를 시작할 수 있습니다. 또는 특수하게 조작 된 TCP 패킷 (죽음의 패킷)을 처리하여 과도한 리소스 소비를 유발합니다.

문제는 데이터 블록의 최대 크기 핸들 오류로 인해 발생합니다. TCP 패킷 (MSS, 최대 세그먼트 크기) 및 선택적 연결 인식 (SACK, 선택적 TCP 인식)을위한 메커니즘.

선택적 인식이란 무엇입니까?

선택적 TCP 인식 (SACK) 데이터 수신자가 성공적으로 수락 된 모든 세그먼트에 대해 발신자에게 알릴 수있는 메커니즘입니다.

발신자가 누락 된 스트림 세그먼트를 재전송 할 수 있습니다. 그의 '잘 알려진'세트에서. TCP SACK가 비활성화 된 경우 전체 시퀀스를 재전송하려면 훨씬 더 많은 재전송 집합이 필요합니다.

Linux 커널에서 문제는 버전 4.4.182, 4.9.182, 4.14.127, 4.19.52 및 5.1.11에서 수정되었습니다. FreeBSD 용 솔루션은 패치로 제공됩니다.

Debian, RHEL, SUSE / openSUSE, ALT, Ubuntu, Fedora 및 Arch Linux 용 커널 패키지 업데이트가 출시되었습니다.

CVE-2019-11477 (SACK 패닉)

문제 2.6.29부터 Linux 커널에 나타나며 커널을 충돌시킬 수 있습니다. (패닉) 컨트롤러의 정수 오버플로로 인해 일련의 SACK 패킷을 보낼 때.

공격의 경우 TCP 연결에 대해 MSS 값을 48 바이트로 설정하는 것으로 충분합니다. 및 특정 방식으로 배열 된 SACK 패킷의 시퀀스를 전송하는 단계를 포함한다.

문제의 본질은 구조가 tcp_skb_cb (소켓 버퍼) 17 개의 조각을 저장하도록 설계되었습니다. ( "MAX_SKB_FRAGS (65536 / PAGE_SIZE + 1) => 17"정의).

패킷을 전송하는 과정에서 전송 큐에 배치되고 tcp_skb_cb는 전송에 사용되는 "tcp_gso_segs"및 "tcp_gso_size"필드는 물론 시퀀스 번호, 플래그와 같은 패킷에 대한 세부 정보를 저장합니다. 네트워크 카드 측에서 세그먼트를 처리하기 위해 컨트롤러 (TSO, 세그먼트 세그먼트 다운로드)에 대한 세그먼트 화 정보.

SACK가 활성화되고 드라이버가 TSO를 지원하는 경우 패킷 손실 또는 선택적 패킷 재전송이 필요한 경우 청크가 저장됩니다.

보호를위한 해결 방법으로 SACK 처리를 비활성화하거나 소규모 MSS와의 연결을 차단할 수 있습니다 (sysctl net.ipv4.tcp_mtu_probing을 0으로 설정 한 경우에만 작동하며 MSS가 낮 으면 일부 정상이 깨질 수 있음).

CVE-2019-11478 (SACK 속도 저하)

이 실패 SACK 메커니즘을 중단시킵니다. (4.15에서 Linux 커널을 사용하는 경우) 또는 과도한 리소스 소비.

이 문제는 재전송 큐 (TCP 재전송)를 조각화하는 데 사용할 수있는 특수하게 조작 된 SACK 패킷을 처리 할 때 발생합니다. 보호 솔루션은 이전 취약점과 유사합니다.

CVE-2019-5599 (SACK 속도 저하)

SACK 시퀀스를 처리 할 때 전송 된 패킷 맵의 조각화를 유발할 수 있습니다. 단일 TCP 연결 내에서 리소스 집약적 인 목록 조회 작업이 실행되도록합니다.

이 문제는 FreeBSD 12에서 RACK 패킷 손실 감지 메커니즘과 함께 나타납니다. 해결 방법으로 RACK 모듈을 비활성화 할 수 있습니다 (기본적으로로드되지 않고 sysctl net.inet.tcp.functions_default = freebsd를 지정하여 비활성화 됨).

CVE-2019-11479

이 결함으로 인해 공격자는 Linux 커널이 응답을 여러 TCP 세그먼트로 나눌 수 있습니다. 각각은 8 바이트의 데이터 만 포함하므로 트래픽이 크게 증가하고 CPU 부하가 증가하며 통신 채널이 막힐 수 있습니다.

또한 추가 리소스를 소비합니다. (프로세서 전원 및 네트워크 카드).

이 공격에는 공격자의 지속적인 노력이 필요하며 공격자가 트래픽 전송을 중지 한 직후 적중이 종료됩니다.

이 공격이 진행되는 동안 시스템은 감소 된 용량으로 실행되어 일부 사용자에게 서비스 거부가 발생합니다.

원격 사용자는 최대 세그먼트 크기를 설정하여이 문제를 트리거 할 수 있습니다. (MSS) TCP 연결의 최저 제한 (48 바이트)에서 특수하게 조작 된 SACK 패킷 시퀀스를 전송합니다.

해결 방법으로 MSS가 낮은 연결을 차단하는 것이 좋습니다.


코멘트를 남겨주세요

귀하의 이메일 주소는 공개되지 않습니다. 필수 필드가 표시되어 있습니다 *

*

*

  1. 데이터 책임자 : Miguel Ángel Gatón
  2. 데이터의 목적 : 스팸 제어, 댓글 관리.
  3. 합법성 : 귀하의 동의
  4. 데이터 전달 : 법적 의무에 의한 경우를 제외하고 데이터는 제 XNUMX 자에게 전달되지 않습니다.
  5. 데이터 저장소 : Occentus Networks (EU)에서 호스팅하는 데이터베이스
  6. 권리 : 귀하는 언제든지 귀하의 정보를 제한, 복구 및 삭제할 수 있습니다.