오픈AI의 코덱스 자동 분류 작업에서 시작해 npm 배포 권한에 접근할 수 있는 공격 경로를 연구진이 재현했다. 경로에는 여러 자동화 작업과 담당자의 릴리스 삭제가 포함됐다.
보안업체 Depi는 11일 공개한 기술 보고서에서 깃허브(GitHub) 이슈 자동 분류 작업을 출발점으로 지목했다. 새 이슈가 등록되면 코덱스(Codex)가 제목과 본문을 읽고 적절한 분류표를 제안하도록 설계된 작업이다.
연구진은 외부인이 이슈를 등록해 자동 분류 작업을 실행시킬 수 있었다고 설명했다. 문제는 분류 대상인 이슈 본문이 코덱스에 작업 지시처럼 전달될 수 있다는 점이었다.
연구진은 이슈 본문에 자동 분류 작업의 지시문처럼 보이는 문장을 넣어 코덱스가 진단 명령을 실행하도록 유도했다. 명령에 쓰인 코드는 압축·인코딩된 형태였으며, 외부 자료에 숨긴 지시로 AI의 행동을 바꾸는 '프롬프트 인젝션' 기법이 사용됐다.
명령은 처음에 코덱스의 격리된 실행 환경 안에서 작동했다. 이 환경은 네트워크 접속을 막고 파일 쓰기 범위를 제한했다.
그러나 연구진은 깃허브 실행기의 진단용 통로가 임시 디렉터리에 노출된 점을 이용했다. 이를 통해 실행기 프로세스의 메모리에서 자동화 작업에 쓰이는 토큰을 찾아 작업 출력으로 되돌리는 경로를 재현했다. 겨냥한 것은 코덱스 이용자의 비밀번호가 아니라 자동화 작업의 접근 권한이었다.
연구진은 이 권한으로 깃허브 작업 캐시에 악성 파일을 끼워 넣을 수 있다고 설명했다. 다른 작업이 캐시를 복원한 뒤 파일을 실행하면 더 넓은 권한을 가진 작업에 영향을 줄 수 있다.
보고서는 가짜 코덱스 릴리스를 만든 뒤 담당자가 이를 삭제할 때 발생하는 이벤트를 이용해 npm 배포에 필요한 인증 정보를 얻는 단계도 제시했다. 공개 이슈 하나만으로 악성 패키지가 곧바로 발행되는 구조는 아니다. 이 경로에는 여러 작업과 담당자의 릴리스 삭제가 포함된다.
npm의 '신뢰 기반 배포'는 깃허브 같은 자동화 작업이 장기 보관하는 배포 토큰 없이 신원 확인을 거쳐 패키지를 게시하는 방식이다. 자세한 작동 방식은 npm 공식 문서에 설명돼 있다. 연구진이 제시한 경로는 이 배포 절차에 이르기 전 자동화 작업의 권한이 연쇄적으로 노출될 수 있음을 보여준다.
npm은 자바스크립트 소프트웨어 패키지가 배포되는 저장소다. 공격자가 배포 권한을 얻으면 개발자가 정상 업데이트로 받아들이는 패키지에 악성 코드를 넣을 수 있지만, Depi 보고서에는 악성 코덱스 버전이 실제 npm에 게시돼 이용자에게 전달됐다는 내용이 없다. Depi는 문제를 버그바운티 창구로 신고했고 오픈AI가 핵심 취약점을 수정했다고 전했다. 현재 공개된 코덱스 이슈 분류 설정에는 작업 공간을 읽기 전용으로 제한하는 항목이 들어 있다.
<Copyright ⓒ TokenPost, unauthorized reproduction and redistribution prohibited>
Most Popular