1

이러한 상황에서 데이터를 유출하고많은 리눅스 네트워크 드라이버는 내가 LDD를 읽고있다

"는 메모를 수행하지만, 패킷이 전송 될 때 수행되는 치료는 짧은 문장 아래에 대한 질문이 발견되었습니다 기본 미디어 (snull의 경우 가상의 "이더넷")가 지원하는 최소 길이보다 많습니다. 많은 Linux 네트워크 드라이버가 이러한 상황에서 데이터를 유출 한 것으로 밝혀졌습니다. "

드라이버에서 데이터가 누출 될 수있는 이유를 알려주십시오.

답변

2

요점은 이더넷 카드의 경우 최소 패킷 크기가 60 바이트 (예 : 카드에서 일반적으로 와이어에서 최소 64 바이트를 만드는 프레임 체크섬을 추가 함)입니다. 전송하려는 페이로드가 60 바이트 이상인 경우 카드는 지정한 데이터를 정확하게 전송합니다.

당신이 그것을 건네면, 말하자면, 40 바이트 만 전달하면, 여전히 60 바이트를 전송할 것입니다. 40 바이트를 에 더하여 다음 20 바이트 인을 버퍼에 넣었습니다. 보내다.

해당 영역을 명시 적으로 초기화하지 않은 경우이 20 바이트는 이전에 보낸 패킷에서 남은 데이터 일 수 있습니다.이 패킷은 다른 연결에 속했을 수 있습니다. 또는 그 메모리는 이전에 실행 중이던 일부 프로그램의 데이터 페이지 였을 수도 있습니다. 따라서 암호 나 암호화 키 또는 모든 종류의 중요한 정보를 포함 할 수 있습니다.

이것은 데이터 유출입니다 (버퍼 유출과 혼동하지 마십시오). 그 LDD 텍스트는 그런 상황에서 그 바이트들을 제로로 만들 필요가 있다고 경고합니다.

+0

답변 해 주셔서 감사합니다. 그래서이 의도 된 패킷에 대한 데이터 누출이 아닙니다. 그것은 이전 데이터를위한 것입니다. 권리 ? – nathan

+0

수정하십시오. 이전 데이터가 누출되면서 버퍼의 덮어 쓰기되지 않은 부분에 여전히 위치하게됩니다. –