programing tip

알 수없는 확장명을 포함하는 IPv6 확장 헤더 구문 분석

itbloger 2020. 7. 29. 07:53
반응형

알 수없는 확장명을 포함하는 IPv6 확장 헤더 구문 분석


매우 간단한 넷 필터를 작성 중이며 ICMPv6 유형, TCP / UDP 포트 번호 등과 같은 항목과 일치하도록 IPv6 헤더를 구문 분석하려는 위치로 이동합니다.

그래서 저는 IPv6 패킷 형식 에 대해 깊이있게 읽었습니다. 그리고 저는 일종의 ... 글쎄 ... 실제로 그것을 올바르게 읽고 있는지 확인하기 위해 그것을 반복해서 읽어야했습니다. 40 바이트 고정 헤더로 시작하고 다음 헤더 필드를 봐야한다고 생각합니다. 그런 다음 끝에 도달 할 때까지 링크 된 목록처럼 다음 헤더의 다음 헤더 필드 등을 살펴 봐야합니다. 페이로드가 있으면 따라갑니다.

문제는 고정 헤더 또는 확장 헤더에 길이 필드가 없다는 것입니다. 이 연결된 목록을 끝까지 추적 할 수 있도록 확장 헤더 유형 및 크기 테이블이 있어야합니다.

이것은 이상하고 아마도 헤어 브레인 디자인으로 나에게 충격을줍니다. 인식 할 수없는 확장 헤더 유형이 발생하면 어떻게합니까? 어떻게해야합니까? 나는 길이를 모른다. 패킷을 허용하면 공격자가 가짜 헤더 유형을 포함하여 순 필터를 피할 수 있기 때문에 패킷을 버리고 차단해야한다고 생각합니다. 그러나 이는 프로토콜이 확장 된 경우 새 확장을 사용하려면 지금까지 작성된 모든 IPv6 헤더 구문 분석 소프트웨어를 동시에 업데이트해야합니다.

그렇다면 사용중인 확장을 모르는 경우 IPv6 헤더를 어떻게 구문 분석 할 수 있습니까? 길이를 모르기 때문에 알 수없는 확장자의 헤더를 건너 뛸 수 있습니까?


구문 분석 할 수없는 항목이 발생하면 이미 구문 분석 한 내용에 따라 결정을 내리거나 작업을 수행해야합니다.

IPv6에서는 각 확장 헤더가 나머지 패킷을 "랩핑"하기 때문에 디자인이 그렇게됩니다. 라우팅 헤더, 들어 본 적이없는 헤더, 페이로드가 있으면 페이로드를 구문 분석 할 수 없습니다. 페이로드의 의미는 원칙적으로 해석 방법을 모르는 헤더에 따라 다릅니다.

라우터는 필요한 모든 것이 라우팅 헤더이기 때문에 이러한 패킷을 라우팅 할 수 있습니다. 딥 패킷 검사 장치 등은 많이 알아야하지만, 어쨌든 그것은 운명입니다.

추가를 위해 편집 :이 디자인은 미들 박스가 자신이 알고있는 것만 변경할 수 있음을 의미합니다. 미들 박스에 알 수없는 헤더가 보이면 거부 또는 전달이라는 두 가지 옵션 만 있습니다. IPv4에서는 알 수없는 확장명을 제거하고 나머지를 전달할 수도 있습니다. IMO이 속성은 디자인의 확장 성이 떨어지는 것보다 더 뛰어납니다.


인식 할 수없는 확장 헤더 유형이 발생하면 어떻게합니까?

에서 RFC 2460 :

헤더를 처리 한 결과 노드가 다음 헤더로 진행해야하지만 현재 헤더의 다음 헤더 값을 노드에서 인식하지 못하면 패킷을 버리고 ICMP 매개 변수 문제 메시지를 소스로 보내야합니다. 패킷 (1)의 ICMP 코드 값 ( "알 수없는 다음 헤더 타입 발생")과 원래 패킷 내에없는 값의 오프셋을 포함하는 ICMP 포인터 필드. 노드가 IPv6 헤더 이외의 헤더에서 다음 헤더 값이 0 인 경우 동일한 조치를 수행해야합니다.


IPv6에 새로운 확장 헤더를 추가하는 것은 (실제에서는) 불가능합니다.

잘못된 이유 :

  1. 인식 할 수없는 확장 헤더를 기반으로 대상 호스트 만 거부 할 수 있습니다 ( 연결된 질문에 언급 된 예외 )

  2. 새 확장 헤더가 선택 사항 인 경우 (더 좋았을 경우) ICMP 오류가 발생하지 않고 다시 시도 할 수 있습니다.


업데이트 RFC 6564 는이 경우를 다룹니다. 그것은 당신이 묘사 한 시나리오를 정확하게 제시하고 적어도 일부 시간 동안 당신과 같은 미들 박스와 함께 작동 할 수있는 새로운 확장 헤더 (있는 경우)를 포맷합니다.

새 확장 헤더를 만들어서 새 대상 옵션을 추가하여 IPv6을 확장 할 수는 없습니다. 알 수없는 대상 옵션을 처리하는 것은 사소하거나 최소한 훨씬 쉬워야합니다.

참고 URL : https://stackoverflow.com/questions/17518951/parsing-ipv6-extension-headers-tain-unknown-extensions

반응형