网安瞭望台第6期 :XMLRPC npm 库被恶意篡改、API与SDK的区别

国内外要闻

     XMLRPC npm 库被恶意篡改,窃取数据并部署加密货币挖矿程序

    网络安全研究人员发现了一起在 npm 包注册表上活跃了一年多的软件供应链攻击。名为 @0xengine/xmlrpc 的 npm 包最初是一个无害的库,基于 JavaScript,用于 Node.js 的 XML - RPC 服务器和客户端,2023 年 10 月 2 日发布,至今已被下载 1790 次。然而在发布一天后的 1.3.4 版本中被植入恶意代码。

    恶意行为如下:数据窃取,恶意代码每 12 小时收集一次诸如 SSH 密钥、bash 历史记录、系统元数据和环境变量等敏感信息,并通过 Dropbox 和 file.io 等服务将其泄露出去。传播途径,其攻击有多种传播途径,包括直接通过 npm 安装,以及作为隐藏依赖项存在于看似合法的存储库中。例如,GitHub 上一个名为 yawpp 的项目(声称是用于在 WordPress 平台上编程创建帖子的工具),其 “package.json” 文件将 @0xengine/xmlrpc 的最新版本列为依赖项,用户在安装 yawpp 工具时就会自动下载安装这个恶意 npm 包。目前尚不清楚 yawpp 工具的开发者是否故意添加此依赖项。

    该恶意软件一旦安装,就会收集系统信息,通过 systemd 在主机上建立持久性,并部署 XMRig 加密货币挖矿机。目前发现有多达 68 个受感染系统正在通过攻击者的门罗币钱包进行挖矿。

    它还能持续监控运行进程列表,若发现 top、iostat、sar、glances、dstat、nmon、vmstat 和 ps 等命令,就会终止所有与挖矿相关的进程,并且如果检测到用户活动,会暂停挖矿操作。

    与此同时,Datadog Security Labs 发现了一场针对 Windows 用户的恶意活动,涉及上传到 npm 和 Python Package Index(PyPI)存储库的假冒包,目的是部署 Blank - Grabber 和 Skuld Stealer 开源窃取恶意软件。上个月检测到该供应链攻击,将其命名为 MUT - 8694。攻击者上传了 18 个和 39 个假冒的独特包到 npm 和 PyPI,这些库试图通过拼写错误(typosquatting)技术伪装成合法包,且似乎在针对 Roblox 开发者。

图片

网络犯罪分子利用热门游戏引擎Godot

分发跨平台恶意软件

    自2024年6月起,一种名为GodLoader的恶意软件活动正在滥用热门开源游戏引擎Godot Engine,感染了超过17000个系统。

    网络犯罪分子利用Godot Engine执行特制的GDScript代码,这些代码会触发恶意命令并传播恶意软件。而且这种技术在VirusTotal上几乎未被所有杀毒引擎检测到。

    Godot Engine支持多平台开发(包括Windows、macOS、Linux、Android、iOS、PlayStation、Xbox、Nintendo Switch和网页),这一特性使其成为攻击者手中极具吸引力的工具,能够大规模地针对和感染不同设备,拓宽了攻击面。

    该活动利用了“Stargazers Ghost Network”(大约200个GitHub仓库和225个以上虚假账号)来分发GodLoader。这些账号会给分发GodLoader的恶意仓库点赞,使其看起来合法且安全。这些仓库分四波发布,主要针对开发者、游戏玩家和普通用户。

    在2024年9月12日、9月14日、9月29日和10月3日观察到的攻击中,攻击者使用Godot Engine可执行文件(即.pck文件)来植入加载器恶意软件,然后该加载器从Bitbucket仓库下载并执行最终阶段的恶意负载,如RedLine Stealer和XMRig加密货币挖矿机。

    目前,这组攻击涉及攻击者构建自定义的Godot Engine可执行文件来传播恶意软件,但如果攻击者在获取用于提取.pck文件的对称加密密钥后篡改合法的Godot游戏,威胁可能会进一步升级。不过,通过切换到依赖公钥和私钥对来加密/解密数据的非对称密钥算法,可以避免这种攻击。

    这一恶意活动再次提醒我们,威胁行为者经常利用合法服务和品牌来逃避安全机制,因此用户必须只从可信来源下载软件。攻击者利用了Godot的脚本功能来创建未被许多常规安全解决方案检测到的自定义加载器,其跨平台的攻击方式增强了恶意软件的通用性,使威胁行为者能够轻易地针对多个操作系统进行攻击,更有效地在各种设备上传播恶意软件,扩大其影响范围。

