🇰🇷 한글 설명
LangBot의 플러그인 런타임(langbot_plugin 0.4.17 이하)에서 디버그용 WebSocket 서버가 인증 없이 0.0.0.0:5401 포트에 노출되는 취약점이 발견되었습니다. 공격자는 인증 없이 임의의 디버그 플러그인을 등록하여 모든 메시지 내용을 탈취하거나 메시지를 조작하고, LLM 모델을 오용하거나 서비스 거부(DoS) 공격을 수행할 수 있습니다.
💡 쉬운 설명
챗봇 프로그램의 관리용 통로가 비밀번호 없이 외부에 열려 있어, 해커가 몰래 들어와 대화 내용을 훔쳐보거나 가짜 메시지를 보낼 수 있는 보안 결함입니다. 또한 해커가 가짜 기능을 등록해 정상적인 서비스 이용을 방해할 수도 있습니다.
🇺🇸 원문 (English)
LangBot's plugin runtime (pip package langbot_plugin) through 0.4.17 starts a debug WebSocket server on 0.0.0.0:5401 (/plugin/ws) whose authentication is gated on plugin_debug_key, which defaults to an empty string and is never set by the upstream repository, Docker image, or docker-compose (which additionally publishes port 5401 to the host); the key check is therefore skipped entirely. Any remote attacker able to reach the port can register an arbitrary "debug plugin" without credentials. Because events are broadcast to all initialized plugins without filtering, the attacker's plugin receives the full context of every IM message event (including private chats, message chains, and user/sender IDs in plaintext) and can inject forged replies, send messages as any configured bot, enumerate bot UUIDs, invoke configured LLM models, read knowledge-base contents, and register malicious tools that feed every user's LLM pipeline. Registering with "prod_mode": true causes later legitimate installations of a plugin with the same author/name to be rejected, resulting in persistent denial of service. No patched version was available at the time of publication.
📍 영향받는 시스템
LangBot plugin runtime (langbot_plugin) version 0.4.17 and below
⚔️ 공격 벡터
네트워크를 통해 5401 포트에 접속하여 인증 없이 악성 디버그 플러그인을 등록하는 방식
🛡️ 대응 방법
패치된 버전이 출시될 때까지 5401 포트의 외부 노출을 방화벽으로 차단하거나, Docker 설정에서 해당 포트 매핑을 제거해야 합니다.
🔧 검증 코드
출력된 버전이 0.4.17 이하인지 확인하여 취약 여부를 판단합니다.
pip show langbot_plugin | grep Version