보안
2025-05-01 ~ 2025-08-02
1분 읽기

선박 SW 정보수집 및 취약점 분석

🏆 화이트햇 스쿨 3기 우수 프로젝트

[WHS 3기 프로젝트] 실제 선박 SW 환경 기반의 분석을 통한 취약점 도출

화이트햇 스쿨 3기 SeaBugs 팀

담당멘토: 이민우 멘토님
PL: 노용훈 PL님
팀원: 이태용(PM), 박지후, 유인서, 김주찬, 이규민, 윤현빈, 양승권, 진형권
(SeaBugs)선박 SW 정보 수집 및 취약점 분석_WHS 3기 최종보고서 PDF
해당 게시글은 취약점 분석 내용을 주로 다룹니다. 전체 내용은 보고서를 참고하시기 바랍니다.

1. 주요 성과

  1. Virtual sailor NG를 이용한 실험 환경 구성 및 프로토콜 테스트 환경 구성 완료
  • COM 포트를 통한 Virtual Sailor NG와 OpenCPN 간 연결 구성
  • Virtual Sailor NG에서 NMEA 신호 전송, OpenCPN에서 수신 및 시각화 확인
  1. 취약점 8개 도출
  • S사 O프로그램 관련 취약점 2개는 ZDI(Zero Day Initiative)에 제보 완료
  • Opensource O프로그램 관련 취약점 6개는 MITRE에 제보 완료 -> 2025.09.25 기준 가번호 발급
  1. 논문 5편 투고 완료
  • 정보보호학회 영남지부 학술대회 1편 투고 및 구두발표 - 2025.06.13
  • 정보보호학회 하계 학술대회 2편 투고 및 포스터발표 - 2025.06.24
  • WISA 2025 2편 포스터발표 - 2025.08.21
  1. 국내 유관 기관 다수 방문
  • 동남 정보보호 클러스터, 부산항 VTS(해상교통관제센터) 방문
  • 한국해양대학교 융합보안연구실 및 실습선박(한바다호), 전기추진체계 실습실, GMDSS 실습실 방문

2. 취약점 분석

2-1. Opensource O프로그램 - 경로 검증 부재로 인한 Path Traversal [CVE-2025-56810(가)]

코드 검토 과정에서, 특정 플러그인 로드 기능이 외부 입력값으로부터 전달되는 파일 경로를 별도의 검증 없이 처리하는 동작을 확인하였다. 이 로직은 디렉터리 이동(../)과 같은 경로 조작 문자를 포함한 입력을 허용하므로, 지정된 작업 디렉 터리를 벗어난 임의 위치의 파일에 접근하거나 덮어쓰기가 가능하다.

Opensource O: Path traversal
[그림 1] Path Traversal 유발 문자열을 포함한 XML PoC 예시

이후 이를 트리거하기 위해 명령을 입력하여 Path Traversal을 시도하였다.

Opensource O: Path traversal
[그림 2] 테스트 환경에서 PoC 실행 결과

해당 취약점은 중요 설정 파일 변조, 악성 코드 설치, 로그 조작 등으로 확장될 수 있으며, 시스템 안정성과 무결성에 심각한 영향을 줄 수 있다

2-2. Opensource O프로그램 - 플러그인 로드 시 검증 불충분으로 인한 원격 코드 실행 [CVE-2025-56812(가)]

코드 검토 과정에서, 플러그인 로드 기능이 외부 모듈을 불러올 때 화이트리스트 기반의 신뢰성 검증 없이, 단순 블랙리스트 방식의 제한만 적용하는 동작을 확인하였다. 이로 인 해 공격자는 정상 구조를 가진 악성 모듈을 제작하여 프로그램에 로드시킬 수 있으며, 이 는 임의 코드 실행으로 이어질 수 있다.
PoC에서는 테스트용 플러그인 템플릿에 명령 실행 코드를 삽입하여 빌드한 뒤, 플러그인 로드 기능을 통해 실행하였다.

Opensource O: RCE1
[그림 3, 4] PoC 실행 결과 – 임의 명령 실행 성공