图片

ProjectSend关键漏洞在面向公众服务器遭主动利用       

    VulnCheck发现,影响ProjectSend开源文件共享应用程序的一个关键安全漏洞可能已在野外被主动利用。该漏洞早在 2023 年 5 月的一次提交中就已修复,但直到 2024 年 8 月 r1720 版本发布才正式公布。截至 2024 年 11 月 26 日,其 CVE 编号为 CVE - 2024 - 11680,CVSS 评分为 9.8。

    Synacktiv在 2023 年 1 月向项目维护者报告了此漏洞,称其为不当授权检查漏洞,可使攻击者在易受攻击的服务器上执行恶意代码。在 ProjectSend r1605 版本中存在不当授权检查,攻击者可执行诸如启用用户注册和自动验证,或在上传文件允许的扩展名白名单中添加新条目等敏感操作,最终能在托管应用程序的服务器上执行任意 PHP 代码。

    VulnCheck 观察到未知威胁行为者利用 Project Discovery 和 Rapid7 发布的漏洞利用代码,针对面向公众的 ProjectSend 服务器进行攻击,攻击可能始于 2024 年 9 月。这些攻击还启用了用户注册功能以获取身份验证后的权限用于后续利用,表明并非仅局限于扫描易受攻击的实例。VulnCheck 的 Jacob Baines 表示可能已发展到攻击者安装网页 shell 的阶段,且从技术上讲,漏洞还允许攻击者嵌入恶意 JavaScript,这可能是一种不同的有趣攻击场景。若攻击者上传了网页 shell,可在 webroot 下的 upload/files/ 中的可预测位置找到。

    对约 4000 个暴露在互联网上的 ProjectSend 服务器分析显示,仅有 1%使用了已修复的 r1750 版本,其余运行的是未命名版本或 2022 年 10 月发布的 r1605 版本。鉴于似乎广泛存在的利用情况,建议用户尽快应用最新补丁以缓解当前威胁。 

图片

知识分享

HTTP/1 -> HTTP/1.1 -> HTTP/2 -> HTTP/3

    不少少侠提问过HTTP不同版本的差别,这里讲解一下。

1. HTTP/1

    在 HTTP/1 中,客户端和服务器之间的通信基于 TCP/IP 协议。通信开始时,客户端向服务器发送 TCP SYN 请求,服务器回复 TCP SYN + ACK,然后客户端再回复 ACK,建立起 TCP 连接。接着,客户端通过已建立的 TCP 连接发送 HTTP 请求,服务器处理请求后返回 HTTP 响应。每次请求 - 响应都需要建立一个新的 TCP 连接,这种方式效率较低。

2. HTTP/1.1

    HTTP/1.1 引入了持久连接(Persistent Connection)。在这种模式下,客户端和服务器之间的 TCP 连接在一次请求 - 响应后不会立即关闭,而是保持打开状态,以便后续的请求 - 响应可以复用这个连接,减少了建立连接的开销,提高了效率。

3. HTTP/2

    HTTP/2 进一步优化了连接机制,它在一个 TCP 连接上可以同时处理多个数据流(streams)。客户端和服务器之间通过一个 TCP 连接进行通信,每个数据流可以独立地发送请求和接收响应。例如,stream 1 可以发送请求头,stream 2 可以发送数据,stream 3 可以发送其他请求头或数据等,这些数据流可以并发地在同一个 TCP 连接上传输,提高了网络利用率和传输效率。

