피드로 돌아가기
Dev.toSecurity
원문 읽기
MailKit STARTTLS 버퍼 취약점 해결을 통한 SASL Downgrade 방어
GHSA-9J88-VVJ5-VHGR: GHSA-9j88-vvj5-vhgr: STARTTLS Response Injection and SASL Downgrade in MailKit
AI 요약
Context
STARTTLS 업그레이드 과정에서 클라이언트 내부 read buffer의 데이터 처리 미흡으로 인한 취약점 발생. TLS 핸드쉐이크 완료 전 주입된 평문 응답이 핸드쉐이크 이후 정상 데이터로 처리되는 구조적 결함 존재.
Technical Solution
- TLS 핸드쉐이크 완료 직전 내부 read buffer를 강제로 flush 하여 이전 평문 데이터 제거
- STARTTLS 응답 주입을 통한 SASL 인증 메커니즘 Downgrade 공격 경로 차단
- STARTTLS 방식 대신 SslOnConnect 설정을 통한 Implicit TLS 적용 권고
- 포트 465, 993, 995 등 전용 보안 포트 사용을 통한 프로토콜 전환 단계 제거
- MailKit 4.16.0 버전 업데이트를 통한 스트림 핸들링 로직 수정
실천 포인트
1. STARTTLS 사용 시 핸드쉐이크 전후의 버퍼 상태 및 잔여 데이터 처리 로직 검토
2. 가능한 경우 Explicit TLS(STARTTLS)보다 Implicit TLS(SslOnConnect) 우선 채택
3. 외부 라이브러리의 프로토콜 상태 머신 구현 시 전이 단계에서의 데이터 격리 확인