보안 카메라 로그인 페이지에 GitHub 관리자 토큰이 포함돼 출하됨
요약
Hanwha Vision 보안 카메라 펌웨어 분석 결과, 관리자 권한을 가진 GitHub 토큰과 하드코딩된 AES 키가 포함된 보안 취약점이 발견되었습니다. Vite 빌드 설정 오류로 인해 CI 환경 변수가 제품에 노출되었으며, 동일 모델군에서 공통된 암호화 키가 사용된 것으로 확인되었습니다.
핵심 포인트
- Vite 빌드 변수 설정 오류로 CI 환경 변수(GitHub 토큰 등)가 펌웨어에 노출됨
- 하드코딩된 AES 키와 IV가 동일 모델군에서 공통 사용되어 보안 취약점 발생
- GitHub 관리자 토큰 유출로 인해 조직 내 수백 개 저장소의 관리 권한 위험 노출
- Claude Code를 활용한 바이너리 분석을 통해 암호화된 루트 파일 시스템 추출 성공
- 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 주소도 포함돼 있었음 -
이 주소가 외부와 통신하지 않는 내부 서비스에 임의로 사용된 것인지, 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 토큰이 펌웨어에 포함된 것은 잘못이지만, 신고 접수와 해결은 매우 신속하게 이뤄졌음
AI 자동 생성 콘텐츠
본 콘텐츠는 GeekNews의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기