Back to skill

Security audit

Juejin Article Trends

Security checks for vulnerabilities and agentic risk

Overview

This skill fetches public Juejin article categories and rankings through a local Node script, with no evidence of credential use, persistence, destructive actions, or hidden data collection.

Install only if you are comfortable with a Node script making network requests to Juejin. The main transparency issue is the randomized browser User-Agent header; it is not evidence of data theft, but a static identifying User-Agent would be cleaner.

Vulnerability Patterns
  • 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
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (10)

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
node scripts/juejin.js categories

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
node scripts/juejin.js categories

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
node scripts/juejin.js categories

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
node scripts/juejin.js categories

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
node scripts/juejin.js categories

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The script rotates among 15 realistic desktop and mobile User-Agent strings to make requests appear to come from different browsers/devices. For a simple public trending/category fetcher, this is unnecessary and can be used to evade rate-limiting, anti-bot detection, or attribution controls, increasing abuse potential beyond the stated skill purpose.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% 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 · scripts/juejin.js (reported line 102)May include surrounding context.

js
*/
async function getCategories() {
  try {
    const response = await httpGet('https://api.juejin.cn/tag_api/v1/query_category_briefs');
    
    if (response.err_no !== 0) {
      throw new Error(response.err_msg || '获取分类失败');

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% 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 · scripts/juejin.js (reported line 126)May include surrounding context.

js
*/
async function getCategories() {
  try {
    const response = await httpGet('https://api.juejin.cn/tag_api/v1/query_category_briefs');
    
    if (response.err_no !== 0) {
      throw new Error(response.err_msg || '获取分类失败');

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
95% confidence
Finding

The manifest description and the entire markdown content are written in Chinese, and the skill presents its usage and outputs exclusively in that language. Under the policy, a skill should not effectively force a specific language unless it offers user choice or clearly documents a justified locale constraint.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
93% confidence
Finding

The request headers force Accept-Language to prefer zh-CN, which is a natural-language/locale policy choice embedded in code. The file does not provide a user opt-in, configuration option, or justification that the skill is intended only for a China-specific locale context.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.