Postgres CLI에서 CTRL-C가 쿼리를 취소하는 방식은 정말 해킹 같은 방법이다
Postgres의 Ctrl-C 쿼리 취소 방식에 대해 설명한 본 기사는, Postgres가 쿼리 취소 시 별도의 연결을 생성해 CancelRequest 프로토콜을 사용한다는 점을 다룹니다.
특히, psql 클라이언트가 CancelRequest 메시지를 암호화하지 않고 평문으로 전송하는 보안 취약점이 존재하며, 이로 인해 네트워크 상에서 공격자가 쿼리 취소 요청을 가로채어 서비스 거부(DoS) 공격을 할 위험이 있음을 지적합니다.
Postgres 17부터는 libpq 라이브러리에서 암호화된 CancelRequest 전송을 지원하지만, psql은 아직 이를 사용하지 않아 근본적인 개선이 필요합니다.
또한, TLS 미적용 시 SNI(Server Name Indication) 정보가 없어 프록시 도구에서 취소 요청을 올바르게 처리하기 어려운 문제도 소개하며, 이를 해결한 Neon과 Elephantshark의 접근법을 설명합니다.
마지막으로, 보안 강화를 위해 최신 Postgres 버전 사용, 프로토콜 버전 설정, VPN 활용 등을 권장하며, 향후 psql의 암호화 CancelRequest 지원을 기대한다고 마무리합니다.
