Home市場Liquidの準備金から4,000BTC、ホワイトハットを名乗る何者かが引き出す

Liquidの準備金から4,000BTC、ホワイトハットを名乗る何者かが引き出す

L-BTCを裏付けるBTCは、4,200BTC超から207BTC強まで減った。

Liquid Networkは日曜日、ホワイトハットハッカーとされる者が、L-BTCを裏付けるフェデレーションのウォレットから約4,000ビットコイン、約3億2,000万ドル相当を引き出したと明らかにした。ブリッジノードは無効化され、サイドチェーンは停止された。USDT、DePix、RWA(実物資産)を含むその他の発行資産に影響はなかったと、公式アカウントはXで説明している。

Liquid Networkは、アダム・バック氏のBlockstreamが立ち上げた、ビットコインのフェデレーション型サイドチェーンである。LBTCをはじめ複数の資産を発行しており、LBTCの裏付けとなるBTCはビットコインのメインチェーン上に置かれている。保管を担うのは、15の企業および身元の知られたメンバーによる大規模なマルチシグだ。準備金からコインを動かすには、15者のうち11者が有効なマルチシグネチャ・トランザクションに署名する必要がある。今回のハッキング前、準備金は4,200BTC超を保有していた。ハッキング後にBlockstreamのプルーフ・オブ・リザーブ(準備金証明)のページが示した残高は、207BTC強だった。

ハッカーは、SideSwapのPeg-out Authorization Key(ペグアウト認可鍵)を使ったペグアウト・トランザクションで、準備金アドレスから4,019.4BTCを引き出した。SideSwapはブリッジ取引所であり、Liquid Federationのメンバーでもある。手口の詳細はまだ確認されていない。ただ、LBTCサイドチェーン側のインフレーションバグが悪用され、それまで存在しなかった4,000LBTC超が生成されたうえで、フェデレーションからオンチェーンのビットコインへ換金されたように見える。コンセンサスのバグゆえにトランザクションが有効に映り、フェデレーションメンバーのHSM(ハードウェアセキュリティモジュール)セキュリティサーバーは、当時およそ3億2,000万ドル相当のBTC出金トランザクションに署名した。

オンチェーンでのやり取り

ハッカーは資金を、末尾が6gyqjlteのアドレスへ移した。そのアドレスからただちに新しいトランザクションへ署名し、OP_RETURNの任意データフィールドに「we are whitehats. contact us on chain.(我々はホワイトハットだ。オンチェーンで連絡してほしい)」というメッセージを載せた。本稿執筆時点で、コインはまだそのアドレスにあった。

ハッカーのアドレス宛には少額のメインネット・トランザクションが送られ、「Please contact [email protected]([email protected] まで連絡してほしい)」というOP_RETURNが続いた。Blockstreamの公開アドレスからのものと推測されるが、確認は取れていない。その後、ハッカーのアドレスからのOP_RETURNの支出には「Please contact us on Signal @m671aw.70(Signalの @m671aw.70 まで連絡してほしい)」というメッセージが載っていた。ただしこちらはスパムの可能性があり、盗まれた資金のあるアドレスとのつながりは示していない。

ブリッジノードは停止、チェーンはブロック生成を継続

今回の侵害を受けて、取引所はL-BTCの入金と出金を停止するよう求められた。Liquid Networkのブリッジノードは停止され、サイドチェーンへのアクセスは制限された。ただしチェーン自体はブロックを生成し続けていた。

JAN3のサムソン・モウCEOは、AquaのLiquid機能は影響を受けたが、オンチェーンのビットコインは動いていると述べた。Liquid Networkを利用する業界内の他のウォレットも、影響を受けるとみられていた。裏付けとなるBTCがこの時点で償還できず、LBTCを保有するユーザーは事実上、貯蓄をリスクにさらす状態に置かれた。Liquidチェーンは秘匿性が高く、ユーザーのオンチェーン分析はほとんど得られない。LBTCを個人ユーザーと、企業ないしBlockstream自身とがそれぞれどれだけ持っているかについても、公開情報は多くない。それでも資金が返還されなければ、Liquid Networkの利用者基盤にとって大きな打撃となる。

