지난 1 년 동안, @pewdiepie 는 개인 자체 호스팅 컴퓨팅의 가장 가시적인 옹호자 중 하나로 변모해 왔으며, 이를 지켜보는 것은 진정한 즐거움이었습니다.
2025 년 말 즐거운 실험으로 시작된 것 (모드 GPU 탑재 홈 장비에서 오픈소스 모델 실행, '위원회'에서 투표하는 챗봇, 단백질 접힘 연구에 기증된 여유 컴퓨팅 파워)은 약 12 개월에 걸쳐 명확한 사명을 가진 것으로 성숙해졌습니다.
2026 년 5 월 31 일, Odysseus 라는 이름의 무료 오픈소스 자체 호스팅 AI 워크스페이스로 등장했습니다. 그는 이를 구독 모델에 대한 일침으로 솔직하게 표현했습니다: 로컬 우선, 프라이버시 우선, 원격 측정 없음, 당신의 데이터는 소수의 대기업으로 흘러가지 않고 당신의 하드웨어에 머무릅니다.
그의 영향력을 가진 사람이 로컬 추론을 주류의 비기술적 일반 대중 앞에 내세우는 것은 프라이버시 업계가 수년간 원해 왔던 종류의 일이며, 나는 이를 응원합니다.
저는 또한 이 소프트웨어의 공인된 배포를 테스트하다가 단 한 번의 클릭으로 이 서버 중 하나를 장악할 방법을 찾아낸 사람입니다. 이 두 가지는 상충되지 않습니다. 이렇게 야심차고 빠르게 출시된, 이렇게 새로운 범주의 소프트웨어야말로 흥미로운 보안 버그가 존재하는 곳이며, 이를 조기에 발견하는 것이 나중에 프로젝트가 신뢰를 얻는 방법입니다.
그러니 돕는 정신으로, 처음부터 끝까지 설명된 전체 공격 체인과 이것이 우리가 구축하고 있는 시대에 대해 말하는 바를 여기에 소개합니다.
자물쇠 없는 문, 그리고 겉보기에는 무해해 보였던 포트
Odysseus 는 SSH 를 통해 접근하는 원격 GPU 머신에 무거운 작업을 넘길 수 있습니다. SSH 는 한 컴퓨터가 다른 컴퓨터에서 명령을 실행하는 표준 방식입니다.
따라서 소수의 내부 엔드포인트는 명령 셸에 접근할 수 있습니다. 명령 셸은, 접근할 수 있다면 머신이 거의 모든 것을 하도록 만들 수 있는 원시 명령줄입니다.
현명하게도, 이러한 엔드포인트는 거의 모두 호출자가 관리자인지 확인하는 것으로 시작합니다.
예외는 원격 서버에 설치된 Python 패키지를 나열하는 작업을 하는 조용한 작은 엔드포인트이며, 그 예외에서 모든 것이 무너지기 시작합니다.
첫 번째 문제는 이 엔드포인트가 호출자를 식별하는 데 필요한 정보를 절대 수신하지 않는다는 점입니다. 따라서 관리자 확인을 전혀 수행하지 않으며, 원칙적으로도 할 수 없습니다.
그것 앞에 있는 유일한 장애물은 앱의 포괄적인 규칙인 로그인 요구입니다. 즉, 낯선 사람이 1 분 전에 등록한 계정을 포함한 모든 계정이 모든 형제 엔드포인트가 신중하게 보호하는 셸에 닿는 문에 도달할 수 있습니다.

구조적 근본 원인: 누가 호출하는지 볼 수 없는 핸들러는 누가 허용되는지 시행할 수 없습니다. 아래에서 볼 수 있습니다.

