Back to skill

Security audit

Glancify

Security checks for vulnerabilities and agentic risk

Overview

The skill is a coherent web-page proxy, but it allows arbitrary URL fetching through a third-party service without clear privacy warnings or target restrictions.

Review before installing. Use this only for public, non-sensitive web pages unless the provider documents stronger privacy handling and destination restrictions; do not submit private intranet links, authenticated URLs, personal documents, cloud metadata endpoints, or URLs containing secrets in query strings.

Vulnerability Patterns
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • 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)

T09 · Insecure Skill Coding Practices

Warning
Location
openapi.json:29
Finding

Unrestricted Proxy Target May Enable Server-Side Request Forgery

Content
View full analysis

Vulnerability Details

File Location: openapi.json:29-47; supporting documentation at SKILL.md:90-101
Vulnerability Type: Server-Side Request Forgery (SSRF) / unrestricted proxy destination
Risk Level: Medium

The /view endpoint accepts a user-controlled URL for an external page without documenting or enforcing any scheme, hostname, IP-address, port, or redirect restrictions.

Complete relevant OpenAPI segment:

json
"/view": {
  "get": {
    "summary": "View Wrapped",
    "description": "Proxy that wraps external pages with Glancify",
    "operationId": "view_wrapped_view_get",
    "parameters": [
      {
        "name": "url",
        "in": "query",
        "required": true,
        "schema": {
          "type": "string",
          "title": "Url"
        }
      }
    ],

Supporting Skill documentation:

markdown
## GET /view
**Summary:** View Wrapped

**Description:** Proxy endpoint that wraps an external web page with Glancify, enabling interactive content visualization and analysis.

**Parameters:**
| Name | Type | Required | Description |
|------|------|----------|-------------|
| `url` | string | Yes | The full URL of the external webpage to wrap with Glancify |

**Response:**
- **200 OK** – Successfully wrapped the page; returns wrapped content with Glancify integration
- **422 Unprocessable Entity** – Invalid or missing URL parameter

Technical Analysis

The declared purpose of /view is to retrieve or wrap an external resource selected through the url query parameter. The OpenAPI schema validates this value only as a generic string. Neither the specification nor the Skill documentation defines:

  • An allowlist of permitted destinations
  • Restrictions to safe schemes such as HTTPS
  • Rejection of loopback, private, link-local, reserved, or multicast addresses
  • Protection against DNS rebinding
  • Validation of every redirect desti ...[truncated 2399 chars]
Remediation
View remediation

Remediation Suggestions

  1. Parse the supplied value with a standards-compliant URL parser and reject malformed or ambiguous URLs.
  2. Permit only https unless another scheme is explicitly required; reject file, ftp, gopher, data, and all other unsupported schemes.
  3. Prefer an explicit allowlist of approved hostnames and ports instead of allowing arbitrary Internet destinations.
  4. Resolve the destination before connecting and reject loopback, private, link-local, carrier-grade NAT, multicast, reserved, unspecified, and cloud metadata address ranges for both IPv4 and IPv6.
  5. Validate the resolved address again when opening the connection to mitigate DNS rebinding and time-of-check/time-of-use issues.
  6. Disable redirects or apply the complete scheme, hostname, port, DNS, and IP validation process to every redirect hop. Impose a small redirect limit.
  7. Route outbound requests through an egress proxy or firewall that independently blocks internal and metadata networks.
  8. Do not forward caller-controlled authorization headers, cookies, or internal service credentials to fetched destinations.
  9. Apply authentication, per-user authorization, rate limits, request timeouts, response-size limits, and concurrency limits.
  10. Return generic errors that do not expose internal connection details, and monitor rejected destinations and unusual scanning patterns.
  11. Update the OpenAPI schema and SKILL.md to document all target restrictions and privacy implications.
  12. Add automated tests covering loopback addresses, IPv6 forms, integer and encoded IP representations, private networks, metadata endpoints, redirects, and DNS-rebinding scenarios.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (5)

External Transmission

Medium
Category
Data Exfiltration
Confidence
91% confidence
Finding

This example shows user-provided URLs being embedded into a request to an external domain, confirming that content requests are transmitted to api.toolweb.in for processing. In the context of a proxy/wrapping skill, this is expected functionality, but it is still security-relevant because it can expose browsing targets, sensitive URLs, query strings, or internal resources to a third-party service.

Content

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

json
{
  "status": "success",
  "wrapped_url": "https://api.toolweb.in/tools/glancify/view?url=https://example.com/article",
  "content": {
    "title": "Example Article",
    "glancify_enabled": true,

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The skill explicitly accepts arbitrary user-supplied URLs and proxies them through an external service, but the description does not warn users that submitted URLs and potentially related metadata will be transmitted to a third party. This creates a privacy and data-handling risk because users may provide sensitive internal, authenticated, or confidential links without understanding that the service will fetch them remotely.

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 194)May include surrounding context.

md
# References

- **Kong Route:** https://api.toolweb.in/tools/glancify
- **API Docs:** https://api.toolweb.in:8167/docs

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
86% confidence
Finding

The API advertises proxying arbitrary external URLs without warning that requested URLs, fetched content, headers, or user context may be transmitted through the proxy service. In a skill setting, this increases the risk that users or agents send sensitive internal or authenticated URLs through a third-party service, creating privacy, confidentiality, and compliance exposure even if no active exploitation occurs.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The /view endpoint explicitly accepts a user-supplied URL and is described as a proxy for wrapping external pages, but the specification provides no constraints such as allowed schemes, domain restrictions, or safe-use guidance. In an agent skill context, broad URL proxying can enable server-side request forgery, unintended access to internal resources, or retrieval of sensitive intranet/cloud metadata endpoints if the backend fetches arbitrary URLs.

Content

No source excerpt is available for this finding.