- OpenCode의 구버전에서 인증 없이 임의 코드를 실행할 수 있는 심각한 원격 코드 실행 취약점이 발견됨
- v1.1.10 이전 버전은 자동으로 HTTP 서버를 실행하며, 이 서버는 인증 절차 없이 임의 명령 실행·파일 읽기·터미널 세션 생성을 허용함
- v1.0.216 이전에는 웹사이트 방문만으로도 사용자의 로컬 환경에서 코드가 실행될 수 있었음
- 최신 버전(v1.1.10)에서는 서버가 기본적으로 비활성화되었지만, 활성화 시 여전히 인증이 없음
- 이 취약점은 CVE-2026-22812로 등록되었으며, 개발자와 사용자는 즉시 업데이트 및 설정 점검이 필요함
취약점 개요
- OpenCode는 오픈소스 AI 코딩 어시스턴트로, v1.1.10 이전에는 실행 시 자동으로 HTTP 서버(기본 포트 4096+) 를 시작함
- 서버는
POST /session/:id/shell,POST /pty,GET /file/content등의 엔드포인트를 제공 - 인증 절차가 없어 연결 가능한 모든 클라이언트가 사용자 권한으로 코드 실행 가능
- 서버는
- 서버 실행 시 사용자에게 시각적 표시가 없음, 노출 여부를 인지하기 어려움
- CORS 정책이
*.opencode.ai로 하드코딩되어 있어, opencode.ai 또는 하위 도메인에서 제공되는 페이지가 서버 API에 접근 가능- 해당 도메인이 침해되거나 XSS 취약점이 존재할 경우, 서버 활성화 상태의 모든 사용자가 공격 대상이 될 수 있음
공격 벡터
- v1.0.216 이전: 임의 웹사이트가 OpenCode 실행 중인 사용자의 로컬 머신에서 코드 실행 가능
- v1.1.10 이전: 로컬 프로세스나 localhost 페이지가 인증 없이 코드 실행 가능
- 모든 버전에서 서버가 활성화된 경우:
- 로컬 프로세스 및 localhost 페이지가 인증 없이 코드 실행 가능
-
--mdns플래그 사용 시 로컬 네트워크 내 모든 장치가 접근 가능 - 서버 실행 여부 표시 없음, 사용자가 노출 상태를 인지하지 못함
- opencode.ai 도메인 또는 하위 도메인에서 코드 실행 가능
공격 예시 (Proof of Concept)
-
로컬 공격: 서버가 실행 중일 때, 로컬 프로세스가
curl명령으로 세션 생성 후id > /tmp/pwned.txt명령 실행 가능 -
브라우저 기반 공격(v1.0.216 이전): 웹페이지에서
fetch요청을 통해 로컬 서버에 명령을 전달, 원격 스크립트를 다운로드·실행 가능- Firefox에서 동작 확인, Chrome은 로컬 네트워크 접근 보호로 사용자 확인창 표시 가능
사용자 대응 방안
-
opencode --version으로 버전 확인 후 v1.1.10 이상으로 업데이트 - 설정 파일에서
server.port또는server.hostname항목이 활성화되어 있는지 확인 -
--mdns플래그 사용 금지 (0.0.0.0에 바인딩되어 네트워크 전체 노출) - 서버를 반드시 사용해야 하는 경우, opencode.ai 및 하위 도메인 접속 금지
- 서버 활성화 시 로컬 프로세스가 인증 없이 접근 가능함을 인지해야 함
공개 일정
- 2025-11-17: 이메일로 최초 보고, 응답 없음
- 2025-12-27: GitHub Security Advisory 제출, 응답 없음
- 2025-12-29: 다른 사용자가 공개 보고
- 2025-12-30: v1.0.216에서 CORS 제한 적용
- 2026-01-09: v1.1.10에서 서버 기본 비활성화
- 2026-01-11: 전체 공개
권장 조치
- CORS를 최소한의 도메인으로 제한 (v1.0.216에서 적용)
- 서버 기본 비활성화 (v1.1.10에서 적용)
- 모든 서버 요청에 인증 절차 추가
- 서버 실행 시 사용자에게 명확한 표시 제공
-
--mdns옵션이 0.0.0.0에 바인딩됨을 문서에 명시 - 네트워크 통신 시 TLS 적용
- GitHub Security Advisory 및 CVE-2026-22812 공식 게시
- 보안 보고용 이메일 및 GHSA 알림 모니터링 강화
- OpenCode 유지보수자, opencode.ai, 사용자 간 신뢰 관계 명확화
참고
- CVE: CVE-2026-22812
- 영향받는 패키지: npm
opencode-ai - 최신 정보 및 문의: cy.md
Hacker News 의견들
-
유지관리자로서 이번 보안 리포트 대응을 제대로 못한 점을 인정함
사용량이 급격히 늘어나면서 이슈가 폭주했고, 이번 주에 전문가들과 만나 버그 바운티 프로그램과 보안 감사를 추진할 계획임- 버그 바운티나 감사에 돈을 쓰기보다는 조직 재정비와 직원 교육에 투자해야 함
모든 팀원이 OWASP Insecure Design 가이드를 이해하고 실천하는 게 더 중요함 - 처음엔 긍정적으로 봤지만, 취약점 제보자들이 여러 번 연락했는데도 답이 없었다는 점이 걱정됨
OpenCode가 유명한 오픈소스 코딩 에이전트인 만큼, 이미 악용됐을 가능성도 있음
지금이라도 gVisor 같은 샌드박스 환경에서 모델을 돌리는 게 필요하다고 생각함
빠르게 대응하지 않으면 더 많은 RCE 취약점을 노리는 공격자가 생길 수 있음 - 프로젝트가 너무 빠르게 성장하면서 조직 관리가 코드 개발보다 더 중요한 시점에 온 것 같음
혹시 아나키즘식 조직 운영 원칙 같은 것도 참고하고 있는지 궁금함 - 그냥 Claude에게 보안 문제를 고치라고 하면 되는 거 아님?
- 솔직하게 상황을 공유하고 책임을 지려는 모습이 보기 좋음. 쉽지 않은 일인데 감사함
- 버그 바운티나 감사에 돈을 쓰기보다는 조직 재정비와 직원 교육에 투자해야 함
-
많은 사람들이 OpenCode 같은 도구를 로컬 환경에서 권한 분리 없이 실행하고 있음
플러그인들도 기본적으로 무제한 접근을 전제로 설계되어 있고, 리소스 사용량도 많음
최소한 dev-container나 VM 안에서 실행하고, SSHFS나 Samba로 필요한 파일만 연결하는 게 좋음
귀찮다면 월 5달러짜리 VPS를 써도 됨- dev-container나 VM 설정 방법을 구체적으로 알려줄 수 있는지 궁금함
- Claude는 실행할 때마다 권한 요청을 하니 그 점은 조금 더 안전함
- AI 샌드박스로는 fly.io의 sprites.dev가 꽤 괜찮음
서버를 qemu로 돌릴 땐 quickemu를 추천함
zed의 SSH remote 기능도 유용해서 Claude Code나 OpenCode를 함께 쓸 수 있음
-
CORS 수정으로 외부 웹사이트의 악용은 막았지만, 근본적으로 localhost에서 코드 실행이 가능한 구조가 문제임
Neovim은 기본적으로 도메인 소켓을 사용하고, VS Code의 SSH 데몬은 인증 절차가 있음
인증 없이 클라이언트 입력을 실행하는 로컬 서버는 LCE(Local Code Execution) 취약점이며,
브라우저 요청을 통해 접근 가능해지면 RCE(Remote Code Execution) 로 확대됨 -
인증 없이 RCE가 가능한 HTTP 엔드포인트를 CLI 도구에 넣고, 거기에 CORS 우회까지 추가했다니 충격적임
- AI 연구소들이 튜토리얼 코드로 모델을 학습시키는 걸 멈춰야 할 듯함
- 서버가 이렇게 열려 있는데 CORS 정책이 “*”이 아니었던 게 오히려 놀라움
- “그냥 분위기(vibe)로 만든 코드” 같다는 반응도 있음
-
취약점 공개 일정이 문제임
2025-11-17에 보고됐는데, 여러 차례 연락에도 응답이 없었음- 지금은 개발자들이 진지하게 대응하려는 것 같음
GitHub 이슈 코멘트 참고 - “요즘은 다 vibe coding 중이라 보안 이슈는 bad vibes”라는 농담 섞인 반응도 있음
- 지금은 개발자들이 진지하게 대응하려는 것 같음
-
서버가 기본적으로 꺼져 있다 해도, 켜지면 여전히 심각함
localhost에서 아무 웹페이지나 코드 실행이 가능하고, 인증 없이 로컬 프로세스도 실행 가능함
사용자에게 서버 실행 여부를 알려주는 표시도 없음
TUI 앱은 일반적으로 이런 일을 하지 않기 때문에 신뢰받는데, 이번 일은 그 신뢰를 심하게 훼손함- 왜 하필 TUI 앱이 문제냐는 질문도 있었음
- 대안으로는 Factory의 Droid가 괜찮다는 의견도 있음
-
OpenCode가 YC(와이콤비네이터) 의 지원을 받는다는 점이 놀라움
YC라면 더 나은 보안 문화를 장려할 줄 알았음- YC는 결국 돈이 전부라는 냉소적인 반응도 있었음
- 예전에 YC 출신 Flock이 비밀번호를 53번 하드코딩한 사례도 있음
관련 내용은 이 댓글 참고 - 게다가 OpenCode가 Auth provider 제품도 만든다는 점이 아이러니함
-
OpenCode가 자원봉사 프로젝트인 줄 알았는데, 알고 보니 대형 투자자들의 지원을 받는 기업형 프로젝트였음
- 공식 GitHub 저장소 외에도 charm.sh 팀이 만든 경쟁 프로젝트가 있었음
- 아마도 crush, roocode, kilo 같은 프로젝트를 떠올린 것 같음. 이들은 아직 대형 후원은 없음
-
기능만 계속 추가하고 핵심 유지보수를 소홀히 해서 사용을 중단했음
여러 모델을 동시에 쓰는 게 목적이었지만, 컨텍스트 공유가 비효율적이라 실용성이 떨어짐
지금은 Claude Code와 Codex를 병행 사용 중임
그래도 여러 모델을 통합할 오픈 플랫폼의 필요성은 여전히 큼 -
처음엔 Aider를 좋아했지만, 유지보수가 거의 안 돼서 문제를 자주 겪음
OpenCode를 설치하려다 이번 사태를 보고 망설이게 됨
모델에 종속되지 않은 오픈소스 CLI LLM 어시스턴트가 이렇게 부족한 게 놀라움