关于不安全插件 你需要知道的一切

这篇话题介绍关于「不安全插件」的一切知识。你将了解到:

  • 什么样的插件会被评定为不安全?
  • 安装了不安全插件会有什么危害?
  • 我发现了一个不安全的插件,应当如何向官方反馈?
  • 我是插件作者,我认为我的插件没有问题,应当如何解除不安全标记?
5 个赞

什么是「不安全插件」?

不安全插件是对特定插件的一种标识。

在插件市场中,此类插件的名称右侧将会显示一个红色的感叹号:

一个插件被标记为不安全,需要满足以下至少一个特征:

  1. 该插件存在某些具体威胁,包括:

    • 安装该插件会导致 Koishi 本体、官方插件和启动器无法正常运行
      • 例如:boom,会直接炸掉 Koishi 进程
      • 例如:nonebot,部分用户反馈可能以小概率导致 Koishi 无限重启
      • 例如:petpet,会导致 Koishi 后续无法顺利完成升级
    • 该插件对用户的设备存在已查明的侵害行为,例如在未告知用户的前提下盗取账号信息
      • 令人欣慰的是,目前并没有这样的例子
  2. 该插件存在某些潜在威胁,包括:

    • 使用了文档中没有说明或已明确废弃的 API
      • 此类插件安装后能正常运行,但未来升级 Koishi 后将变得不可用,并可能转化为第 1 类情况
      • 这样的插件很多,但并不是每一个插件都会标记为不安全,请参见下一节的说明
    • 我们无法判断插件是否存在具体威胁
      • 例如:某插件将其代码以混淆的形式发布,并且没有公开源代码
  3. 如果某个插件的作者希望他们的插件以「不安全」的形式呈现在插件市场中,也可以手动在插件的 package.json 文件中标注并发布

    • 我不知道有没有这样的例子,你们为什么不发一个玩玩呢
3 个赞

不安全插件是如何被标记的?

插件的不安全与否主要是由 自动化程序进行判定 的,同时官方也会视情况手动标注部分插件作为补充。

自动化程序会尝试安装每一个插件的最新版本,并根据已经熟知的规则进行判断。主要包括:

  • 是否安装失败(如果自动化脚本都安装不了,那在用户的网络环境下就更不要想了)
  • 是否违反了零占用原则
  • 是否依赖了含有潜在威胁的代码
  • 是否被作者自己或者官方标记为了不安全

满足以上条件之一的插件将会被标记为不安全。

2 个赞

我发现了一个不安全的插件,应当如何向官方反馈?

一般情况下,官方不会主动标记插件为不安全(即便看到存在潜在威胁的代码也不一定会管)。这是因为,违反了其他规则的插件,只需要修改自身代码就能自动解除不安全标识;而被官方标记为不安全的插件,直到被官方解除标记前都会一直处于不安全状态。我们没有精力持续监控每一个插件的状态,所以若无必要官方绝对不会主动标记插件为不安全。截至我写这段话的时间,Koishi 的插件市场共有 600 个插件,而只有不超过 5 个插件和依赖被手动标记为了不安全,可以看到这个比例小于 1%。

如果你认为某个插件应当被标记为不安全,你可以按照以下的流程进行反馈:

  1. 确认该插件存在具体威胁(也就是上一节中说明的第一种情况)
  2. 如果能联系到作者,你应当先于作者就插件中存在的问题进行协商
  3. 在论坛中私信 @shigma,并说明该插件应当被标记为不安全的理由
4 个赞

我是插件作者,我认为我的插件没有问题,应当如何解除不安全标记?

如果你的插件被标记为了不安全,并且你对此完全没有头绪,有可能是因为你的代码实际上存在威胁但你不知道,也有可能是我们的自动化程序出了 bug。此时你同样可以向官方反馈以解除此标记:

  1. 你自己应当是插件的作者
  2. 在论坛中私信 @shigma 询问不安全的原因
  3. 如果他说不知道,那就等待官方修复自动化程序吧~
3 个赞

安装了不安全插件会有什么危害?

不安全插件会使你的 Koishi 和运行 Koishi 的设备处于风险中,在二楼中已经介绍过了,但我还要再强调一遍:

  • 某些插件会导致 Koishi 本体、官方插件和启动器无法正常运行
  • 某些插件对用户的设备存在已查明的侵害行为
  • 某些插件安装后能正常运行,但未来升级 Koishi 后将变得不可用

对于最后一类插件,你仍然可以正常地安装和使用它们(例如 wechaty)。但无论如何,安装不安全插件的行为本身会导致你进入 308 状态。我们将不安全插件作为进入 308 的条件,正是为了防止更多用户受到不安全插件的影响。

4 个赞

现在有了:

2 个赞

某种意义上,这也是官方标记为不完全()

2 个赞

我不听我不听我不听

2 个赞

发布此楼后,陆续有几位开发者向我反馈了插件的误报情况。目前所有反馈的插件均已确认是误报,并且已经恢复正常显示。

4 个赞

请务必把k2345-security加入其中(

3 个赞

《自报家门》()
不过,不是有什么办法自己手动添加不安全吗()

2 个赞

koishi字段加一个"insecure": true

2 个赞

20230728 更新:由于收到了一些反馈,在经过 Koishi 团队讨论后,决定将 puppeteer 标记为了不安全依赖,依赖此包的插件会被标记为不安全插件。

特别注意:此次更新只针对 puppeteer (包),koishi-plugin-puppeteer (插件) 依然可以放心使用。

下面介绍该决策的细节。

起因:用户群中出现了一些反馈,表示某个插件无法成功安装,此现象为普遍现象。经过问题定位,群友发现是 puppeteer 依赖导致了这一问题。

问题分析:

  1. puppeteer 插件会从网络下载完整的 chromium,这个文件体积过大,绝大多数普通用户的网络环境无法在规定时限内完成下载,导致插件安装失败。
  2. Koishi 的绝大多数用户的设备上均已存在 Chromium,因此下载上述文件是无意义的行为,并且会给设备增加上百 MB 的硬盘占用:
    • Koishi Desktop 的安装过程会确保用户电脑上有 Edge(Chromium 内核)
    • Koishi Android 自带 Chromium
    • Koishi Docker 自带 Chromium
  3. 使用 puppeteer-core 或 koishi-plugin-puppeteer 不会下载巨大的文件,也不会出现安装失败问题。

对受到影响的插件的建议:

  • 建议将依赖更换为 puppeteer-core 或基于 koishi-plugin-puppeteer 服务
  • 对于不自带 Chromium 的环境,可以手动下载;想要自动化的话可以开发 koishi-plugin-chromium 插件(同样可能被标记为不安全,但不会影响普通用户)
7 个赞

听起来是个很庞大的团队

5 个赞

听起来是个很庞大的团队

3 个赞

听起来是个很庞大的团队

4 个赞