Back to skill

Security audit

WorkBuddy Check-in

Security checks across malware telemetry and agentic risk

Overview

This skill automates WorkBuddy daily check-in by using the user's local WorkBuddy login token, and the sensitive credential use is clearly disclosed and scoped to the stated purpose.

Install only if you are comfortable letting this skill read your local WorkBuddy login token and use it to perform daily check-in for the currently logged-in account. Do not run the token extraction script directly unless you understand it may print the token, keep logs and terminal output private, and use only trusted Node/Electron runtimes.

SkillSpector

By NVIDIA
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (6)

Missing User Warnings

Medium
Confidence
94% confidence
Finding
The documentation explicitly states that the skill reads a local authentication token from a plaintext file and uses it to call a remote API, but it does not clearly warn users that this token is sensitive credential material. In this skill’s context, the token is the core secret enabling account actions, so normalizing automated access to local auth state without prominent handling guidance increases the chance of credential leakage, unsafe reuse, or accidental disclosure through logs or debugging.

Missing User Warnings

Low
Confidence
88% confidence
Finding
The file says the skill writes logs but does not warn users what may be recorded or where, despite the skill operating on local authentication state. In a token-handling workflow, undocumented logging is risky because implementers or users may overlook that sensitive request metadata, file paths, errors, or even credentials could end up persisted under the logs directory.

External Transmission

Medium
Category
Data Exfiltration
Content
API="https://copilot.tencent.com"

# ---------- 2. 查询签到状态 ----------
STATUS=$(curl -s -m 15 -X POST "$API/billing/meter/checkin-status" \
  -H "Content-Type: application/json" -H "Accept: application/json" \
  -H "Authorization: Bearer $TOKEN" -d '{}' 2>/dev/null || echo "")
Confidence
86% confidence
Finding
curl -s -m 15 -X POST "$API/billing/meter/checkin-status" \ -H "Content-Type: application/json" -H "Accept: application/json" \ -H "Authorization: Bearer $TOKEN" -d

External Transmission

Medium
Category
Data Exfiltration
Content
fi

# ---------- 3. 执行签到 ----------
RESULT=$(curl -s -m 15 -X POST "$API/billing/meter/daily-checkin" \
  -H "Content-Type: application/json" -H "Accept: application/json" \
  -H "Authorization: Bearer $TOKEN" -d '{}' 2>/dev/null || echo "")
Confidence
86% confidence
Finding
curl -s -m 15 -X POST "$API/billing/meter/daily-checkin" \ -H "Content-Type: application/json" -H "Accept: application/json" \ -H "Authorization: Bearer $TOKEN" -d

Credential Access

High
Category
Privilege Escalation
Content
1. WorkBuddy 桌面端登录后,会在本地保存登录态。**v5.3.8+ 的新版桌面端**改为明文 JSON 文件:
   - macOS:`~/Library/Application Support/CodeBuddyExtension/Data/Public/auth/workbuddy-desktop.info`
   - 结构 `{ account, auth: { accessToken, refreshToken, expiresAt, ... }, accounts }`,桌面端临近过期会自动刷新,纯 Node 即可读取 `auth.accessToken`。
2. **旧版 WorkBuddy/CodeBuddy** 仍把 auth session 用 Electron `safeStorage` 加密存于 `state.vscdb`;新版明文文件缺失时回退到此路径,用 Electron 运行时执行 `safeStorage.decryptString()` 解密(macOS 命中钥匙串;Windows/Linux 走 DPAPI/keyring)。
3. 运行时策略:**Node 优先**(读新版明文文件,无需 Electron),缺失时回退 Electron(解旧版 `state.vscdb`)。
4. 调用腾讯官方签到 API:
   - 查状态:`POST https://copilot.tencent.com/billing/meter/checkin-status`
Confidence
95% confidence
Finding
keyring

Credential Access

High
Category
Privilege Escalation
Content
- **读取本地令牌**:WorkBuddy 桌面端登录后把登录态存于本地——v5.3.8+ 为明文 JSON 文件(`workbuddy-desktop.info`,纯 Node 可读),旧版为 Electron `safeStorage` 加密的 `state.vscdb`。必须读到 `accessToken` 才能调用官方签到接口,这是签到功能的核心,无法绕过。
- **Node.js 运行时**:v5.3.8+ 主路径用 Node 直接读取明文登录态并解析 JSON。推荐手动指定已校验的 Node(设 `WB_CHECKIN_NODE`)。
- **Electron 运行时(仅旧版账户)**:只有使用旧版 WorkBuddy/CodeBuddy(`state.vscdb`)时才需要,执行 `safeStorage.decryptString()` 解密令牌(macOS 命中钥匙串、Windows/Linux 走系统 DPAPI/keyring)。推荐手动指定已校验的 Electron(设 `WB_CHECKIN_ELECTRON`),不依赖自动下载。
- **python3 回退(默认关闭)**:仅当旧版分支的 `node:sqlite` 不可用时,设 `WB_CHECKIN_ALLOW_PY_FALLBACK=1` 才会调用外部 `python3` 读取会话库。默认关闭以缩小信任边界。
- **定时任务(crontab / launchd / 任务计划程序)**:用于多时间点幂等补签,脚本本身不写入系统定时,需你显式配置。
Confidence
96% confidence
Finding
keyring

VirusTotal

55/55 vendors flagged this skill as clean.

View on VirusTotal

Static analysis

No suspicious patterns detected.