해당 페이로드는 개발 환경에 특화된 다단계 자격 증명 탈취 도구였다.
악성 코드는 개발자의 로컬 파일과 환경 변수에서 다음과 같은 고가치 인증 정보를 찾았다.
op 세션이 열린 상태일 경우 1Password CLI 데이터이 공격은 단순한 정보 탈취에 그치지 않았다. 악성 코드는 감염된 시스템에 장기 접근을 유지하려는 시도도 수행했다.
보안 권고에서 확인된 흔적은 다음과 같다.
~/.local/share/kitty/cat.py~/Library/LaunchAgents/com.user.kitty-monitor.plist/var/tmp/.gh_update_state/tmp/kitty-* 형태의 임시 파일또한 다음과 같은 실행 흔적이 나타날 수 있다.
cat.py를 실행하는 Python 프로세스__DAEMONIZED=1을 가진 프로세스운영체제별 지속성 방식은 다음과 같다.
이번 사건은 단발성 문제가 아니라는 점에서 특히 주목받았다.
2025년 8월, 공격자들은 이미 Nx npm 패키지 공급망 공격을 실행한 바 있다. 당시 악성 nx 패키지는 시스템을 스캔해 자격 증명을 수집하고 피해자의 GitHub 계정에 저장소 형태로 업로드했다.
이 두 사건은 몇 가지 중요한 현실을 보여준다.
Nx 팀에 따르면 이번 악성 확장은 다른 보안 사고로 유출된 개발자의 GitHub 자격 증명을 이용해 게시된 것으로 추정된다. 이를 통해 공격자는 정상적인 배포 보호 장치를 우회할 수 있었다.
다음 조건에 해당하면 위험에 노출됐을 수 있다.
노출 시간:
영향 가능 대상:
이 시간 동안 설치됐다면 해당 개발 환경의 자격 증명이 유출됐을 가능성을 고려해야 한다.
다음 항목을 즉시 확인해야 한다.
하나라도 발견되면 시스템이 침해됐다고 가정해야 한다.
가능한 노출이 있다면 다음 조치를 권장한다.
cat.py 및 __DAEMONIZED=1 환경 변수를 가진 프로세스를 종료한다.~/.local/share/kitty/cat.py~/Library/LaunchAgents/com.user.kitty-monitor.plist/var/tmp/.gh_update_state/tmp/kitty-*macOS에서는 삭제 전에 다음 명령으로 LaunchAgent를 먼저 해제해야 한다.
launchctl unload ~/Library/LaunchAgents/com.user.kitty-monitor.plist
예:
침해가 확인되었다면 가장 안전한 방법은 시스템을 깨끗한 이미지로 재설치하고 새 자격 증명으로 복구하는 것이다.
이번 사건은 현대 소프트웨어 개발에서 공급망이 개발 도구까지 확장되었다는 사실을 다시 보여준다.
코드 편집기 확장, 빌드 시스템, 패키지 관리 도구는 모두 개발 환경 깊숙이 접근할 수 있기 때문에 공격자에게 매우 매력적인 목표가 된다.
그리고 이 사건이 보여준 것처럼 몇 분짜리 노출만으로도 개발자의 핵심 비밀 정보가 탈취될 수 있다.
조직 입장에서는 다음이 중요해지고 있다.
Comments
0 comments