이 취약점은 원격 코드 실행(RCE)이 가능하므로, 시스템 제어권 탈취, 데이터 유출, 서비 스 중단 등 심각한 보안 위협으로 이어질 수 있다.

2-3. Opensource O프로그램 - 파일 경로 검증 부재로 인한 원격 코드 실행 (RCE)

특정 차트 다운로드 기능이 외부에서 가져온 파일을 적절한 검증 없이 사용자가 지정한 로컬 디렉터리에 해제하는 동작을 확인하였다.
이 과정에서 경로 조작(../)을 이용하면 지정된 디렉터리를 벗어나 임의 경로에 파일을 생 성하거나 덮어쓸 수 있다.
PoC에서는 조작된 차트 카탈로그 XML 내부에 시작 프로그램 경로를 포함시켜, 상위 디 렉터리로 탈출한 뒤 악성 BAT 파일을 생성하였다. 이 파일은 사용자의 시작 프로그램 폴 더에 위치하게 되며, 시스템 재부팅 시 자동으로 실행된다.

Opensource O: RCE2
[그림 5, 6] 차트를 다운 받고 시작프로그램에 악성프로그램이 저장된 결과

이 취약점은 물리적 접근 없이도 원격에서 악성 코드를 설치·실행할 수 있어, 시스템 장 악, 지속적 침투, 추가 공격 수행 등 심각한 위협을 초래할 수 있다.

2-4. Opensource O프로그램 - 입력 길이 검증 미흡으로 인한 Heap Buffer Overflow [CVE-2025-56813(가)]

Opensource O: Heap Buffer Overflow
[그림 7] 테스트 환경에서 AddressSanitizer가 탐지한 힙 버퍼 오버플로우 오류

AddressSanitizer 빌드 환경에서 대상 프로그램을 실행한 결과, 특정 파일을 파싱하는 과정에서 크래시가 발생하였다. 분석 로그에 따르면, 힙 버퍼 경계를 초과하는 쓰기(write) 동작이 감지되었다. 이는 입력 길이 초과 또는 포맷 파싱 로직의 문제 가능성을 시사한다.
추가 분석 결과, 문자열 입력을 처리하는 함수 호출에서 고정 길이 제한 값이 선언되어 있으나, 널 종단 문자까지 포함해 실제로는 더 많은 바이트가 메모리에 기록되는 동작이 확인되었다. 입력 값이 정상적으로 잘리지 않거나 포맷 제약을 우회하는 경우, 예상보다 많은 데이터가 복사되어 인접 힙 메모리 영역을 침범하게 된다.
힙 기반 버퍼 오버플로우가 발생하는 조건은 다음과 같다.

  • 파일 구조 내 특정 필드에 제한 길이를 초과하는 문자열이 포함된 경우
  • 해당 필드를 처리하는 과정에서 추가적인 길이 검증 없이 복사가 이루어지는 경우
  • 고정 크기보다 작은 메모리 버퍼가 할당되어 인접 메모리에 대한 비의도적 쓰기가 발생하는 경우 이러한 구조적 결함은 악의적으로 조작된 입력 파일을 통해 힙 영역이 손상될 수 있으며, 서비스 거부(DoS)뿐 아니라 임의 코드 실행 가능성으로 이어질 수 있는 심각한 보안 취약점이다.

2-5. Opensource O프로그램 - 명령 실행 기능의 입력 검증 미흡으로 인한 Command Injection [CVE-2025-56814(가)]

Opensource O: Command Injection
[그림 8] 테스트 환경에서 명령어 삽입 성공 후 계산기 실행

해당 플러그인은 프로그램 내 버튼을 통해 외부 프로그램이나 명령어를 실행할 수 있도록 설계되어 있다. 그러나 사용자로부터 입력받은 명령 문자열을 적절히 필터링하거나 이스케이프 처리하지 않고 운영체제 쉘에 직접 전달하는 로직이 확인되었다.
이로 인해 공격자는 &, | 등의 쉘 메타문자를 이용해 원래 의도와 무관한 임의의 명령어를 실행할 수 있다. 해당 취약점은 원격 코드 실행(RCE)로 이어질 수 있으며, 시스템 장악·데이터 유출·서비스 마비 등 심각한 피해를 유발할 수 있다.

