機密情報の平文送信

機密情報の平文送信

説明

保護されていないソケットで機密データを送信すると、ネットワークを観測する第三者に内容を読み取られる可能性があります。

想定される影響

  • パスワード、トークン、個人情報を盗聴されたり再利用されたりするおそれがあります。

対処方法

接続先の証明書とホスト名を検証する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));

変更前は保護されていないソケットでパスワードを直接送ります。変更後はTLS接続の書き込みAPIを使います。sslの証明書・ホスト名の検証設定と接続処理は省略しています。環境変数の存在と長さを確認し、SSL_writeの戻り値、再試行、エラーも処理してください。

参考資料