4. HTTP/3

    HTTP/3 则是基于 QUIC(Quick UDP Internet Connections)协议,使用 UDP 代替 TCP。图中显示客户端和服务器之间通过 UDP 连接进行通信。QUIC 协议在 UDP 之上实现了类似于 TCP 的可靠性和拥塞控制功能,同时还具有更低的延迟和更好的性能。图中的数字 1 - 7 可能表示 QUIC 连接中的不同数据包或数据流,展示了 HTTP/3 在 UDP 上实现高效数据传输的机制。

    从 HTTP/1 到 HTTP/3 的演变过程展示了网络协议在提高性能、降低延迟和优化资源利用方面的不断进步。少侠们一定要注意掌握计算机通信的基础知识,这样才能让自己的网安能力有坚实的底层支撑哦。

图片

网络安全的人体类比:保障数字世界的健康

    少侠们经常在后台提问,如何给安全运营中接触到的安全平台、产品、能力进行定位,这里有一个非常形象的类比图。    

    在网络安全领域,各个组件的协同工作如同人体各器官维持健康一样重要。我们可以通过人体与网络安全的类比来更好地理解这一复杂的系统。

  • 首先,安全运营中心(SOC)就像大脑。大脑控制着人体的功能和决策,而 SOC 则掌控着网络安全的运作,做出关键的判断和指挥。

  • 安全信息和事件管理系统(SIEM Systems)如同眼睛和耳朵。眼睛和耳朵负责监测周围环境,察觉潜在的危险,SIEM Systems 则时刻监控网络活动,及时发现异常和可能存在的威胁。

  • 数据加密好比心脏,心脏保障血液在身体内的安全循环,数据加密则确保信息在传输和存储过程中的安全性。

  • 入侵检测系统类似神经系统,神经系统快速传递信号,让身体对危险做出迅速反应,入侵检测系统也是如此,它能对可疑活动及时发出信号,便于快速应对。

  • IT 基础设施如同骨骼,骨骼为人体提供结构和支撑,基础设施则为网络安全提供基本的架构和支持。

  • 安全策略类似于肝脏,肝脏负责解毒,保障身体的健康,安全策略通过强制实施安全规范来净化网络环境。

  • 过滤系统好比肾脏,肾脏过滤血液中的有害物质,过滤系统则防止敏感信息被未经授权的访问。

  • 数据流如同血液,血液在人体中运输各种重要物质,数据流则在网络中传递关键信息。

  • 防病毒软件如同免疫系统,免疫系统抵御病菌的入侵,防病毒软件则检测并清除网络中的有害感染。

  • 防火墙则像皮肤,皮肤是人体抵御外界威胁的第一道防线,防火墙也是阻挡外部网络威胁的首要屏障。

图片