2-6. Opensource O프로그램 - 시각 정보 조작을 통한 장애물 은폐

Opensource O: 시각 정보 조작을 통한 장애물 은폐
[그림 9] 화면 변조 전후 비교 (좌: 변조 전, 우: 변조 후)

공격자는 특정 시각화 규칙 파일을 복사한 뒤, 위험 표식을 정의하는 항목을 제거 또는 주석 처리한 수정본을 생성하고 원본 파일을 교체할 수 있다. 대상 프로그램은 파일 내용의 무결성을 검증하지 않고, 이름만 일치하면 그대로 로드하여 시각화에 사용한다.
이로 인해 해도 렌더링 과정에서 수중 장애물과 같은 위험 표식이 표시되지 않게 되며, 항해자가 이를 인지하지 못할 경우 안전 운항에 심각한 위협이 될 수 있다.

2-7. S사 O프로그램 - 디렉터리 생성·복사 과정의 경로 검증 미흡으로 TOCTOU기반 권한 상승

S사 O: 권한 상승
[그림 10, 11] 정상 실행 화면
S사 O: 권한 상승
[그림 12] Junction 디렉터리 삽입

해당 취약점은 S사 O프로그램의 디렉터리 생성 및 파일 복사 과정에서 발생한다. 프로그램은 대상 경로의 존재 여부를 확인한 후, 존재하지 않으면 디렉터리를 생성하고 파일을 복사하는 절차를 수행한다.
그러나 이 과정에서 각 단계 사이에 경로의 무결성을 재검증하지 않으므로, 공격자가 경로를 삭제한 뒤 심볼릭 링크(Junction)로 외부 경로를 지정할 수 있다. 이로 인해 원래 의도된 위치가 아닌 관리자 전용 디렉터리에 파일을 생성·변경하거나, 임의의 실행 파일을 덮어쓸 수 있다.
이러한 구조는 전형적인 TOCTOU(Time-of-Check to Time-of-Use) 취약점이며, 로컬 권한 상승(LPE), 중요 파일 무결성 훼손, 임의 코드 실행 등의 보안 위협으로 이어질 수 있다.

2-8. S사 O프로그램 - 저장 장치 접근 권한 설정 취약점에 따른 System DoS 및 SAM Hive 덤프

해당 취약점은 라이선스 인증 확인을 수행하는 서비스 구성 요소에서 발생한다. 서비스는 하드웨어 정보를 기반으로 고유 식별값(System ID)을 생성하는 과정에서 로컬 디스크 장치에 직접 접근한다. 이때 디스크 장치에 대한 접근 권한이 모든 사용자 (EVERYONE) 그룹에 읽기/쓰기(RW)로 부여되어 있어, 비관리자 계정도 원시 디스크에 직접 읽기·쓰기 작업을 수행할 수 있다.

S사 O: System DoS
[그림 13, 14] 테스트 환경에서 부팅 불능 상태에 빠진 장면
S사 O: System DoS
[그림 15] 테스트 환경에서 SAM/SYSTEM 덤프를 통한 권한 상승 시도
  • System DoS 공격자는 원시 디스크의 부트 섹터(VBR) 일부를 변조하여 파일 시스템 메타데이터($MFT) 의 시작 위치를 손상시킬 수 있다. 이로 인해 운영체제가 정상적으로 부팅되지 않아 시스템이 마비된다.
  • Local Privilege Escalation (LPE) 동일한 권한 설정 문제를 악용하면, 공격자는 시스템 구성 파일(SAM 및 SYSTEM 하이브) 을 원시 디스크에서 직접 읽어낼 수 있다. 이 데이터로부터 계정 해시를 추출하고, 해당 해시를 활용한 Pass-the-Hash(PtH) 공격을 통해 관리자 권한의 셸을 획득할 수 있다. 이 취약점은 단일 권한 설정 오류가 서비스 거부(DoS)와 로컬 권한 상승이라는 두 가지 심각한 보안 위협을 모두 야기할 수 있다는 점에서 치명적이다.

3. 우수 프로젝트 전시 판넬

우수 프로젝트 설명