원문은 아래에서 확인 가능합니다.
데이터 보호 방법이 의미 있을 것 같아서 그부분 위주로 정리 합니다.
https://palant.info/2023/01/25/ipinside-koreas-mandatory-spyware/
데이터 종류
wdata
ndata
udata
데이터 보호방법
- 로컬 웹 서버에 접근제어 모델이 없음
- wdata
- 1바이트 랜덤 데이터로 xor 연산하여 난독화됨
- 압축 알고리즘은 찾기 쉬운 GPL 라이선스의 오픈소스(LZO compress)
- 암호화는 공개키 암호를 사용
- 공개키 암호는 RSA를 사용하고 320 bit 키임, 1991년에 뚫린 330비트보다 작은 키임
- msieve라는 도구를 받아서 노트북에서 실행해보니 2시간 36분만에 개인키를 찾음
- ndata, udata
- AES-256 암호화만 되어 있음
- AES 키는 하드코딩
- CBC 모드를 사용. IV 전달 오류로 IV는 0으로 채워진 값으로 고정되어 항상 암호문 결과가 동일함
- openssl
- 1.0.1j 버전을 사용중 (6년전 지원이 종료된 버전)
- local server
- 서버가 단일 스레드로 동작 -> 일부러 연결을 끊지 않으면, 서비스 사용불가 공격이 됨 (로컬이니까 문제는 아님)
- 입력 값 길이가 없어 buffer overflow 공격이 가능 (sprintf를 사용했음)
문제 수정
- 2022년 10월 21에 KrCERT에 3개의 취약점 보고서 제출
- 11월 14일까지 개발사에 전달했음을 확인 -> 이후 연락 못 받음
- 개발사는 보고서는 받았으나, 1개만 받았다고 함
- 2월에 수정본 배포 계획이라고 함, 서비스 반영은 사이트가 정해야 함