그 자체로는 견딜 수 있을지 모르지만, 이 엔드포인트가 실제 작업을 수행하는 방식에 두 번째 문제가 있으며, 이것이 전체 공격의 핵심입니다.
원격 머신에 설치된 패키지를 확인하기 위해 프로그램은 명령어를 한 줄의 일반 텍스트로 작성하여 셸 이라고 불리는 시스템의 일부에 전달합니다. 셸의 임무는 해당 줄을 읽고 실행하는 것입니다.
셸을 가장 쉽게 상상하는 방법은 문자 그대로 서면 지침을 따르는 조수이며, 여기서 몇 가지 구두점은 특별한 의미를 갖습니다.
여기서 중요한 것은 세미콜론입니다. 셸은 이를 '해당 명령어가 끝났으니, 이제 다음 작업을 수행하라'로 읽습니다. 따라서 세미콜론이 포함된 한 줄은 여러 명령어가 연속으로 실행됩니다.


이 때문에 신중한 프로그램은 사람이 입력한 모든 것을 셸에 전달하기 전에 따옴표로 감쌉니다. 이는 해당 문자를 명령으로 실행할 수 없는 일반 텍스트로 처리하라고 셸에 지시하는 방법입니다.
개발자는 서버 이름과 전송되는 명령어에 대해 이를 올바르게 수행했으므로 해당 입력은 안전했습니다.
그러나 포트 번호는 따옴표 없이 라인에 그대로 삽입되었습니다. 포트는 항상 숫자일 뿐이며 숫자는 해를 끼칠 수 없다는 합리적으로 들리는 가정 때문이었습니다. (가상 환경 경로도 같은 이유로 동일한 인용되지 않은 방식으로 연결되었습니다.)
이 가정의 허점은 포트가 숫자일 필요가 없다는 것입니다. 포트는 웹 주소에서 직접 가져온 일반 텍스트로 도착하며, 요청을 하는 사람이 그 내용을 결정할 수 있습니다.
따라서 공격자는 22 대신 22; id; hostname # 을 입력합니다.
셸은 첫 번째 부분을 읽고 연결을 시도하다가 무해하게 실패한 후 첫 번째 세미콜론에 도달하여 공격자의 명령어 두 개를 순종적으로 실행하며, 끝에 있는 # 은 뒤따를 나머지 텍스트를 무시하라고 셸에 지시합니다.

하나의 세미콜론이 '원격 박스의 패키지 목록'을 '이 박스에서 내 명령어 실행'으로 바꿉니다.
이를 실행하는 데 필요한 것은 로그인된 세션과 조작된 웹 주소뿐입니다:

요청은 정상적인 패키지 JSON 과 함께 HTTP 200 을 반환하는 반면, 주입된 명령어는 서버 측에서 실행됩니다.
제가 몰래 넣은 명령어는 무해한 프로브였으며, 출력이 서버 자체 서비스 계정을 명명하며 돌아왔을 때 제 명령어가 머신 자체에서 실행되었음을 확인했습니다.

두 가지 결함을 합치면 로컬 그림은 한 문장으로 요약됩니다 - 모든 로그인된 사용자는 서버에서 원하는 명령어를 실행할 수 있습니다.
규모의 위험은 Odysseus 를 흥미롭게 만드는 바로 그 요소에 의해 더욱 부각됩니다.
구독자 1 억 명의 크리에이터가 대규모의 비기술적 일반 대중을 자체 호스팅에 성공적으로 온보딩한다면, 그 결과는 수천 개의 유사한 인스턴스가 유사하게 구성되고 유사하게 노출되는 단일 문화가 되며, 단일 문화는 웜이 좋아하는 것입니다.
@ashnichrist 님이 잘 말씀해 주셨습니다.
단 한 번의 클릭으로 만들기
'모든 로그인된 사용자'가 트리거할 수 있는 버그는 여전히 악의적인 내부자가 필요하다고 들리지만, 다음 단계는 그 요구사항마저 제거합니다. 피해자의 브라우저가 공격을 수행하게 만들기 때문입니다.
기술은 CSRF (사이트 간 요청 위조)이며, 이는 브라우저의 조용한 습관 하나를 이용합니다.
사이트에 로그인하면 브라우저는 작은 토큰을 저장한 후, 요청의 대상에만 기반하여 해당 사이트로 향하는 요청에 자동으로 토큰을 첨부하며, 어떤 페이지가 요청을 시작했는지는 고려하지 않습니다.

