T05 · Unauthorized Access and Privilege Escalation
- Location
SKILL.md:843- Finding
Noncompliant subscriptions can retain unauthorized lower-tier feed access
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 843-849
Vulnerability Type: Broken authorization and access-control validation
Risk Level: HighVulnerable Code:
python if terms.get("tier") == tier and compliance.get("compliant", False): has_access = True active_tier = tier elif terms.get("tier") == "premium" and tier in ("professional", "community"): # Premium subscribers get access to lower tiers has_access = True active_tier = terms.get("tier") elif terms.get("tier") == "professional" and tier == "community": has_access = True active_tier = terms.get("tier")Technical Analysis
The exact-tier authorization branch requires the SLA compliance result to be true. However, the two branches that grant inherited access to lower tiers do not check the compliance result.
Consequently, an account whose recorded SLA tier is
premiumorprofessionalcan receive lower-tier access even ifcheck_sla_compliancereports that the associated SLA is noncompliant. Depending on the platform's compliance semantics, noncompliance could represent an expired, unpaid, suspended, or otherwise invalid subscription.This is a broken authorization condition: entitlement level and entitlement validity must both be verified before access is granted. A higher recorded tier must not independently establish authorization.
Attack Path
- A consumer obtains or retains an SLA record whose tier is
premiumorprofessional. - The SLA subsequently becomes noncompliant.
- The consumer requests access to a lower-tier feed.
check_sla_compliancereturns the SLA data withcompliantset to false.- The exact-tier branch is skipped, but a lower-tier inheritance branch matches the recorded tier.
- The function returns
has_access: True. - A provider relying on this result may deliver threat-intelligence data without a currently valid entitlement.
Impact
...[truncated 584 chars]
- A consumer obtains or retains an SLA record whose tier is
- Remediation
View remediation
Remediation Suggestions
Require a valid compliance result before evaluating any tier entitlement:
python is_compliant = compliance.get("compliant") is True if not is_compliant: return { "has_access": False, "active_tier": None, "requested_tier": tier, "sla_compliant": False, } subscribed_tier = terms.get("tier") tier_access = { "community": {"community"}, "professional": {"professional", "community"}, "premium": {"premium", "professional", "community"}, } has_access = tier in tier_access.get(subscribed_tier, set())Additionally:
- Validate that the SLA belongs to the expected consumer and provider.
- Verify that its status is active and that its expiration time has not passed.
- Verify payment or escrow state independently where applicable.
- Fail closed when the compliance response is missing, malformed, or ambiguous.
- Add tests for expired, unpaid, suspended, and noncompliant higher-tier subscriptions requesting lower-tier content.
- Perform authorization again at the point of delivery rather than relying only on an earlier check.
