T05 · Unauthorized Access and Privilege Escalation
- Location
SKILL.md:26- Finding
Cross-Session Conversation History Access Without Authorization Checks
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 26-34
Vulnerability Type: Cross-session authorization boundary violation
Risk Level: HighVulnerable Code
text 4. Check whether there are other active sessions: sessions_list(activeMinutes=120, messageLimit=3) If another session has recent activity, read its history to understand the context: sessions_history(sessionKey="<key>", limit=10)The excerpt above is an English rendering of the instructions at the cited location. The executable API call names and parameters are unchanged.
Technical Analysis
The Skill directs every session to enumerate other sessions active within the previous 120 minutes and then retrieve up to ten messages from their histories. It does not require verification that:
- The current and target sessions belong to the same authenticated user.
- The sessions belong to the same tenant, organization, or trust domain.
- The user has consented to cross-channel history sharing.
- The target session is on an approved allowlist.
- Sensitive fields are redacted before the retrieved history is exposed to the current session.
This behavior violates least privilege because a session only needs its own context unless cross-session access has been explicitly authorized. A session with access to the session-management tools could use the documented workflow to retrieve conversation content from Feishu, webchat, or another channel.
The Skill does not itself bypass the underlying API's access controls. Exploitation therefore requires the Agent's session tools to permit the caller to enumerate or read another session. Where those tools expose sessions from multiple users or trust domains, the Skill provides a direct procedure for unauthorized access.
Attack Path
- An attacker gains access to a webchat, Feishu, or other session that can invoke the Skill.
- The Skill calls `session ...[truncated 1188 chars]
- Remediation
View remediation
Remediation Suggestions
- Do not enumerate or retrieve other sessions by default.
- Require explicit, informed user consent before each cross-session synchronization operation.
- Verify that the current and target sessions belong to the same authenticated principal, tenant, and approved trust domain.
- Maintain an allowlist of session keys or channels authorized for synchronization instead of processing all recently active sessions.
- Enforce authorization in the session API itself rather than relying only on natural-language Skill instructions.
- Return only a user-approved, redacted summary rather than raw conversation history.
- Remove credentials, authentication tokens, personal data, and other secrets before importing cross-session content.
- Record auditable metadata identifying the requesting session, target session, user approval, and information transferred.
- Fail closed when session ownership or authorization cannot be verified.
