- Hanwha Vision 카메라 펌웨어의 웹 관리 UI 파일 약 30개에 동일한 GitHub 토큰이 들어 있었고, 이 토큰은 조직 내 수백 개 저장소에 관리자 권한을 보유했음
- 펌웨어의
fwupgrader는 하드코딩된 AES 키를 정적 테이블과 XOR해 복원한 뒤openssl로 루트 파일 시스템을 해독했으며, 키와 IV는 동일 모델군에서 공통으로 사용됐음 - Vite 빌드 변수가
process.env전체로 설정되면서 CI 작업의 환경 변수가 결과물에 기록됐고,GITHUB_NPM_TOKEN과 여러 내부 설정까지 카메라 펌웨어에 포함됨 - 약 500개 펌웨어를 같은 방식으로 조사해 62%를 추출했으며, GitHub 토큰이 발견된 펌웨어 3개에는 모두 같은 토큰이 들어 있었음
- Hanwha는 신고 후 12시간 이내에 토큰을 폐기했지만, CI 환경 전체를 클라이언트 결과물에 삽입하는 구성은 자격 증명과 내부 인프라 정보를 제품에 노출할 수 있음
펌웨어 확보와 첫 번째 암호화 계층
- Hanwha Vision 웹사이트는 카메라 모델별 펌웨어 이미지를 공개해 파일을 내려받아 분석할 수 있었음
binwalk로 이미지를 조사하자 카메라용 AI 구성요소가 담긴 별도 tarball과 암호화된fwimage.tgz가 발견됨- Matt Brown의 Hanwha 펌웨어 복호화 분석에 따라
HTW와 모델 번호를 결합한 암호를 사용함- 분석 대상에서는
HTWXNP-9300RW가 작동함
- 분석 대상에서는
- 해제된 tarball 안에는 다른 방식으로 암호화된 또 하나의
fwimage.tgz가 있어 기존 복호화 절차를 그대로 재사용할 수 없었음
fwupgrader에서 복호화 방식 복원
- 외부 tarball에 포함된
fwupgrader바이너리를 Ghidra와 Claude Code로 분석해 실제 루트 파일 시스템을 추출함 fwupgrader에는 복호화 방식을 감추는 난독화가 적용돼 있었음- AES 키를 바이너리 내부의 작은 정적 키 테이블과 XOR한 뒤 실행 중 재조립함
- IV는 바이너리에 평문으로 들어 있음
openssl명령 조각도 같은 방식으로 XOR 난독화됨
- 복원된 명령은 SHA-256과 AES-256-CBC를 사용하는 다음 형태임
openssl enc -md sha256 -aes-256-cbc -d \ -K <KEY> -iv <IV> -in <INPUT> -out <OUTPUT> - 키와 IV는 하드코딩돼 동일 모델군에서 공통으로 사용됐음
KEY = dfa049bb922e63e2decc764af5628068e5b7a2662e479a615b14643e567579b0 IV = 53f926801b81454a4f889c9a390db6e6
펌웨어에 포함된 GitHub 관리자 토큰
- 추출한 루트 파일 시스템을
trufflehog로 검사하자 동일한 GitHub 토큰이 약 30개 파일에서 중복 발견됨 - 이 토큰은 Hanwha의 GitHub 조직에 속한 수백 개 저장소에 관리자 권한을 가지고 있었음
- 카메라 UI는 Vite로 빌드되며, 빌드 변수 하나가
process.env전체로 설정돼 CI 작업의 전체 환경이 결과 파일에 기록된 것으로 확인됨var W = { DATAPORT: "9090", GIT_LFS_SKIP_SMUDGE: "1", npm_command: "run-script", KUBERNETES_SERVICE_PORT_HTTPS: "443", GITHUB_NPM_TOKEN: "<snip>:ghp_…REDACTED…", npm_config_userconfig: "/home/docker/.npmrc", // etc } - 실제 카메라가 없어 동작 여부는 검증하지 못함
- 관리 UI에 접근한 사용자에게 토큰이 네트워크로 전송됐을 가능성이 있음
- 파일이 디스크에만 존재하고 실제로 제공되지 않았을 가능성도 남아 있음
CI 환경에 포함된 DoD 주소
- 노출된 환경 변수에는 미국 국방부에 할당된 IP 주소도 포함돼 있었음
SWARM_MASTER_NFS_ADDRESS:55.101.212.23OTEL_ELASTIC_URL:http://55.101.212.21:5601/<snip>CIMIP:55.101.211.213
- 이 주소가 외부와 통신하지 않는 내부 서비스에 임의로 사용된 것인지, Hanwha와 미국 국방부의 관계에서 비롯됐는지는 확인되지 않음
- Hanwha Vision은 Samsung Techwin으로 설립된 영상 감시 기업이자 Hanwha Group의 자회사임
- 과거 제품에는 K9 Thunder 자주포, K10 탄약운반장갑차, K2 Black Panther 하위 시스템, SGR-A1 경계 로봇이 포함됨
- SGR-A1은 무장 경계 로봇임
- CI를 Hanwha의 중앙 조직이 제공하고 계열사 Hanwha Aerospace나 Hanwha Defense USA의 요구로 관련 변수가 공유됐을 수도 있으나, 이는 확인되지 않은 추측임
전체 펌웨어 조사
- 우연한 단일 사례인지, 서로 다른 토큰이 더 있는지 확인하기 위해 Hanwha 웹사이트에서 내려받을 수 있는 카메라 펌웨어를 수집함
- 약 600개 카메라 가운데 펌웨어가 제공되는 모델을 대상으로 약 500개 펌웨어를 확보함
- 같은 방법으로 62%를 추출할 수 있었으며, 나머지가 실패한 이유는 확인하지 못함
- GitHub 토큰이 들어 있던 펌웨어는 3개였고, 모두 동일한 토큰을 포함했음
신고와 대응
- 토큰 위치를 식별할 수 있는 최소한의 정보를 Hanwha의 공개 보안 신고 이메일로 전달함
- Hanwha는 신고 후 12시간 이내에 응답하고 해당 토큰을 폐기함
- GitHub 토큰이 펌웨어에 포함된 것은 잘못이지만, 신고 접수와 해결은 매우 신속하게 이뤄졌음