8호03 / 05
Tailscale SSH 'Tailworm' — 패치 전 공개된 11건, 포워딩 경로로 루트와 등록 키까지
주말에 패치 없이 공개돼 논란이 된 보고서입니다. Tailscale의 공식 조사 페이지는 이 글 작성 시점에 열리지 않아 SecurityWeek(10월 27일, 28일 갱신)와 BleepingComputer(10월 27일) 보도를 바탕으로 정리합니다.
보고서
- Cyberdione Labs의 Erica Windisch. 10월 22~24일 테스트, 10월 25일 공개.
- Tailscale 클라이언트 1.104.2, headscale 0.29.5 대상 11건. 6건 높음, 그중 4건이 Tailscale SSH.
- 연구진은 빠른 인지가 수정을 앞당긴다고 주장했고, SNS에서는 비판을 받았습니다.
Tailscale SSH 결함
유닉스 소켓 포워딩(ssh -R/-L)의 경로 검사와 파일 작업이 루트로 수행됩니다. 경쟁 조건과 권한 강하 누락으로 인가된 세션이 특권 자원을 교체·접속·삭제할 수 있고, 결과는 루트 코드 실행, 등록 키 탈취, 임의 루트 파일 삭제입니다. 포워딩은 headscale에서는 자동 허용, SaaS에서는 규칙별 허용입니다.
공격자는 기기 하나를 먼저 장악해야 합니다(피싱, 취약한 웹 앱, 악성 패키지). 그 기기가 Tailscale SSH로 닿을 수 있고 규칙이 포워딩을 허용하는 서버가 대상입니다. 실험실에서 자동화 체인은 정책이 허용하는 모든 서버를 홉당 1초 미만으로, 자격증명이나 사용자 조작 없이 옮겨 다녔습니다.
이전 공지 TS-2026-004가 같은 소켓 코드 경로를 다뤄 1.98.9에서 고쳤는데, 이번 경쟁 조건은 검사와 사용 사이에 경로를 바꿔 그 검사를 우회합니다.
나머지
- 실험적 앱 커넥터: 검증 없이 공격자가 고른 목적지로 트래픽이 가고, 실제 목적지에 대해 ACL을 검사하지 않음. 클라우드 메타데이터 서비스와 내부망 도달 가능.
tailscale serve: 유닉스 소켓으로의 TCP 포워딩에 HTTP 경로에는 있는 보호가 없고, 마운트별 인가에 경쟁 조건.- headscale: 인증 없는 자원 고갈로 제어 서버 다운, 신규 기기 등록 차단.
- DERP 클라이언트: 악성 릴레이 응답의 무제한 읽기로 메모리 고갈.
Tailscale의 대응
- 엔지니어링 VP Mike Shaver: 보고서 도착 전부터 외부 전문가와 조사 중이었다. 대부분은 인가된 연결 이후, 특히 유닉스 권한과 SSH 포워딩의 문제다. 세션이 설정된 로컬 사용자보다 더 많은 일을 할 수 있을지는 몰라도, "인증되지 않은 공격자가 임의 기기에 접속하는 것과 같지 않다."
- "모두가 Tailscale SSH를 끄라고 권하지는 않는다."
- 10월 26일: 대부분 수정 완료, 테스트를 거쳐 10월 27일 안에 패치 클라이언트 목표.
- 10월 27일: 갱신된 보고서는 여러 수정이 공개 저장소에 올라갔으나 번호 붙은 릴리스에는 아직 없다고 함.
- 이후: 전체 결과와 보안 공지 4건 게시(SecurityWeek 갱신).
글에 없는 것
패치된 클라이언트 버전 번호, CVE 식별자, 공지 4건의 내용. 실제 악용 언급은 Tailscale과 보고서 모두 없습니다.
실무에서 할 일
패치 전: SSH 접근 정책을 필요한 사용자·기기로 줄이고, 포워딩이 필요 없으면 tailscaled 서비스 환경에 TS_SSH_DISABLE_FORWARDING=1을 넣고 재시작합니다. headscale을 쓴다면 포워딩이 자동 허용이라는 점을 기억하세요. 앱 커넥터는 실험 기능이니 끌 수 있으면 끕니다. 패치가 나오면 Tailscale 보안 공지에서 고쳐진 버전을 확인하고 전 노드를 올리세요. 이 글의 "번호 없음"은 보도 시점 기준입니다.
8호의 다른 글
요약으로 한 번에 보기 →- 01Node2Shell에서 HTTP2Shell로 — Brotli 디코더 RCE가 Node를 넘어 Python·Bun·Envoy까지
- 02macOS의 git·curl·python3는 아직 eMudhra 인증서를 믿는다 — 통보 11일째, 27.2 업데이트가 수동 조치를 되돌렸다
- 03Tailscale SSH 'Tailworm' — 패치 전 공개된 11건, 포워딩 경로로 루트와 등록 키까지지금 읽는 글
- 04CPython 실험적 JIT, 본선에서 빠진다 — PEP 836 철회, '끌고 갈 여력이 없다'
- 05Claude Code가 백그라운드 에이전트 전사를 30초마다 모델에 보낸다 — 상태 줄 다섯 단어에 지출의 16%
2026년 10월 28일에 올라온 글
그날 대시보드 →댓글
불러오는 중…