
OpenSSL CVE-2014-0160 취약점을 확인하기 위해 설계된 연구 도구
Ruby로 작성된 간단한 도구로, OpenSSL CVE-2014-0160 취약점에 대해 서버를 테스트할 수 있습니다.
본 도구를 사용하여 발생할 수 있는 피해에 대해 저는 책임을 지지 않습니다. 이 도구는 특정 취약점에 대해 개인 서버를 확인하고, 높은 트래픽 하에서 잠재적인 사용자 관련 데이터 유출을 측정하기 위해 작성되었습니다. 내부 보안 감사 도구로 공유됩니다.
필요 사항 :
이러한 전제 조건을 설치하려면 먼저 플랫폼에 맞는 Ruby를 다운로드하여 설치하십시오. 그런 다음 명령어 gem install bundler로 Bundler를 설치하고, 프로젝트 루트 디렉터리에서 bundle install을 실행하여 프로젝트 종속성을 가져옵니다.
명령줄 사용법은 ruby src/run.rb <host> [<port>]입니다.
서버가 취약하지 않은 것으로 보이면 출력은 다음과 같습니다 :
Host server:443 seems safe
반대로 취약한 경우, 출력은 메모리에서 약 64KiB의 데이터를 가져와 16진수 덤프로 표시하므로 민감한 정보가 유출되었는지 확인할 수 있습니다.
Host server:443 is vulnerable! Heartbeat response payload : 00000000 d4 03 03 53 4a 84 a9 00 01 02 03 04 05 06 07 08 |...SJ...........| 00000010 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15 16 17 18 |................| 00000020 19 1a 1b 00 01 a6 00 00 00 01 00 02 00 03 00 04 |................| 00000030 00 05 00 06 00 07 00 08 00 09 00 0a 00 0b 00 0c |................| 00000040 00 0d 00 0e 00 0f 00 10 00 11 00 12 00 13 00 14 |................| 00000050 00 15 00 16 00 17 00 18 00 19 00 1a 00 1b 00 1c |................| 00000060 00 1d 00 1e 00 1f 00 20 00 21 00 22 00 23 00 24 |....... .!.".#.$| 00000070 00 25 00 26 00 27 00 28 00 29 00 2a 00 2b 00 2c |.%.&.'.(.).*.+.,| 00000080 00 2d 00 2e 00 2f 00 30 00 31 00 32 00 33 00 34 |.-.../.0.1.2.3.4| ....
RFC 6520 및 6066에 따르면, 최대 Heartbeat 메시지 크기는 Maximum Fragment Length 확장의 사용 여부에 따라 ,
,
,
또는
바이트여야 합니다.
RFC 6520 인용 :
HeartbeatMessage의 총 길이는 2^14 또는 RFC 6066에 정의된 대로 협상된 max_fragment_length를 초과해서는 안 됩니다.
RFC 6066 인용 :
"extension_data" 필드에는 다음이 포함되어야 합니다:
enum{ 2^9(1), 2^10(2), 2^11(3), 2^12(4), (255) } MaxFragmentLength;
그 값은 원하는 최대 조각 길이입니다. 이 필드에 허용되는 값은 2^9, 2^10, 2^11, 2^12입니다.
이는 도난 데이터의 최대 청크 크기가 약 16KiB여야 함을 의미합니다. 그러나 OpenSSL은 이 제약을 준수하지 않아 Heartbeat 메시지 페이로드 길이 필드의 최대값인 65535(0xFFFF)를 사용할 수 있게 합니다.