🇰🇷 한글 설명
macOS 환경의 AWS IoT Device SDK v2에서 사용자가 지정한 CA가 기존 루트 CA를 대체하는 대신 추가되는 취약점이 발견되었습니다. 또한 CA가 교체된 경우 SNI 검증이 활성화되지 않아, 공격자가 호스트의 신뢰 저장소에 접근하거나 DNS 스푸핑을 병행할 경우 CA 핀닝을 우회할 수 있습니다.
💡 쉬운 설명
보안 인증서를 설정할 때 기존의 인증서들이 삭제되지 않고 그대로 남아 있어, 가짜 인증서로도 연결이 허용될 수 있는 문제입니다. 이를 통해 공격자가 가짜 서버를 만들어 데이터를 가로채거나 조작할 위험이 있습니다.
🇺🇸 원문 (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 macOS systems. Additionally, SNI validation is also not enabled when the CA has been “overridden”. 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 address this behavior. This issue affects: Amazon Web Services AWS IoT Device SDK v2 for Java versions prior to 1.5.0 on macOS. Amazon Web Services AWS IoT Device SDK v2 for Python versions prior to 1.7.0 on macOS. Amazon Web Services AWS IoT Device SDK v2 for C++ versions prior to 1.14.0 on macOS. Amazon Web Services AWS IoT Device SDK v2 for Node.js versions prior to 1.6.0 on macOS. Amazon Web Services AWS-C-IO 0.10.7 on macOS.
📍 영향받는 시스템
AWS IoT Device SDK v2 (Java < 1.5.0, Python < 1.7.0, C++ < 1.14.0, Node.js < 1.6.0) 및 AWS-C-IO 0.10.7 (macOS 전용)
⚔️ 공격 벡터
호스트 신뢰 저장소 탈취 또는 DNS 스푸핑을 통한 CA 핀닝 우회 및 MQTT 브로커 사칭
🛡️ 대응 방법
SDK 버전을 최신 보안 패치가 적용된 버전으로 업데이트하고 aws-c-io 모듈을 업데이트하십시오.
🔧 검증 코드
설치된 SDK의 버전을 확인하여 취약점이 포함된 버전 범위에 해당하는지 대조합니다.
pip show awsiotdeviceclient || npm list @aws-sdk/client-iot || python3 -c 'import awsiot; print(awsiot.__version__)'