在 2020 年 11 月,路印協議(Loopring)的 LRC 協議費用金庫(Protocol Fee Vault)出現了一項嚴重漏洞。攻擊者利用存取控制機制上的缺陷,透過閃電貸攻擊操縱了代幣價格。此事件凸顯了強大的存取控制與持續性的 DeFi 安全監控對於防止高昂代幣損失的重要性。
路印(LRC)協議事件介紹
2020 年底,包括 Pickle Finance 和 88mph 在內的多個以太坊 DeFi 平台經歷了安全事件。為了檢測此類漏洞,BlockSec 開發了 ThunderForecast 系統,該系統識別出了一些可疑交易,這些交易涉及異常巨大的交易匯率差異,且同一個外部擁有帳戶(EOA)獲得了一致的以太幣(Ether)收益。
利用我們的 EthScope 系統,我們分析了這些交易,並發現了一個針對路印金庫協議漏洞的攻擊,具體來說是針對 LRC 協議費用金庫(LRCPFV)。這篇部落格文章詳細介紹了該攻擊、其影響,以及 DeFi 安全社群從中汲取的教訓。
LRC 協議費用金庫概述
路印是一個在以太坊上的開源去中心化交易所(DEX)協議。其原生代幣 LRC (ERC-20) 用於該生態系統中。路印的金庫協議(稱為 LRCPFV)用於儲存協議費用,並允許將費用兌換為 LRC 代幣。
LRCPFV 中存在漏洞的函數是 sellTokenForLRC,它允許在沒有適當存取控制的情況下將代幣兌換為 LRC,任何人皆可呼叫此函數。
function sellTokenForLRC(
address token,
uint amount
)
external
nonReentrant
{
require(amount > 0, "ZERO_AMOUNT");
require(token != lrcAddress, "PROHIBITED");
address recipient = tokenSellerAddress == address(0) ? owner : tokenSellerAddress;
if (token == address(0)) {
recipient.sendETHAndVerify(amount, gasleft());
} else {
token.safeTransferAndVerify(recipient, amount);
}
require(
tokenSellerAddress == address(0) ||
ITokenSeller(tokenSellerAddress).sellToken(token, lrcAddress),
"SELL_FAILURE"
);
emit TokenSold(token, amount);
}
由於該函數缺乏存取控制,攻擊者可以多次呼叫它來操縱代幣價格,並從套利機會中獲利。
攻擊細節
我們分析了一筆代表性的攻擊交易:0x00b2c...。該攻擊包含六個關鍵步驟:

- 閃電貸: 從閃電貸服務商(
0xEB7e...)借入 3,773.88 ETH。 - 初始兌換: 在 Uniswap V1-LRC 上以 1 ETH = 1.32878 LRC 的匯率將 3,773.88 ETH 兌換為 5,014.68 LRC。
- 金庫兌換: 透過呼叫存在漏洞的
sellTokenForLRC函數,將 LRCPFV 中儲存的 0.231 ETH 費用兌換為 0.000219 LRC。這一未經授權的呼叫操縱了 Uniswap 上的 LRC 價格,極大地提升了其相對於 ETH 的價值(1 ETH = 0.00094 LRC)。 - 獲利兌換: 在 Uniswap V1-LRC 上將 5,014.68 LRC 換回 3,774.09 ETH,由於價格被操縱,額外獲得了 0.215 ETH。
- 歸還貸款: 歸還 3,773.88 ETH 的閃電貸。
- 轉移利潤: 將 0.215 ETH 的利潤發送到攻擊者的 EOA。
此漏洞利用了閃電貸攻擊,結合了價格操縱與金庫合約中缺乏存取控制的缺陷。
攻擊影響與規模
該分析交易發生於 2020 年 10 月 13 日。根據 CoinGecko 的數據,當時 LRC 的價格約為 0.0005175 ETH。
我們的調查發現:
- 惡意合約: 攻擊者部署了 3 個合約(
0xa896...,0x414a...,0xd91d...)。 - 攻擊數量: 自 LRCPFV 部署所在的區塊 9,644,449 以來,攻擊者的 EOA(
0x81e8...)發起了 90 筆交易。 - 最大利潤: 單筆交易(
0x33eab...)產生了 9.89 ETH 的利潤。 - 總利潤: 約 80.97 ETH(截至 2020 年 10 月 1 日約為 48,849 美元)。
根本原因是 sellTokenForLRC 函數缺失存取控制,使得攻擊可以反覆進行。
教訓與總結
隨著以太坊 DeFi 生態系統的成長,存取控制漏洞等安全挑戰變得日益關鍵。雖然備受矚目的攻擊往往能吸引目光,但正如本事件所展示的,較不顯眼的漏洞也可能造成重大的金融損失。
路印因這項漏洞損失了約 80.97 ETH,這強調了進行嚴格智慧合約審計與持續安全監控的必要性。
對於 DeFi 協議而言,實施嚴格的存取控制、利用如 BlockSec 的智慧合約審計與 Phalcon Security 等工具,以及主動的風險管理,是保護數位資產的核心關鍵。
事件時間軸
- 2020/11/30: ThunderForecast 檢測到可疑交易。
- 2020/12/01: 使用 EthScope 完成詳細分析。
- 2020/12/02: 向路印團隊通報漏洞。
- 2020/12/03: 確認漏洞;並完成修復。
- 2020/12/03: 公開事件詳情。
- 2021/01/03: 該漏洞被分配為 CVE-2020-35962。



