扫描报告
5 /100
OpenClaw RP Plugin
SillyTavern-compatible roleplay plugin with character cards, long memory, multimodal output (TTS/image), and Generative-Agents-style companion
OpenClaw RP Plugin 是合法的 SillyTavern 角色扮演插件,预扫描发现的 base64 解码均为处理 SillyTavern 资源格式的标准用法,无恶意行为。
可以安装
此技能可安全使用,无需额外安全措施。
安全发现 3 项
| 严重性 | 安全发现 | 位置 |
|---|---|---|
| 提示 | Base64 解码用法验证 | src/core/commandRouter.js:100,141 | src/openclaw/register.js:148 | src/utils/attachments.js:16 | src/utils/png.js:34:100 |
| 提示 | 配置目录访问 | src/openclaw/register.js:1600 |
| 提示 | FFmpeg 调用 | src/openclaw/register.js:120 |
| 资源类型 | 声明权限 | 推断权限 | 状态 | 证据 |
|---|---|---|---|---|
| 文件系统 | READ+WRITE | READ+WRITE | ✓ 一致 | SKILL.md:file read/write for asset import and config |
| 网络访问 | READ | READ | ✓ 一致 | fetch() for URL import, external API calls for LLM/TTS/Image |
| 环境变量 | READ | READ | ✓ 一致 | OPENAI_*, GEMINI_*, OPENCLAW_RP_* env vars in SKILL.md |
| 命令执行 | NONE | READ | ✓ 一致 | execFile ffmpeg only, declared in runtime requirements |
| 技能调用 | NONE | NONE | — | N/A |
| 剪贴板 | NONE | NONE | — | N/A |
| 浏览器 | NONE | NONE | — | N/A |
| 数据库 | WRITE | WRITE | ✓ 一致 | SQLite for session/memory storage, declared in SKILL.md |
5 严重 9 项发现
严重 编码执行 Base64 编码执行(代码混淆)
Buffer.from(attachment.content, "base64" src/core/commandRouter.js:100 严重 编码执行 Base64 编码执行(代码混淆)
Buffer.from(match[2], "base64" src/core/commandRouter.js:141 严重 编码执行 Base64 编码执行(代码混淆)
Buffer.from(dataUrl.base64, "base64" src/openclaw/register.js:148 严重 编码执行 Base64 编码执行(代码混淆)
Buffer.from(resolved, "base64" src/utils/attachments.js:16 严重 编码执行 Base64 编码执行(代码混淆)
Buffer.from(encoded, "base64" src/utils/png.js:34 中危 外部 URL 外部 URL
https://arxiv.org/abs/2304.03442 README.md:7 中危 外部 URL 外部 URL
https://example.local/audio.mp3 examples/smoke-run.js:26 中危 外部 URL 外部 URL
https://example.local/image.png examples/smoke-run.js:31 中危 外部 URL 外部 URL
https://api.telegram.org src/providers/attachmentResolvers.js:52 目录结构
71 文件 · 361.0 KB · 11862 行 JavaScript 61f · 10617L
Markdown 7f · 1143L
JSON 3f · 102L
├─
▾
docs
│ ├─
ARCHITECTURE.md
Markdown
│ └─
ARCHITECTURE.zh-CN.md
Markdown
├─
▾
examples
│ ├─
openclaw-rp-bootstrap.js
JavaScript
│ └─
smoke-run.js
JavaScript
├─
▾
src
│ ├─
▾
channels
│ │ └─
adapters.js
JavaScript
│ ├─
▾
core
│ │ ├─
commandRouter.js
JavaScript
│ │ ├─
defaultPreset.js
JavaScript
│ │ ├─
lorebookMatcher.js
JavaScript
│ │ ├─
modelConfigResolver.js
JavaScript
│ │ ├─
promptBuilder.js
JavaScript
│ │ ├─
rateLimiter.js
JavaScript
│ │ ├─
retry.js
JavaScript
│ │ ├─
sessionManager.js
JavaScript
│ │ └─
sessionMutex.js
JavaScript
│ ├─
▾
importers
│ │ ├─
cardImporter.js
JavaScript
│ │ ├─
lorebookImporter.js
JavaScript
│ │ └─
presetImporter.js
JavaScript
│ ├─
▾
openclaw
│ │ ├─
agentImageTool.js
JavaScript
│ │ ├─
agentPersona.js
JavaScript
│ │ ├─
autoImage.js
JavaScript
│ │ ├─
i18n.js
JavaScript
│ │ ├─
nodeSqliteCompat.js
JavaScript
│ │ └─
register.js
JavaScript
│ ├─
▾
providers
│ │ ├─
attachmentResolvers.js
JavaScript
│ │ ├─
gemini.js
JavaScript
│ │ └─
openaiCompatible.js
JavaScript
│ ├─
▾
store
│ │ ├─
inMemoryStore.js
JavaScript
│ │ ├─
schema.js
JavaScript
│ │ └─
sqliteStore.js
JavaScript
│ ├─
▾
utils
│ │ ├─
attachments.js
JavaScript
│ │ ├─
commandParser.js
JavaScript
│ │ ├─
id.js
JavaScript
│ │ ├─
imageIntent.js
JavaScript
│ │ ├─
multilingualEmbedding.js
JavaScript
│ │ ├─
png.js
JavaScript
│ │ ├─
sessionKey.js
JavaScript
│ │ ├─
textCleaner.js
JavaScript
│ │ ├─
tiktokenEstimator.js
⚠
JavaScript
│ │ ├─
timeout.js
JavaScript
│ │ └─
tokenEstimator.js
⚠
JavaScript
│ ├─
errors.js
JavaScript
│ ├─
index.js
JavaScript
│ ├─
openclawIntegration.js
JavaScript
│ ├─
plugin.js
JavaScript
│ └─
types.js
JavaScript
├─
▾
tests
│ ├─
agentImageTool.test.js
JavaScript
│ ├─
agentPersona.test.js
JavaScript
│ ├─
attachmentResolvers.test.js
JavaScript
│ ├─
cardImporter.test.js
JavaScript
│ ├─
channelsAdapter.test.js
JavaScript
│ ├─
commandParser.test.js
JavaScript
│ ├─
hooksAndPolicies.test.js
JavaScript
│ ├─
imageIntent.test.js
JavaScript
│ ├─
integrationHandlers.test.js
JavaScript
│ ├─
lorebookMatcher.test.js
JavaScript
│ ├─
openaiCompatibleProvider.test.js
JavaScript
│ ├─
openclawAutoImage.test.js
JavaScript
│ ├─
pluginStoreSelection.test.js
JavaScript
│ ├─
promptBuilder.test.js
JavaScript
│ ├─
ragMemory.test.js
JavaScript
│ ├─
routerFlow.test.js
JavaScript
│ ├─
textCleaner.test.js
JavaScript
│ └─
tokenEstimatorFactory.test.js
⚠
JavaScript
├─
_meta.json
JSON
├─
CHANGELOG.md
Markdown
├─
CHANGELOG.zh.md
Markdown
├─
openclaw.plugin.json
JSON
├─
package.json
JSON
├─
README.md
Markdown
├─
README.zh.md
Markdown
└─
SKILL.md
Markdown
依赖分析 2 项
| 包名 | 版本 | 来源 | 已知漏洞 | 备注 |
|---|---|---|---|---|
better-sqlite3 | ^9.0.0 | npm | 否 | 可选,用于持久化存储 |
js-tiktoken | ^1.0.0 | npm | 否 | 可选,用于 token 计数 |
安全亮点
✓ SKILL.md 完整声明了所有功能、权限和依赖
✓ 无 shell 命令注入风险
✓ 无凭证收割或外传行为
✓ 无访问 ~/.ssh、~/.aws、.env 等敏感路径
✓ 无 HTML 注释隐藏指令
✓ 使用参数化查询防 SQL 注入
✓ execFile 仅用于 ffmpeg(已声明)
✓ fetch 用于资源导入(已声明)
✓ 所有文件操作限定在插件状态目录
✓ 代码结构清晰,有完整错误处理