🔍 CVE-2021-40830

6.3
CVSS Score
MEDIUM
2021-11-23
2026-06-17 04:07
✅ 완료

🇰🇷 한글 설명

AWS IoT Device SDK v2의 Unix 시스템용 버전에서 사용자가 지정한 CA를 루트 CA에 덮어쓰는 대신 추가하는 취약점이 발견되었습니다. 이로 인해 시스템 기본 신뢰 저장소에 있는 인증서로도 TLS 핸드셰이크가 성공할 수 있어 CA 핀닝을 우회할 수 있습니다. 공격자는 이를 통해 MQTT 브로커를 사칭하여 트래픽을 차단하거나 조작된 데이터를 응답할 수 있습니다.

💡 쉬운 설명

보안을 위해 특정 인증서만 믿기로 약속했는데, 컴퓨터에 저장된 다른 인증서들도 함께 믿어버리는 문제가 발생했습니다. 이로 인해 가짜 서버가 진짜 서버인 것처럼 속여 데이터를 가로채거나 조작할 위험이 있습니다.

🇺🇸 원문 (English)

The AWS IoT Device SDK v2 for Java, Python, C++ and Node.js appends a user supplied Certificate Authority (CA) to the root CAs instead of overriding it on Unix systems. TLS handshakes will thus succeed if the peer can be verified either from the user-supplied CA or the system’s default trust-store. Attackers with access to a host’s trust stores or are able to compromise a certificate authority already in the host's trust store (note: the attacker must also be able to spoof DNS in this case) may be able to use this issue to bypass CA pinning. An attacker could then spoof the MQTT broker, and either drop traffic and/or respond with the attacker's data, but they would not be able to forward this data on to the MQTT broker because the attacker would still need the user's private keys to authenticate against the MQTT broker. The 'aws_tls_ctx_options_override_default_trust_store_*' function within the aws-c-io submodule has been updated to override the default trust store. This corrects this issue. This issue affects: Amazon Web Services AWS IoT Device SDK v2 for Java versions prior to 1.5.0 on Linux/Unix. Amazon Web Services AWS IoT Device SDK v2 for Python versions prior to 1.6.1 on Linux/Unix. Amazon Web Services AWS IoT Device SDK v2 for C++ versions prior to 1.12.7 on Linux/Unix. Amazon Web Services AWS IoT Device SDK v2 for Node.js versions prior to 1.5.3 on Linux/Unix. Amazon Web Services AWS-C-IO 0.10.4 on Linux/Unix.

📍 영향받는 시스템

AWS IoT Device SDK v2 (Java < 1.5.0, Python < 1.6.1, C++ < 1.12.7, Node.js < 1.5.3) 및 AWS-C-IO 0.10.4 (Linux/Unix)

⚔️ 공격 벡터

호스트의 신뢰 저장소에 접근하거나 신뢰된 CA를 탈취한 후 DNS 스푸핑을 통해 MQTT 브로커를 사칭함

🛡️ 대응 방법

aws-c-io 모듈이 업데이트된 최신 버전의 AWS IoT Device SDK v2로 업데이트하여 기본 신뢰 저장소를 덮어쓰도록 수정함

🔧 검증 코드

출력된 SDK 버전을 확인하여 취약점이 해결된 버전(Python 기준 1.6.1 이상)인지 대조함

Shell / Script
pip list | grep aws-iot-device-sdk-python || python3 -c 'import awsiot; print(awsiot.__version__)'

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:A/AC:H/PR:H/UI:R/S:U/C:H/I:H/A:H

💻 영향받는 소프트웨어

Node.js