LBTCの利用者には、ハッカーとの対話が決着するのを待つ以外の選択肢がほとんどない。今回のハッキングの規模を考えると、ハッカーがそれだけのビットコインを盗んだまま逃げ切るのは難しいだろう。とはいえ不可能とは言い切れない。ハッカーが発見者報酬を求め、資金の大半を返還する——そうした展開はありうる。

Author

RELATED ARTICLES
.bitcoin-widget { background-color: #1a1a2e; color: white; padding: 20px; border-radius: 10px; max-width: 325px; width: 100%; font-family: Arial, sans-serif; box-sizing: border-box; margin: 0 auto; } .bitcoin-header { display: flex; align-items: center; margin-bottom: 15px; flex-wrap: wrap; } .bitcoin-icon { width: 24px; height: 24px; margin-right: 10px; } .price { font-size: 24px; margin: 0; margin-bottom: 10px; } .stats-container { display: flex; flex-wrap: wrap; justify-content: space-around; gap: 10px; margin-top: 10px; } .stat-column { text-align: center; flex: 1 1 30%; } .stat-label { font-size: 12px; color: #999; margin-bottom: 5px; } .stat-value { font-size: 14px; } .positive { color: #00ff00; } .negative { color: #ff0000; } .error-message { color: #ff0000; font-size: 12px; display: none; margin-top: 10px; } .view-charts-button { display: block; width: 100%; max-width: 250px; margin: 20px auto 0; padding: 10px; background-color: #ff9500; color: white; text-align: center; text-decoration: none; border-radius: 5px; font-size: 14px; font-weight: bold; } .view-charts-button:hover { background-color: #e68600; text-decoration: none; color: white; }
Bitcoin Bitcoin BTC/JPY
¥0
24hr %:
0.0%
24hr High:
¥0
24hr Low:
¥0
Error loading data. Check console for details.
VIEW 150+ BITCOIN CHARTS
async function updateBitcoinPrice() { try { const response = await fetch('https://api.coingecko.com/api/v3/coins/bitcoin?localization=false&tickers=false&market_data=true'); if (!response.ok) { throw new Error(`HTTP error! status: ${response.status}`); } const data = await response.json(); // Update price in JPY const price = data.market_data.current_price.jpy; const change = data.market_data.price_change_percentage_24h; // Percentage is currency-agnostic const high = data.market_data.high_24h.jpy; const low = data.market_data.low_24h.jpy; // Update price display with Yen symbol document.getElementById('bitcoin-price').textContent = `¥${price.toLocaleString('ja-JP', { minimumFractionDigits: 0, maximumFractionDigits: 0 })}`; // Update price change with color const changeElement = document.getElementById('price-change'); changeElement.textContent = `${change.toFixed(1)}%`; changeElement.className = 'stat-value ' + (change >= 0 ? 'positive' : 'negative'); // Update high and low prices with Yen symbol document.getElementById('high-price').textContent = `¥${high.toLocaleString('ja-JP', { minimumFractionDigits: 0, maximumFractionDigits: 0 })}`; document.getElementById('low-price').textContent = `¥${low.toLocaleString('ja-JP', { minimumFractionDigits: 0, maximumFractionDigits: 0 })}`; hideError(); } catch (error) { console.error('Error fetching Bitcoin price:', error); showError('Failed to fetch Bitcoin price'); } } function showError(message) { const errorElement = document.getElementById('error-message'); errorElement.textContent = message; errorElement.style.display = 'block'; } function hideError() { const errorElement = document.getElementById('error-message'); errorElement.style.display = 'none'; } // Initialize and start updates document.addEventListener('DOMContentLoaded', () => { try { updateBitcoinPrice(); setInterval(updateBitcoinPrice, 60000); } catch (error) { console.error('Initialization error:', error); showError('Initialization failed'); } });

LATEST NEWS

custom ad 1