T05 · Unauthorized Access and Privilege Escalation
- Location
SKILL.md:27- Finding
OpenClaw Configuration Is Unnecessarily Exposed to Terminal Output
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This is a small local MQTT messaging skill with clear purpose, but users should treat published agent details as visible to anyone who can access the broker.
Install only in a controlled local environment with a trusted MQTT broker. Prefer a virtual environment and pinned dependencies, extract only the needed agent_id instead of printing the full OpenClaw config, avoid publishing sensitive roles or activities, and configure broker authentication, ACLs, TLS when crossing trust boundaries, and clear rules for retained messages.
SKILL.md:27OpenClaw Configuration Is Unnecessarily Exposed to Terminal Output
SKILL.md:22Third-Party Python Dependencies Are Installed Without Version or Integrity Pinning
scripts/publish.py:8MQTT Agent Metadata Is Exchanged Without Client Authentication or Transport Confidentiality
scripts/publish.py:36Unvalidated Agent Identifiers Can Alter MQTT Topic Routing Semantics
설명은 에이전트의 Intro/Status 메시지를 '발행하고 구독'하는 기능이라고 했지만, 제공된 코드는 paho.mqtt.publish를 사용해 두 종류의 메시지를 MQTT로 발행하는 CLI만 구현한다. 구독 로직이나 MQTT 수신 처리는 전혀 없다. 또한 intro payload에 MQTT와 별개로 openclaw 명령을 통한 직접 통신 방법을 안내하는 채널 문자열을 삽입하는 동작이 설명에 명시되어 있지 않다. 주요 목적은 intro/status 발행과 대체로 관련 있지만, 핵심 기능 중 하나로 서술된 구독이 빠져 있으므로 설명과 행동은 정확히 일치하지 않는다.
설명은 Intro/Status 메시지를 '발행하고 구독'하는 기능 전반을 제공한다고 주장하지만, 제공된 코드 청크는 subscribe.py로서 MQTT 브로커(localhost:1883)에 접속하여 intro/status 토픽을 구독하고 수신 메시지를 출력하는 기능만 구현한다. publish 호출이나 메시지 송신 로직은 전혀 없다. 따라서 설명이 실제 동작보다 넓고, 특히 핵심 capability인 발행 기능이 부재하므로 설명과 코드 사이에 중요한 불일치가 있다. 다만 MQTT를 사용해 Intro/Status 메시지를 다룬다는 큰 범주는 일부 부합한다.
The skill explicitly instructs users to publish agent identifiers, roles, and live activity updates over MQTT, but provides no warning about metadata exposure, broker access control, retention, or plaintext transport. In a multi-agent environment, this can leak sensitive operational details to anyone with broker access and enable tracking, profiling, or targeting of agents.
Skill allows unbounded resource consumption (API calls, storage, compute). Without rate limits or quotas, a compromised or misbehaving agent can cause denial-of-service or cost overruns.
# 1) connect + subscribe 완료될 때까지 잠깐 돌림 (최대 2초)
deadline_connect = time.time() + 2.0
while not connected.is_set() and time.time() < deadline_connect:
client.loop(timeout=0.1)
if not connected.is_set():
print("Failed to connect/subscribe within 2 seconds.")
Skill allows unbounded resource consumption (API calls, storage, compute). Without rate limits or quotas, a compromised or misbehaving agent can cause denial-of-service or cost overruns.
# 1) connect + subscribe 완료될 때까지 잠깐 돌림 (최대 2초)
deadline_connect = time.time() + 2.0
while not connected.is_set() and time.time() < deadline_connect:
client.loop(timeout=0.1)
if not connected.is_set():
print("Failed to connect/subscribe within 2 seconds.")
The comment # 🔒 고정 MQTT 설정 is written only in Korean, which introduces a language-specific constraint in the skill file without offering any user choice or documenting a justified locale requirement. This can violate organizational language/locale policy when skills are expected to be accessible or neutral by default.
No suspicious patterns detected.