Back to skill

Security audit

CISSPly

Security checks for vulnerabilities and agentic risk

Overview

The skill is mostly a normal remote quiz API, but it exposes an administrative database reload action without clear API-level safeguards.

Review this before installing if your agent may call APIs automatically. Normal quiz use appears coherent, but do not grant or use administrative credentials unless you can confirm the reload endpoint is strongly protected and intended for you. Avoid putting personal identity into sessionId values, because answers and timing are sent to the hosted service.

Vulnerability Patterns
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (1)

T05 · Unauthorized Access and Privilege Escalation

Error
Location
openapi.json:151
Finding

Administrative Reload Endpoint Has No Declared Authentication Control

Content
View full analysis

Vulnerability Details

File Location: openapi.json:151-168; supporting contradictory documentation at SKILL.md:226-240
Vulnerability Type: Missing or inconsistently specified authorization for a privileged administrative operation
Risk Level: High

Vulnerable Code

openapi.json:151-168:

json
"/api/admin/reload": {
  "post": {
    "summary": "Reload Questions",
    "description": "Reload questions from Excel files (admin endpoint)",
    "operationId": "reload_questions_api_admin_reload_post",
    "responses": {
      "200": {
        "description": "Successful Response",
        "content": {
          "application/json": {
            "schema": {}
          }
        }
      }
    }
  }
}

SKILL.md:226-240:

markdown
### POST /api/admin/reload
**Summary:** Reload Questions

Reloads question database from Excel source files (admin-only endpoint).

**Parameters:** None

**Authentication:** Admin credentials required

**Response:** Confirmation of question reload with updated question count and categories.

**Status Codes:**
- `200`: Questions reloaded successfully
- `403`: Unauthorized (admin credentials required)

Technical Analysis

The Skill documentation identifies POST /api/admin/reload as an administrative operation requiring credentials. However, the OpenAPI contract contains no components.securitySchemes declaration and applies no operation-level security requirement to this endpoint. It also omits the documented 403 response and exposes the state-changing operation with only a successful 200 response.

Consequently, generated clients and AI agents consuming openapi.json are given no indication that credentials must be supplied and no definition of the required authentication mechanism. This is a failure to represent and enforce least-privilege boundaries at the API-contract level.

The repository does not contain the ser ...[truncated 1494 chars]

Remediation
View remediation

Remediation Suggestions

  1. Define an explicit OpenAPI authentication scheme under components.securitySchemes, using the mechanism actually enforced by the service, such as OAuth 2.0, a bearer token, mutual TLS, or a secured API-key header.
  2. Add an operation-level security requirement to POST /api/admin/reload. Do not rely on documentation text alone.
  3. Enforce authentication and role-based authorization in the server before initiating any reload. Require a dedicated administrative role and deny access by default.
  4. Document both 401 Unauthorized and 403 Forbidden responses, as appropriate, and reconcile openapi.json with SKILL.md.
  5. Add automated tests proving that anonymous users and authenticated non-administrators cannot invoke the endpoint.
  6. Apply rate limiting, audit logging, and alerting to administrative reload attempts. Record the authenticated principal, request time, outcome, and resulting data version.
  7. Consider restricting the endpoint to a private administrative network or management plane if public API access is unnecessary.
  8. Ensure the reload source is fixed and trusted, validates file integrity and schema, and cannot be selected or modified through untrusted request data.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (10)

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The skill description and examples indicate that session identifiers, answers, timing, and performance metrics are sent to a third-party remote service without any explicit user-facing disclosure about data sharing, retention, or tracking. This creates privacy and compliance risk because users may unknowingly transmit identifiable study behavior and assessment data off-platform.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
81% confidence
Finding

The example shows outbound transmission of session identifiers and quiz parameters to an external domain. External transmission is expected for an API skill, but it remains security-relevant here because the transmitted data can be tied to user activity and there is no accompanying disclosure or minimization guidance.

Content

Scanner excerpt · SKILL.md (reported line 30)May include surrounding context.

cURL:

bash
curl -X POST https://api.toolweb.in/tools/cissply/api/quiz/start \
  -H "Content-Type: application/json" \
  -d '{
    "sessionId": "user-12345-session-001",

External Transmission

Medium
Category
Data Exfiltration
Confidence
81% confidence
Finding

The example shows outbound transmission of session identifiers and quiz parameters to an external domain. External transmission is expected for an API skill, but it remains security-relevant here because the transmitted data can be tied to user activity and there is no accompanying disclosure or minimization guidance.

Content

Scanner excerpt · SKILL.md (reported line 30)May include surrounding context.

cURL:

bash
curl -X POST https://api.toolweb.in/tools/cissply/api/quiz/start \
  -H "Content-Type: application/json" \
  -d '{
    "sessionId": "user-12345-session-001",

External Transmission

Medium
Category
Data Exfiltration
Confidence
82% confidence
Finding

The submit example sends answers, timing, and a session identifier to an external service, which reveals detailed user performance and behavioral telemetry. In a quiz/study context this is not inherently malicious, but it is sensitive enough to warrant explicit disclosure, minimization, and retention controls.

Content

Scanner excerpt · SKILL.md (reported line 88)May include surrounding context.

cURL:

bash
curl -X POST https://api.toolweb.in/tools/cissply/api/quiz/submit \
  -H "Content-Type: application/json" \
  -d '{
    "sessionId": "user-12345-session-001",

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill is presented as a quiz API, but it also exposes an admin-capable endpoint that can reload the question database from Excel source files. Even though it is labeled admin-only, documenting a state-changing maintenance function in the same public skill increases the chance of misuse, accidental invocation, or abuse if authentication is weak or misconfigured.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · SKILL.md (reported line 281)May include surrounding context.

md
## References

- **Kong Route:** https://api.toolweb.in/tools/cissply
- **API Docs:** https://api.toolweb.in:8175/docs

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The OpenAPI spec exposes an administrative endpoint to reload question content from Excel files, which expands the skill beyond its stated quiz delivery and evaluation purpose. Because no authentication, authorization, or administrative controls are documented, a caller may be able to trigger backend state changes or content ingestion unexpectedly, increasing attack surface and operational risk.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

An admin-only reload function is not justified by the declared CISSP quiz use case, so its presence suggests unnecessary privileged functionality is exposed to consumers. Unneeded privileged endpoints are dangerous because they enable misuse, accidental triggering, and backend manipulation without benefiting the normal user flow.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The reload endpoint performs a state-changing administrative action but provides no warning, confirmation semantics, or visible safeguards in the schema. In an agent or automated-client context, this increases the chance of accidental invocation and unauthorized content changes or service disruption, especially since the endpoint is a simple POST with no declared protections.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
82% confidence
Finding

The admin reload endpoint can modify live application state by reloading the question bank, but the documentation does not prominently warn about its destructive or operational effects. Lack of warning increases the risk of accidental invocation by integrators or agents, especially in automation contexts where endpoint names may be acted on mechanically.

Content

No source excerpt is available for this finding.