API(应用程序编程接口)VS SDK(软件开发工具包)

    没错,又有少侠问过我们,API和SDK到底有嘛区别,哪个更安全,这里讲一讲:    

    API用于在应用程序和服务之间进行通信。其请求结构包括HTTP方法(如GET、POST、PUT、DELETE)、端点(如https://gmap/json,表示API托管的位置)、查询参数(如 - address=ABC + CA和 - key=APP_API_KEY,用于指定请求条件)、状态码(如200 OK,表示请求成功)以及以json/XML格式返回的数据。其工作流程是客户端向API发送请求,API处理后返回包含数据(例如地图数据)的响应。

    SDK则是用于构建应用程序的工具箱。它由编程语言(如Java、.NET、Kotlin等)和SDK本身组成,SDK提供了帮助开发者集成APIs的工具和库。开发者选择编程语言后,使用SDK进行应用程序的构建,接着发布和交付应用程序,最终应用程序通过Web API与外部数据(如位置数据)交互。

    在网络安全方面,API和SDK存在以下差别:

    API的网络安全特点

    1. 暴露风险:API通常是对外暴露的接口,容易受到外部攻击。例如,如果没有适当的身份验证和授权机制,攻击者可能通过猜测端点和参数来获取敏感数据。

    2. 依赖于安全协议:API的安全性很大程度上依赖于使用的HTTP方法和传输协议(如HTTPS)。如果传输过程中没有加密,数据可能在传输过程中被窃取或篡改。

    3. 输入验证至关重要:由于API接收外部传入的参数,对输入参数的验证必须严格。若缺乏验证,可能会导致SQL注入、命令注入等攻击。    

    SDK的网络安全特点 

    1. 内部使用为主:SDK通常是供内部开发者使用的工具包,相对而言不容易直接受到外部攻击。但如果SDK被嵌入到发布的应用中,其安全性会影响应用的整体安全。

    2. 依赖于编程安全:SDK的安全性与所使用的编程语言的安全性密切相关。例如,某些编程语言如果存在内存管理漏洞,可能会被利用来进行攻击。

    3. 集成安全风险:当SDK集成各种APIs时,可能会引入新的安全风险。如果集成的API存在安全漏洞,可能会通过SDK传播到最终的应用程序中。

图片

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

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

相关文章

双向链表

目录 链表的分类 概念 双向链表的实现 ① 结构 ② 初始化 ③ 打印 ④ 插入数据 ⑤ 删除数据 ⑥ 查找数据 ⑦ 在pos位置之前插入数据 ⑧ 删除pos位置的数据 ⑨ 销毁链表 总结 链表的分类 虽然有这么多的链表的结构,但是我们实际中最常⽤还是两种结构&…

怎么样才算得上熟悉高并发编程?

提到并发编程很多人就会头疼了;首先就是一些基础概念:并发,并行,同步,异步,临界区,阻塞,非阻塞还有各种锁全都砸你脸上,随之而来的就是要保证程序运行时关键数据在多线程…

PyCharm中Python项目打包并运行到服务器的简明指南

目录 一、准备工作 二、创建并设置Python项目 创建新项目 配置项目依赖 安装PyInstaller 三、打包项目 打包为可执行文件 另一种打包方式(使用setup.py) 四、配置服务器环境 五、上传可执行文件到服务器 六、在服务器上运行项目 配置SSH解释…

clickhouse 分片键的重要性

文章目录 背景反思为啥出现问题为啥默认的语义是local 背景 问题背景 详细内容可以看这个 反思为啥出现问题 为啥会出现链接里出现的问题,对于goal join 和 join 语义不一样的问题,那是因为分片键设计不合理的情况 如果表a和表b 都是user_id 作分片键…

S4 UPA of AA :新资产会计概览

通用并行会计(Universal Parallel Accounting)可以支持每个独立的分类账与其他模块集成,UPA主要是为了支持平行评估、多货币类型、财务合并、多准则财务报告的复杂业务需求 在ML层面UPA允许根据不同的分类账规则对物料进行评估,并…

数据结构之堆:原理与实现

1. 什么是堆? 堆(Heap)是一种特殊的完全二叉树,它的每个节点都遵循以下性质之一: 最大堆(Max-Heap):每个节点的值都大于等于其子节点的值,根节点是最大值。最小堆&…

DreamCamera2相机预览变形的处理

最近遇到一个问题,相机更换了摄像头后,发现人像角度顺时针旋转了90度,待人像角度正常后,发现 预览时图像有挤压变形,最终解决。在此记录 一人像角度的修改 先放示意图 设备预览人像角度如图1所示,顺时针旋…

GPT相关的学术库——收藏更新自用

GOT-OCR2.0 General OCR Theory: Towards OCR-2.0 via a Unified End-to-end Model https://github.com/Ucas-HaoranWei/GOT-OCR2.0/tree/main ChatPaper 工具名称工具作用是否在线?在线预览备注ChatPaper通过ChatGPT实现对论文进行总结,帮助科研人进…

LLM之学习笔记(一)

前言 记录一下自己的学习历程,也怕自己忘掉了某些知识点 Prefix LM 和 Causal LM区别是什么? Prefix LM (前缀语⾔模型)和 Causal LM(因果语言模型)是两者不同类型的语言模型,它们的区别在于生…

Python语法基础(三)

🌈个人主页:羽晨同学 💫个人格言:“成为自己未来的主人~” 我们这篇文章来说一下函数的返回值和匿名函数 函数的返回值 我们先来看下面的这一段函数的定义代码 # 1、返回值的意义 def func1():print(111111111------start)num166print…

用Pycharm安装manim

由于版本和工具的差异,manim的安装方式不尽相同。本文用Pycharm来安装manim. 一、准备工作:安装相应版本的python、pycharm和ffmpeg. 此处提供一种安装ffmpeg的方式 下载地址:FFmpeg 下载后,解压到指定目录。 配置环境变量&am…

【线程】Java多线程代码案例(2)

【线程】Java多线程代码案例(2) 一、定时器的实现1.1Java标准库定时器1.2 定时器的实现 二、线程池的实现2.1 线程池2.2 Java标准库中的线程池2.3 线程池的实现 一、定时器的实现 1.1Java标准库定时器 import java.util.Timer; import java.util.Timer…

云原生时代的轻量级反向代理Traefik

Traefik 是一个用于路由和管理网络流量的反向代理,同时也是一个支持多种协议(HTTP、HTTPS、TCP、UDP)的负载均衡器。它通过自动服务发现和动态配置,帮助开发者和运维团队轻松管理复杂的应用架构。 Traefik 的主要特点如下&#x…

JavaEE---计算机是如何工作的?

1.了解冯诺依曼体系结构 2.CPU的核心概念,CPU的两个重要指标(核心数和频率) 3.CPU执行指令的流程(指令表,一条一条指令,取指令,解析指令,执行指令) 4.操作系统核心概念(管理硬件,给软件提供稳定的运行环境) 5.进程的概念(运行起来的程序和可执行文件的区别) 6.进程的管理(…

【C++】简单数据类型详解

博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 💯前言💯字符型(char)1.1 ASCII 码表 💯整型(int)2.1 整型的分类2.2 有符号和无符号整型2.3 跨平台差异2.4 整型数据类型…

Vue构建错误解决:(error TS6133)xxx is declared but its value is never read.

TypeScript会检查代码中未使用的变量,如果vscode安装了Vue的语法检查工具,会看到告警提示,再npm run build的时候,这个警告会变成错误 解决方案1:删除定义了未使用的变量 推荐使用这种方案,能保证代码的质…

泷羽sec---shell作业

作业一 写计算器 使用bc命令 需要进行安装bc 代码如下: #!/bin/bash echo "-----------------------------------" echo "输入 f 退出" echo "可计算小数和整数" echo "用法如:1.12.2" echo "------…

混淆零碎知识点

minifyEnabled true //混淆开关 zipAlignEnabled true // Zipalign优化 shrinkResources true // 移除无用的resource文件 (必须要混淆开了之后才才可以设置为true) proguard-rules.pro 为混淆文件 //整个文件保留 不被混淆 -keep class com.cn…

DeSTSeg: Segmentation Guided Denoising Student-Teacher for Anomaly Detection

DeSTSeg: Segmentation Guided Denoising Student-Teacher for Anomaly Detection 清华、苹果 个人感觉 Introduction 很自然的让读者理解作者问题的提出,也有例子直接证明了这个问题的存在,值得借鉴!! Related work写的也很不…

第T9周:Tensorflow实现猫狗识别(2)

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 具体实现 (一)环境 语言环境:Python 3.10 编 译 器: PyCharm 框 架: Tensorflow 2.10.0 (二)具体…