Security Disclosure
보안 공지: Railway 환경 변수 접근 가능성
Railway는 고객 환경 변수를 저장하는 시스템에서 비정상 활동을 발견했으며, 공격자가 암호화된 값과 일부 복호화된 값을 가져갔을 가능성을 알렸습니다. 모든 환경 변수와 자격 증명을 교체하라고 권고하는 한편, 조사 중 배포를 중단했습니다.
- 주제
에디터 노트
이번 사건에서 고객이 바로 맞닥뜨린 문제는 키 교체 권고와 배포 중단이 동시에 발생했다는 점입니다. Railway는 공격자가 이동하는 동안 추가 경로를 막고 키 폐기를 조율했다고 설명했고, 담당자도 늦은 공지에 대한 비판을 정당하다고 인정했습니다. 하지만 고객 댓글에는 키 교체 뒤 서비스를 다시 올리지 못했다는 사례가 나옵니다. 공지에 배포 중단 사실은 있었지만 기존 서비스를 재시작할 수 있는지까지 분명했는지를 두고 의견이 갈렸습니다. 댓글에 올라온 키 사용, 버킷 접근 사례는 이용자 보고이며 Railway의 최종 조사 결과와 구분해야 합니다. 환경 변수 자체가 침해 원인이라는 근거도 아직 없습니다. 댓글에서 지적했듯 비밀값을 저장한 시스템이 공격받았다면 런타임 주입 방식만으로는 이번 접근을 막았다고 단정하기 어렵습니다. 영향 범위와 침입 경로, 고객별 피해는 후속 조사 결과가 나와야 판단할 수 있습니다.
AI 요약
Railway는 10월 21일 오전 고객 환경 변수를 저장하는 시스템에서 비정상 활동을 발견했습니다. 조사 결과, 권한이 없는 제3자가 암호화된 환경 변수에 접근했고 일부 값은 복호화된 상태로 확보했을 가능성이 있다고 밝혔습니다. 환경 변수에는 API 키, 데이터베이스 자격 증명, 레지스트리 인증 정보가 들어갈 수 있습니다.
Railway는 이번 공격이 AI 추론 제공업체를 노린 공격 흐름의 일부라고 보고 있습니다. 관련 제공업체에 키 폐기를 요청했으며, 영향 범위가 일부 사용자에 한정될 가능성이 있지만 예방 차원에서 모든 사용자에게 Railway에 저장한 환경 변수와 비공개 레지스트리 자격 증명을 즉시 교체하고 서비스 로그를 살펴보라고 권고했습니다. 조사하는 동안 모든 배포를 중단해 새 버전을 배포할 수 없다고 안내했습니다. 영향받은 계정은 확인되는 대로 개별 연락하고, 공지와 상태 페이지에서 조사 결과를 갱신하겠다고 밝혔습니다.
Hacker News 반응
- @MattIPv4 — Railway Discord에서 여러 사용자가 Railway에 저장한 비밀값을 제3자가 실제로 사용했다고 확인했습니다. 공격자가 복호화된 환경 변수를 읽은 것으로 보입니다.
- @tptacek — 모든 것을 외부로 빼낼 수는 있습니다. 환경을 지속적으로 저장하는 파일이 없다면 프로세스 메모리에서 비밀값을 빼내는 일이 환경 변수에서 빼내는 것보다 특별히 쉬워지지는 않습니다. 환경 변수의 보안 문제는 주로 .profile이나 .envrc 파일에 값을 저장하는 관행에서 나옵니다. 이번 침해가 환경 변수 탓이라고 볼 근거는 없으며, 해당 값을 보관한 데이터베이스가 공격받았을 가능성이 있습니다.
- @ndneighbor — Railway의 보안 담당자는 공격자가 사용한 도구에 관해 공지에서 주장하지 않았다고 밝혔습니다. 협력업체와 논의한 결과 AI API 토큰과 자격 증명을 확보하려는 공격 흐름과 닮았고, 초기 포렌식에서도 이것이 주된 목표로 보였다고 설명했습니다. 공식 사후 보고서를 내기 전까지는 더 신중하게 말하겠다고 덧붙였습니다.
- @alpineman — 사고가 시작된 지 10시간이 지나도록 Discord에서는 Railway 전용으로 만든 키가 사용됐다는 이야기가 나왔습니다. 배포 중단은 12시간 넘게 이어졌고, 고객 이메일은 그제야 도착했습니다. Discord를 확인하지 않았다면 알지 못했을 것 같습니다.
- @ndneighbor — Railway 담당자는 공지 시점에 대한 비판이 정당하다고 인정했습니다. 공격자가 시스템 내부를 옮겨 다니는 동안 침해 범위와 추가 공격 경로를 확인하고, 외부 업체와 키 폐기를 조율하느라 몇 시간이 걸렸다고 설명했습니다. 고객에게 키 교체를 권고하면서 침해가 계속되는 상황을 만들지 않으려 했으며, 서비스 복구와 조사가 끝난 뒤 사후 보고서를 내겠다고 밝혔습니다.
- @vintagedave — 새 키를 교체했지만 배포를 재개할 수 없어 서비스가 멈췄습니다. 공지에서 배포 중단을 언급했지만, 기존 배포를 다시 시작해 새 환경 변수를 적용할 수 없다는 뜻인지는 알기 어려웠습니다. 키를 바꾸라고 권고하면서 서비스에 미치는 영향도 명확히 알려야 했습니다.
- @justinai6 — 키 교체 권고는 비용과 서비스 운영에 큰 영향을 줍니다. 새 키를 적용할 배포가 막힌 상황에서 고객도 나쁜 선택지만 남았다고 봅니다. Railway가 공격을 막는 데 시간을 썼고 피해를 줄였을 가능성도 있어 당시 판단을 단정하기 어렵습니다.
- @dylanz — 지금까지 S3 버킷 접근, OpenAI 키 사용, Valkey 인스턴스의 읽기 전용 작업을 확인했습니다. OpenAI는 비정상 사용을 감지해 키를 자동 폐기했습니다.
- @paxy — 보안 침해 공지마다 공격자가 AI를 썼다고 내세워 보안 시스템 관리 책임을 덜려는 것처럼 보입니다. AI가 취약점을 찾을 수 있었다면 내부 레드팀이 먼저 찾아냈어야 합니다.
- @nrmitchi — 공지는 공격자가 AI를 썼다고 주장하지 않습니다. AI 추론 서비스가 공격의 목표였을 수 있다고 했을 뿐이며, 훔친 자격 증명을 현금화하기 쉬운 점을 설명한 것으로 보입니다.
원문: Railway 블로그 / 번역·요약: Trawling