Feishu 卡操作处理程序绕过 allow_from 用户允许列表
□ 总结
cc-连接接通本地AI编码器到消息平台和出入口,这些出入口可以以"allow 从"设定命令代理. 每个平台的纯文本消息路径执行. Feishu平台额外支持由"onCard Action ()"处理的交互式消息"卡"(按钮,表单,许可-批准提示). 该函数只检查聊天级的“allow chat”过滤器,而从未检查“allow from”,因此,任何能够看到和点击该bot所发布的卡片的用户,在任何聊天中,操作员的“allow chat”配置承认(其中可能包括一个共享组),都能够触发一个完整的代理指令调度,或者批准代理商自己在危险动作确认之前的许可,完全绕过保护等同的文本消息路径的每个用户许可列表.
受影响版本:经757b4df'(当前main')承诺确认。
□ 细节
`平台/feishu/feishu.go',纯文本信息处理器正确执行过滤器,并记录预定模式:
开始 // 启用历史共享, 只观察普通文本/ 张贴信件 // 在聊天级别允许列表允许聊天之后 。 这样做之前 // 已有的提及过滤器, 在允许 from: 聊天控制是否 // cc- 连接可观察对话, 同时允许 从控件中选择 // 触发代理转动. . . . . . . . . 如果 ! core. AllowList( p. allow from, userID) { slog.debug(p.tag ()+":来自未经授权用户,"用户","用户",用户ID的消息) p.reply 未经授权访问( ctx, 回覆 Context{...}) 返回为零 {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?
如果聊天Type = "group" ===!core. AllowList(p.allowChat, chatID) { slog.Debug(p.tag ()+":来自未经授权聊天,"聊天","聊天","聊天"的信息) 返回为零 {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?
`OnCard Action ()' 发运时仅检查`allow-chat':
开始
func (p *Platform) 在Card Action(活动 *召回)上. Card Action Trigger Event)(*召回. Card Action Trigger 响应, 错误) {
如果事件发生。 (原始内容存档于2018-09-21). Evention ================================================================================================================================================================= (============================================================================ 活动。 行动===
返回为零, 无
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?
/ 检查允许 聊天过滤器: 从此平台不拥有的聊天中跳过卡片动作 。
如果事件发生。 活动。 = 无事件。 活动。 上下文。 OpenChatID!= ""{
if ! core. AllowList (p.allowChat, event. event. Context. OpenChatID) {
返回为零, 无
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?
动作Val, : =事件. event. act. 值 ["动作"]. (字符串)
. . . . . . . .5个动作前缀中的任何一个动作处理器没有“ 允许从” 检查 :
- `cmd:'将按钮的有效载荷作为任意的代理命令发出,与输入该文本相同: 开始 如果绳子。 Hasprefix( 动作Val, “ cmd: ”) { cmdText:=字符串. TrimPrefix( 动作Val, “ cmd: ” ) . . . . . . . . 继续 p. despatchCoreMessage( & Core) 。 信件{..., 内容: cmdText,...} {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?
- `perm:allow'/`perm:deny'/`perm:allow all'在等待许可/确认时批准或拒绝代理人自己的许可/确认:
开始
如果绳子。 Has Prefix( ActionVal, "perm:") {
. . . . . . . .
继续 p. despatchCoreMessage( & Core) 。 信件{..., 内容: 响应Text, IsPermission Response: true,...})
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?导航 ' 、行动 ' 和 . . . . . . .
内容来源: chenhg5/cc-connect