IT/시스템 보안

[Heartbleed Attack] TLS Record Protocol, Heartbeat Protocol, Heartbleed Attack

kykyky 2024. 6. 7. 23:05

TLS

▶TLS layer

• Application layer→TLS: unprotected data 전송됨

• TLS: handles encryption, decryption, integrity checks 수행

• TLS→Transport layer: protected data 전송됨

 

▶TLS Record Protocol

TLS handshake가 끝나면 client와 server는 header와 payload로 구성된 record를 이용해 데이터를 교환한다.

 

Record

 

Sending Data

 

Receiving Data

 

Hearbeat protocol in OpenSSL

client와 server가 일정 기간 이상 서로에게 데이터를 보내지 않으면 통신을 막음으로써,

TLS의 keep-alive feature을 구현한다.

• A→B: payload(는 별로 안중요)와 payload length value (n)이 포함된 heartbeat packet을 보낸다.

• B: request packet의 payload field의 시작점부터해서 총 n 바이트만큼, 즉 request packet의 payload 그대로를 response packet에다 복사함

→ A가 줬던 request packet의 payload와 동일한 payload를 가짐

• B→A:  이 response packet 전송

 

Heartbleed Attack

 

OpenSSL heartbeat extension의 결함으로 인해 heartbleed bug가 발생한다:

response packet에다가 얼마나 복사해넣을지는 payload length field에 의해 직접 결정되므로,

payload length field의 값이 실제 payload보다 크면, payload 이외의 데이터 즉 server 측의 memory 일부까지도 response packet에 복사되어 상대에게 전송됨으로써, server memory의 disclosure 발생.

 

▶Patch

걍 OpenSSL library를 업데이트하면 해결됨.