1. UPnP 란??

UPnP는 별도의 포트 포워딩 설정 없이 응용 프로그램을 사용할 수 있도록 자동으로 포트를 구성하는 기능이며, 네트워크 환경에서 다른 장치 간 네트워크 연결을 간편하게 할 수 있도록 해주는 기능으로 보면 될 것 같다. 예를 들면, 공유기, 프린터, 라우터 등을 통해 해당 기능을 확인할 수 있다.

 

작동 원리로는 DHCP 프로세스를 통해 IP주소를 얻으며, 주소를 획득한 이후 기능에 대한 정보를 전달 받게 된다.

 

하지만 UPnP는 취약한 프로토콜이기에 보안상 취약점이 존재한다.

UPnP 활성화 시 LAN이 WAN에서 사용자의 LAN을 검색할  수 있으며, 새로운 연결 요청 시 인증을 수행하지 않고  포트를 열어주기에 공격자에 의해 악의적인 목적을 가지고 연결 시도 시 인증 없이 연결을 허용해 준다.

 

이를 위해 UPnP 프로토콜을 되도록 사용하지 않는 것을 권고 하며, 기본적으로 UPnP 프로토콜 사용이 불필요할 경우 비활성화한다. 또한 사용이 필요하다면 사용하지 않는 서비스는 제거해야 하며 argument값을 검증하여 사용하도록 한다.

 

2. MQTT란??

ISO 표준 발행-구독 기반의 메시징 프로토콜로써 네트워크 대역폭이 제한되는 원격 위치와의 연결을 위해 설계된 프로토콜 이다.

 

구조를 살펴보겠다.

 

Publisher(센서장치, 아두이노 등) -> Brocker -> Subscriber(출력장치, 아두이노 등)

 

Publisher : Topic 발행

 

Broker : 중계역할 수행

 

Topic : publisher에서 발행하는 데이터, subscriber가 받고자 하는 데이터

 

해당 프로토콜을 IoT시스템에 적용했을 경우, 앱 을통해 얻을 수 있는 인증정보를 통해 정보 탈취가 이루어지는지 확인이 필요하다.

 

해당 프로토콜을 통해 인증 절차 시 메시지 암호화가 적용되지 않는다면 기기의 인증 시 중요 정보가 노출되는 문제점이 존재하기에, 메시지 전송 시 암호화 전송이 되어있는지 점검해 볼 필요가 있다.

또한 하드코딩을 통해 연결을 위한 정보를 평문으로 저장해서는 안된다.

복사했습니다!