Back to skill

Security audit

LinkedIn API

Security checks for vulnerabilities and agentic risk

Overview

The skill is a coherent LinkedIn data API reference that uses a user-provided agntdata API key to make external API requests.

Install this skill only if you are comfortable sending LinkedIn-related queries and your AGNTDATA_API_KEY to agntdata's API. Avoid submitting sensitive regulated personal data or confidential target lists unless that vendor use is approved, and separately review or pin the optional plugin before installing it.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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)

T08 · Insecure Dependencies

Warning
Location
SKILL.md:21
Finding
Unpinned Third-Party Plugin Installation Recommendation## Vulnerability Details **File Location**: `SKILL.md`, lines 21–34 **Vulnerability Type**: Supply-chain risk from an unpinned external dependency **Risk Level**: Medium ### Vulnerable Code ```markdown ## Recommended: Install the Plugin **For the best experience, install the OpenClaw plugin for LinkedIn API instead of this skill.** The plugin provides native MCP tools, automatic authentication, and structured parameter validation. Skill (this document): ```bash clawhub install agntdata-linkedin ``` Plugin (native tools; npm package matches `package.json`): ```bash openclaw plugins install @agntdata/openclaw-linkedin ``` ``` ### Technical Analysis The Skill recommends installing `@agntdata/openclaw-linkedin` without specifying an exact version or an integrity hash. The resulting installation is mutable: its contents depend on whichever package release the registry resolves at installation time rather than the artifact reviewed during this audit. The external plugin's implementation is not included in the audited project. Although the documentation states that the npm package matches `package.json`, the audited directory contains only `SKILL.md` and `_meta.json`; there is no `package.json`, lockfile, vendored source, signature, or checksum against which the installed plugin can be verified. This creates a supply-chain trust boundary. A compromised registry account, malicious future release, or package takeover could cause users following the recommendation to install code that was not subject to this audit. ### Attack Path 1. An attacker compromises the package maintainer account, package publication workflow, or another relevant supply-chain component. 2. The attacker publishes a malicious version of `@agntdata/openclaw-linkedin`. 3. A user follows the Skill's recommended installation command. 4. Because the command does not pin a reviewed version or verify an integrity hash, the package manager resolves and installs the malicious release. 5. The ...[truncated 1034 chars]
Remediation
## Remediation Suggestions 1. Pin the dependency to an exact, reviewed version, for example: ```bash openclaw plugins install @agntdata/openclaw-linkedin@1.0.15 ``` 2. Publish and verify a cryptographic integrity hash or signed release provenance before installation. 3. Include the plugin's source, manifest, and lockfile in the auditable project, or link to immutable source at a specific commit. 4. Remove or correct the statement that the package matches `package.json` unless that file is actually included and identifies the exact reviewed dependency. 5. Require explicit user confirmation before installing external executable components. 6. Run the plugin with least privilege, restricting environment-variable access, filesystem access, network destinations, and available agent tools. 7. Ensure `AGNTDATA_API_KEY` is exposed only when an authenticated agntdata request is necessary, and support narrowly scoped, revocable credentials where available. 8. Maintain dependency monitoring and revoke or block compromised versions promptly.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (7)

External Transmission

Medium
Category
Data Exfiltration
Content
env:
        - AGNTDATA_API_KEY
      bins:
        - curl
    primaryEnv: AGNTDATA_API_KEY
    emoji: "💼"
    homepage: https://agnt.mintlify.app/apis/social/linkedin
Confidence
92% confidence
Finding
The skill is designed to use curl with a bearer token to communicate with an external API service, which means both authentication material and user query data are transmitted outside the host environment. In this context the behavior is expected, but it is still security-relevant because it exposes user inputs and usage metadata to a third party and depends on safe handling of the API key.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The skill clearly sends user-supplied LinkedIn identifiers, URLs, company names, job IDs, and related query data to the external agntdata API, but the description does not prominently warn users that their inputs will leave the local environment. This creates a transparency and privacy risk because users may provide sensitive prospecting, recruiting, or investigative data without understanding it will be transmitted to a third party.

External Transmission

Medium
Category
Data Exfiltration
Content
After setting your API key, activate it by calling the registration endpoint. This only needs to be done once per key:

```bash
curl -X POST https://api.agntdata.dev/v1/register \
  -H "Authorization: Bearer $AGNTDATA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"intendedApis": ["linkedin"], "useCase": "Brief description of your use case"}'
Confidence
94% confidence
Finding
The registration call sends the AGNTDATA_API_KEY plus a user-provided use-case description to an external endpoint. Even though this is part of normal onboarding, it creates outbound disclosure of credentials and potentially sensitive business-context information to the vendor service.

External Transmission

Medium
Category
Data Exfiltration
Content
These public endpoints (no API key required) let you explore this platform's capabilities:

```bash
curl https://api.agntdata.dev/v1/platforms/linkedin
```

Returns: full endpoint list, OpenAPI spec, features, and use cases.
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
These public endpoints (no API key required) let you explore this platform's capabilities:

```bash
curl https://api.agntdata.dev/v1/platforms/linkedin
```

Returns: full endpoint list, OpenAPI spec, features, and use cases.
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
## Base URL

```
https://api.agntdata.dev/v1/data/linkedin
```

## Available Endpoints
Confidence
93% confidence
Finding
The documented base URL establishes that the skill sends LinkedIn-related queries to api.agntdata.dev, which means user-supplied search terms and identifiers are externally transmitted. In a data-enrichment and recruiting context, those inputs may contain commercially sensitive targets or personal information, making the transmission privacy-relevant.

External Transmission

Medium
Category
Data Exfiltration
Content
## Example

```bash
curl -X GET 'https://api.agntdata.dev/v1/data/linkedin/get-company-details?username=microsoft' \
  -H 'Authorization: Bearer $AGNTDATA_API_KEY'
```
Confidence
90% confidence
Finding
The example demonstrates authenticated transmission of query parameters and the bearer token to the external API. Examples shape real-world operator behavior, so showing this without nearby cautions increases the chance that users will paste secrets into insecure shells or overlook third-party disclosure of the queried company or profile data.

Static analysis

No suspicious patterns detected.