민감 정보 평문 전송

민감 정보 평문 전송

설명

민감 데이터를 보호되지 않은 소켓 전송 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의 반환값과 재시도·오류 조건도 처리하세요.

참조