설명
민감 데이터를 보호되지 않은 소켓 전송 API로 보내면 네트워크 관찰자가 내용을 읽을 수 있습니다.
잠재적 영향
- 비밀번호, 토큰, 개인정보가 도청되거나 재사용될 수 있습니다.
해결 방법
상대의 인증서와 호스트 이름을 검증하는 TLS 같은 보호 채널을 사용하세요. 검증에 실패하면 전송을 중단하고 평문 연결로 대체하지 마세요.
예시
변경 전
c
const char *password = getenv("PASSWORD");
send(fd, password, strlen(password), 0);
변경 후
c
const char *password = getenv("PASSWORD");
SSL_write(ssl, password, strlen(password));
설명:
- 변경 전: 비밀번호를 보호되지 않은 일반 소켓 API로 직접 전송합니다.
- 변경 후: TLS 연결의 전송 API를 사용합니다.
ssl의 인증서·호스트 이름 검증 설정과 연결 수립은 생략한 발췌입니다. 환경 변수 누락과 길이를 확인하고,SSL_write의 반환값과 재시도·오류 조건도 처리하세요.