Odysseus 는 해당 토큰을 SameSite=Lax 정책으로 설정했습니다. 이는 합리적인 기본값이며 은밀한 백그라운드 요청에 토큰이 따라가지 못하게 차단하지만, 상위 탐색 (전체 탭을 이동시키는 일반적인 클릭)에서는 의도적으로 여전히 토큰을 보냅니다.
취약한 엔드포인트는 일반 링크에 응답하고, 요청 출처를 확인하지 않으며, 위조 방지 토큰을 사용하지 않기 때문에, 공격자는 매력적인 버튼이 있는 페이지를 호스팅하기만 하면 됩니다.
데모를 위해 저는 정확히 그런 페이지를 만들었습니다 - 명랑하고 아이들에게 친숙하며 가장 중요하게는 설정에 충실한 CoComelon 헌정 페이지 - 동요 색상, Comic Sans, 하나의 큰 '재생' 버튼.

버튼은 노래 링크가 아닙니다. 클릭 핸들러는 실제 대상을 작은 일회용 팝업 창에서 열어, SameSite=Lax 세션 쿠키를 포함한 악성 요청이 상위 탐색으로 발생하게 하며, 포커스를 빼앗지 않고 잠시 후 자동으로 닫힙니다. 열리는 주소는 명령어가 '포트'에 숨겨진 패키지 엔드포인트입니다:

한 번의 클릭이 이루어지는 동안, 유인 페이지는 카메라를 위한 쇼를 펼칩니다: CoComelon 아트워크가 섬광처럼 화면을 가로질러 깜빡이고, 터미널이 장악의 각 단계를 설명하며 스스로 타이핑됩니다. (터미널 텍스트는 데모를 위한 연출된 내레이션입니다. 실제 실행은 팝업이 방금 만든 조용한 요청입니다.)

영향을 구체적으로 만들기 위해, 한 번의 클릭은 세 가지 일을 했습니다: 서비스 인터페이스를 명백한 시각적 훼손 (전체 화면 '🍉 당신의 Odysseus 가 CoComelon 당했습니다 🍉' 오버레이, 수박 아이콘, 앱 제목 변경) 을 위해 다시 작성했고, 서비스 사용자가 읽을 수 있는 모든 것을 읽었으며, 가장 영구적으로는 앱의 auth.json 에 숨겨진 관리자 계정을 바로 기록했습니다.

고통스러운 점: 재부팅은 명백한 혼란을 정리하지만 공격자의 계정은 유지됩니다.
라이브 데모는 다음과 같습니다.
이것이 에이전트 도구에서 가장 나쁜 버그인 이유
2026 년에 단일 인스턴스 손상이 당신을 걱정하게 해야 하는 이유는 하나의 인스턴스에서 이런 일이 멈추는 경우가 드물기 때문이며, 올해를 정의한 웜이 그 이유를 보여줍니다.
2025 년 9 월에 처음 발견되고 이후 더 큰 파도로 돌아오는 자기 전파 npm 웜인 Shai-Hulud 는 잔혹할 정도로 단순한 루프를 실행합니다 - 악성 설치 시 스크립트가 패키지가 설치되는 즉시 실행되어 머신에서 npm 및 GitHub 토큰, SSH 키, 클라우드 자격 증명과 같은 비밀을 스캔한 다음, 도난당한 자격 증명을 사용하여 피해자의 다른 패키지의 백도어 버전을 게시하므로, 각각의 새 설치가 공격자의 추가 노력 없이 다음 발사 지점이 됩니다.
가치 있게 가져가야 할 교훈은 웜의 가장 어려운 작업이 자격 증명을 수집하고 다음 머신으로 가는 방법을 찾는 것이라는 점입니다.
에이전트 AI 어시스턴트는 웜에게 이 두 가지를
모두
공짜로 제공합니다. 강력한 비밀을 보유하고 다른 머신에 접근하는 것이 어시스턴트의 전체 목적이기 때문입니다.
Odysseus 에 대한 단 한 번의 클릭은 코드 실행보다 훨씬 더 많은 것을 가져왔습니다. 저장된 API 키, 데이터베이스, 구성, 그리고 도구가 관리하는 원격 GPU 서버에 로그인하는 데 사용하는 SSH 액세스의 사전 수집된 금고를 넘겨주었습니다. 그것은 레이블이 바깥쪽을 향한 채 한 곳에 앉아 있는 자기 전파 공격이 실행되는 정확한 연료이며, 이를 사용하기 위한 플레이북은 이미 실제 환경에 존재합니다.

