OWASP는 오픈소스 웹 애플리케이션 보안 프로젝트이다. 주로 웹에 관한 정보노출, 악성 파일 및 스크립트, 보안 취약점을 연구하며 많이 발생하고 보안상 크게 영향을 끼치는 것들 10가지를 선정해 공개한다. (출처 : OWASP 위키백과)
OWASP에 웹 취약점만 있다고 생각했는데, IoT 프로젝트도 진행하고 있었다. 그게 바로 OWASP IoT top 10이다.
설명을 보면 IoT 시스템을 구축, 배포 또는 관리할 때 피해야 할 상위 10가지 사항이라고 적혀있다.
이 포스트는 OWASP IoT top 10을 해석하고, 그와 관련된 나의 생각을 적어보았다. 최대한 팩트만을 이용해 생각을 적기 위해 관련 용어들을 검색하는 등 여러가지 노력을 기울였다.
OWASP Internet of Things
1. Weak, Guessable, or Hardcoded Passwords (취약, 추측 가능한 암호 또는 하드코딩된 암호)
브루트포스 공격으로 쉽게 노출되는 패스워드와 펌웨어 또는 클라이언트 소프트웨어의 백도어를 이용하여 얻어낸 credential로 시스템에 대해 무단으로 액세스 하는 것을 뜻한다.
장비들의 default password를 그대로 사용하는 경우가 해당되는 것 같다. 패스워드에 관한 문제는 항상 대두되었기 때문에 IoT 환경을 구성하는 경우에 기본적으로 생각해야되는 부분이 아닐까 싶다.
만약 실제 장비에 password를 하드코딩한다면, 하나의 장비에서 노출이 될 경우 모든 장비가 공격대상이 되기 때문에 간단하지만 매우 심각한 취약성이라고 볼 수 있다.
* 하드코딩이란?
* 하드코딩 : 시스템적으로 사용하는 변수 값들을 변수에 담지 않고 직접 코드에 입력하는 방식. 코드에서 변경되지 않을 부분에 사용함
ex) 2 x 1 = 2, 2 x 2 = 4 ... 구구단을 변수를 이용하지 않고 상수를 직접 박은 하드코딩이다.장점 : 가독성, 빠른 속도 (변수를 쓰지 않아 type check와 같은 진행과정이 없음)
단점 : 유지보수 (구구단을 100단까지 써야한다면? => 이런 경우와 같이 변경이 있다면 매우매우 힘들어짐), 취약한 보안
실제로 하드코딩에 대한 부분은 '소프트웨어 개발보안 가이드'에 명시되어 있다. 아래 사진들은 안전하지 않은 코드의 예시이다.
(출처 : 소프트웨어 개발보안 가이드, 소프트웨어 개발보안 가이드('19.11.29) | 행정안전부> 업무안내> 디지털정부국> 정보화 표준·지침 자료실 (mois.go.kr))
2. Insecure Network Services (안전하지 않은 네트워크 서비스)
디바이스에서 사용되는 불필요하거나 안전하지 않은 네트워크 서비스들을 뜻한다. 특히 인터넷에 노출되어 CIA를 손상시키거나 무단 원격 제어를 허용하는 취약성이다.
IoT 장비는 모두 네트워크에 연결되어 있기 때문에 공격 표면(surface)이 훨씬 많다. 장비마다 어떤 서비스가 필요한지 파악한 후 사용하지 않거나 꼭 사용해야 하는 경우에는 추가적인 보안 조치가 필요할 것이다.
취약한 네트워크 서비스의 예시로는 telnet, ftp, snmp 등이 있다. 실제 telnet은 거의 사용을 하지 않는다고 한다.
예시로는 IoT 장비간 파일 교환을 어떤 이유든 간(빠른 속도, 간단한 동작 방식) ftp를 이용한다면 파일 유출이 일어날 수 있다. ftp는 파일 통신이 암호화하지 않고 이루어지기 때문에 취약하다.
그래서 ftp 보다는 sftp를, telnet보다는 ssh를 이용해야 한다.
* ftp mode
* ftp mode
Active mode 동작 과정
1. 클라이언트는 서버의 21번 포트로 접속해 자신이 사용할 두 번째 포트를 서버에게 알려준다.
2. 서버는 클라이언트의 요청에 응답한다.
3. 서버의 20번 데이터 포트는 클라이언트가 위에서 알려준 포트에 접속한다.
4. 클라이언트는 서버의 요청에 응답한다.
=> 서버가 클라이언트에 접속한다.
만약 클라이언트가 외부에서의 접속을 허용하지 않는다면 연결이 이루어지지 않는다.
Passive mode 동작 과정
1. 클라이언트가 21번 포트로 접속 시도 (커맨드 채널)
2. 서버는 사용할 두 번째 포트를 클라이언트에게 알려준다. (데이터 채널)
3. 클라이언트는 1024 ~ 65534번 중 임의의 포트로 위에 서버가 알려준 포트에 접속한다.
4. 서버가 클라이언트의 요청에 응답한다.
=> 20번 포트를 이용하지 않고 임의의 포트를 데이터 채널 포트로 사용한다.
임의의 포트를 방화벽에서 허용을 해줘야 한다.
3. Insecure Ecosystem Interfaces (안전하지 않은 Ecosystem 인터페이스)
여기서 Ecosystem은 여러개의 서비스들을 클라우드와 같이 네트워크를 이용해 동시에 관리, 제공하는 것을 말한다.
웹, API, 모바일 인터페이스 등 하나의 부분에서라도 취약점이 발견된다면 연결된 서비스들을 악의적으로 이용이 가능할 것이다.
여기서의 취약성의 예시로는 인증 부족, 무분별한 권한 부여, 암호화 부족, 취약한 입력, 출력 필터링 부족이 해당된다고 한다.
DB의 경우 출력되는 에러 메시지를 통해 injection이 가능한 것처럼, 이 경우에 시큐어 코딩이나 WAF 등의 솔루션 도입을 통해 보완을 해야할 것이다.
4. Lack of Secure Update Mechanism (보안 업데이트 메커니즘의 부재)
디바이스를 안전하게 업데이트 할 수 있는 능력이 부족한 경우이다.
대표적인 경우로는 펌웨어 유효성 검사 부족(펌웨어의 무결성이 손상되면 업그레이드를 하지 않음), 암호화를 사용하지 않는 전송, 롤백 방지 메커니즘 부재, 업데이트로 인한 보안 변경 알림의 부재가 해당된다.
보안 업데이트는 기본적인 보안 권고 사항이다. 해당 시스템에 대한 제로데이 취약점이 발견된다면 벤더사의 재빠른 패치와 같은 대처가 필요할 것이다. 하지만 IoT 장비의 경우 기술적 문제 뿐만 아니라 물리적인 문제도 큰 영향을 미친다.
대표적인 예시로는 '갤럭시 워치 도어락' 사건이 있다. 삼성은 해당 기기를 도어락 키로 사용하지 말아달라는 권고 사항만 전달했다. 장비를 업데이트 하기 위해서는 판매된 장비를 모두 회수하여 보완 작업이 들어가야 할 것인데, 이 방법은 사실상 불가능하기 때문이다.
벤더사에서는 IoT 장비를 제작할 경우 지속적인 보안 패치를 염두해두고 제작해야 할 것이다. 또 소비자는 그런 기기만을 구매해야 안전한 장비 이용이 가능할 것이다.
또 OTA update 방식을 도입해야 할 것이다. (On The to Air : 인터넷이 연결되면 자동으로 업데이트를 진행)
5. Use of Insecure or Outdated Components (안전하지 않거나 오래된 구성 요소 사용)
여기서 구성 요소로는 안전하지 않은 OS, s/w (취약한 패키지, 라이브러리, 프로그램 등), h/w를 뜻한다. 오래되었다는 말은 더이상 업데이트를 지원해주지 않는 경우다.
장비 제조의 경우 저렴하게 제작하기 위해 남은 부품들을 재활용하는 경우가 있을 것이다. ICT분야는 하루가 다르게 발전하기 때문에 취약점과 보완된 장비가 끊임없이 나온다. 오늘의 최신 기술이 내일의 취약한 기술이 될 수 있다.
때문에 벤더사들은 이런 부분을 고려하여 지속적인 패치를 통해 취약점으로부터 사용자를 보호하려는 노력을 해야할 것이다.
6. Insufficient Privacy Protection (불충분한 개인정보 보호)
사용자의 개인 정보가 디바이스나 Ecosystem에 안전하지 않게 저장되어, 사용자 허가 없이 부적절하게 사용되는 취약성이다.
오늘날 스마트폰에는 우리의 모든 정보가 담겨있다고 해도 과언이 아닐 정도이다. 이제는 스마트폰만 있다면 모든 활동이 가능할 정도이기 때문이다.
이것은 매우 편리하지만 취약한 부분이라고 생각할 수 있다.
또 IoT 장비의 경우에는 사용자의 사생활과 매우 밀접하다. (ip camera, conneted car, smart home 등)
자신의 지문이나 face ID 같이 생체정보를 이용해 인증을 하는 서비스의 경우 해당 정보가 유출되면 막대한 피해를 불러오기 때문이다.
서비스를 제공하는 업체는 최소한의 개인정보만을 수집해야 할 것이며, 그 또한 철저한 보안 아래에서 관리, 사용되야 할 것이다.
7. Insecure Data Transfer and Storage (안전하지 않은 데이터 전송 및 저장)
보관, 전송 또는 처리 단계를 포함해 Ecosystem 어디서든 민감한 데이터의 암호화 또는 접근 제어가 이루어 지지 않는 경우이다.
이 경우에는 어느 한 부분이라도 보안이 미흡하다면 결국 데이터가 침해당한다. (ex : 보관을 잘해도 전송을 취약하게 하는 경우)
모든 데이터를 일관된 보안을 통해 관리해야 할 것이다. 신경써야할 부분이 매우 많다고 생각한다.
IoT는 많은 서비스들과 연결되어 데이터를 주고받고, 가공하는 등 여러 행위를 하기 때문에, 연결되는 모든 장비에서의 철저한 보안을 요구하기 때문이다.
8. Lack of Device Management (장치 관리 부족)
디바이스에 대한 자산 관리, 업데이트 관리, 안전한 서비스 폐기, 시스템 모니터링 및 응답 기능을 포함한 보안 지원의 부재를 의미한다.
벤더사는 생산부터 지속적인 관리, 폐기까지 모든 과정을 관리해줘야 한다.
IoT 환경은 소형 디바이스부터 대형 디바이스까지 매우 많은 디바이스가 연동되기 때문에 어려운 부분이다. 하지만 그만큼 공격 표면(surface)이 많아지기 때문에 지속적인 관리는 필수라고 할 수 있다.
안전한 폐기는 HDD 폐기를 생각하면 될 것 같다. 완전히 정보를 지우지 않고 무작정 버린다면, 데이터를 복원시켜서 악의적인 목적으로 사용이 가능하다. IoT 장비는 우리의 사생활과 밀접한 관계를 가지기 때문에 더더욱 안전한 방법을 통해 폐기를 진행해야 할 것이다.
9. Insecure Defalut Settings (안전하지 않은 기본 설정)
장치 또는 시스템이 안전하지 않은 기본 설정으로 제공되는 경우와 사용자의 시스템 구성 수정을 제한하지 않는 경우이다.
이 항목은 연쇄관계가 있는 것 같다. 기본 설정이 취약하다면 사용자는 해당 설정을 변경하여 안전한 서비스를 구축하고 싶을 것이다.
하지만 시스템 구성을 임의로 변경하면 어떤 오류나 취약점이 생길지 모른다. IoT 장비의 경우 사용자가 입맛대로 커스텀할 수 있는 부분이 많다.
사용자들은 편의성을 중점적으로 생각한다. 만약 편의성을 생각해 사용자 임의로 인증 절차를 진행하지 않도록 설정을 변경했다면, 공격자의 입장에서는 자유롭게 악의적인 행위를 펼칠 수 있을 것이다.
때문에 IoT 디바이스나 서비스 설계 시 사용자 임의로 시스템 설정을 변경할 수 없도록 단단한 설계가 필요할 것이다.
10. Lack of Physical Hardening (부족한 물리적 보호 수단)
물리적인 보호 장치가 부족하여 장비에 직접 접근해 민감한 정보를 얻거나 제어할 수 있는 취약성을 말한다.
아무리 보안, 암호화, 업데이트를 잘해도 실제 장비가 공격받는다면 매우 막대한 피해를 볼 수 있다. IoT는 사물과 인터넷이 연결된 것이기 때문에 사물 보안도 매우 중요한 부분에 속한다.
예로는 공유기가 있다. 공개된 장소의 공유기의 비밀번호가 적나라하게 노출되어 있다면, 공격자는 공유기에 직접 연결해서 패킷을 스니핑할 수 있을 것이다. 또 장비가 기능을 하지 못하게 만들어 가용성에 영향을 끼칠 수도 있을 것이다.
이렇게 OWASP IoT top10 분석을 진행해보았다. 사이트에 나와있는 설명 외에도 관련된 예시를 생각해 내는 부분이 어렵게 다가왔다. 완전히 맞는 예시인지는 모르겠다.
IoT는 시스템부터 h/w까지 신경쓸 부분이 매우 많다. 앞으로 IoT가 우리 생활속에 자리잡게 되면 편리하면서도 보안에 신경써야 할 부분이 많아질 것이다.
편리함에 눈이 멀어 보안을 등한시하지 않도록 깨어있는 소비자가 되어야겠다.
'IoT' 카테고리의 다른 글
임베디드 시스템의 특징 (0) | 2022.05.25 |
---|---|
UART로 펌웨어 접근해보기 (1) | 2022.04.14 |
IoT 장비 분석 (공유기 펌웨어 분석) (2) | 2021.09.12 |
댓글