이 모든 것이 의미하는 바
가장 인상 깊었던 점은 실제로 서버를 장악한 버그가 고대적이라는 것입니다. 명령어 주입과 요청 위조는 2005 년의 개발자라면 인식할 수 있는 교과서적인 수정 방법이 있으며, 이들은 가장 미래지향적인 소비자 AI 소프트웨어 중 하나 내부에 살고 있었습니다. 이는 올해 업계 전반의 패턴으로, 헤드라인을 장식하는 AI 취약점은 반짝이는 새 도구 내부의 고전적인 결함인 것으로 드러납니다.
프런티어는 이러한 기본 원칙을 완전히 강제로 남겨두고, 그 위에 강력하고 빠르게 움직이며 종종 과도하게 신뢰되는 레이어를 쌓고 그 레이어를 당신이 소유한 모든 것에 연결했습니다.

아직 배선되지 않은 초인종
배울 가치가 있는 세부 사항이 하나 더 있습니다. 그것은 코드와 가장 관련이 없는 부분이기 때문입니다.
처음 이를 보고하려고 했을 때, 리포지토리에는 보안 정책이 있었습니다 - 사려 깊고 합리적인 배포 지침이 포함된.
그러나 보고 섹션은 잠재적 보고자를 '가능한 경우 GitHub 보안 권고'로 안내했으며, 처음에는 그 비공개 채널이 열려 있지 않았습니다.
낯선 사람이 프로젝트에 대해 찾을 수 있는 가장 민감한 정보가 비공개로 도착할 곳이 없었습니다. 그 격차는 이후 해소되었습니다 - 명령어 주입 체인은 이제 중대한 권고로 추적되며 수정 사항이 병합되었습니다 - 그러나 초기의 부재가 문제를 드러냅니다.
다행히도, 저는 유지 관리자 중 한 명과 대화할 수 있었고, 그분이 권고 기능을 열어 주셨습니다 - 그 이후로 몇 가지 다른 수정 사항을 제출했습니다.

그 모든 것은 차치하고... 이것은 시대의 징후입니다.
프로젝트는 이제 집 GPU 장비의 취미에서 단일 발표 기간 내에 1 억 명의 청중으로 성장하며, 보안 인프라 (나쁜 소식을 위한 개인 받은 편지함, 권고 워크플로우, 모델 출력을 적대적인 것으로 취급하는 습관)는 코드보다 뒤처지고, 코드는 청중보다 뒤처집니다.
이 순서는 적이 필요로 하는 것과 정확히 반대입니다.
대규모의 신뢰하는, 주로 비기술적인 팬 베이스가 같은 주에 같은 소프트웨어를 설치하고, 이미 신뢰하는 사람에 의해 그 소프트웨어를 가리키는 것은 가장 매력적인 대상입니다 - 거대하고, 균일하며, 이미 팔린 상태입니다.
이것은 환영 매트가 이미 깔려 있는, 웜이 원하는 정확한 단일 문화입니다.
따라서 이 이야기의 고무적인 절반은 코드가 완벽했다는 것이 아니라 (그렇지 않았습니다) 프로젝트가 초인종을 배선하고 노크 소리를 듣고 약 하루 만에 수정 사항을 출시했다는 것입니다.
이렇게 빠르게 움직이고 이 규모의 청중 앞에 있는 소프트웨어의 경우, 그 반사 신경 (비공개 채널 열기, 신속하게 응답하기, 공개적으로 수정하기)은 처음부터 완벽한 기록을 가졌던 것보다 더 가치가 있습니다. 결국, 이것이 자체 호스팅에 대한 신뢰가 실제로 얻어지는 방법입니다.
지금은... 여기까지입니다!

https://x.com/Grummz/status/2061300454907371953
https://x.com/ashnichrist/status/2061481763516399737





