#bitcoinjs
CVE-2026-107846 - bitcoinjs-lib
The Bitcoin JavaScript library bitcoinjs‑lib (versions before 5.2.1, 6.1.8 and 7.0.2) does not notice when a block’s transaction list contains duplicate entries.…

Too many irrelevant or confusing CVEs? Use stackflag.com

#bitcoinjslib #bitcoinjs #CVE #infosec
CVE-2026-107846: bitcoinjs-lib can accept duplicated transactions in a block
The Bitcoin JavaScript library bitcoinjs‑lib (versions before 5.2.1, 6.1.8 and 7.0.2) does not notice when a block’s transaction list contains duplicate.
stackflag.com
November 4, 2026 at 8:00 PM
🚨 EUVD-2026-117051
📊 9.3/10
🏢 bitcoinjs

📝 bitcoinjs-lib is a JavaScript Bitcoin library for Node.js and browsers. From 2.3.0 until 5.2.1, 6.1.8, and 7.0.2, fastMerkleRoot pads odd Merkle-tree ...

🔗 https://euvd.enisa.europa.eu/vulnerability/EUVD-2026-117051

#cybersecurity #infosec #cve #euvd
November 4, 2026 at 8:02 PM
🚨 CVE-2026-107846 — CVSS 9.3 CRITICAL

bitcoinjs-lib is a JavaScript Bitcoin library for Node.js and browsers. From 2.3.0 until 5.2.1, 6.1.8, and ...

🔎 https://stemshop.top/cve/CVE-2026-107846

#CVE #CyberSecurity #InfoSec
November 4, 2026 at 8:07 PM
(1/4) Bitcoinjs-lib corrige dos fallos que ocultaban comisiones de minería muy altas

Bitcoinjs-lib, una librería de JavaScript para crear aplicaciones de Bitcoin, corrigió dos fallos que podían hacer que un programa subestimara la comisión de minería.
October 28, 2026 at 8:36 AM
Two flaws in bitcoinjs-lib, the library used to build Bitcoin apps, can make software understate the miner fee a valid transaction would pay. In one case a fee of 900,000,000 satoshi was reported as 200 satoshi and the excessive-fee safeguard never fired. Patched versions 5.2.2,… #crypto #blockchain
crypto news 🧠 eicker.crypto (@crypto@eicker.news)
Two flaws in bitcoinjs-lib, the library used to build Bitcoin apps, can make software understate the miner fee a valid transaction would pay. In one case a fee of 900,000,000 satoshi was reported as 200 satoshi and the excessive-fee safeguard never fired. Patched versions 5.2.2, 6.1.9 and 7.0.4 require every input value to be present and consistent. https://cryptoslate.com/bitcoin-apps-risk-massive-fee-drain-and-2-library-bugs-are-blamed/ #Web3 #Blockchain #Bitcoin
dlvr.it
October 28, 2026 at 5:47 AM
(1/4) Bitcoinjs-lib corrige dos fallos que ocultaban comisiones de minería muy altas

Bitcoinjs-lib, una librería de JavaScript para crear aplicaciones de Bitcoin, corrigió dos fallos que podían hacer que un programa subestimara la comisión de minería.
October 28, 2026 at 8:36 AM
Bitcoin Developers Warned of Critical Security Flaw That Could Cost Millions
Bitcoin Developers Warned of Critical Security Flaw That Could Cost Millions
Critical vulnerabilities in Bitcoinjs-lib library addressed with patched versions 5.2.2 6.1.9 and 7.0.4
growmybag.tv
October 28, 2026 at 10:05 AM
You can now share your thoughts on vulnerability CVE-2024-49365 in Vulnerability-Lookup:
https://vulnerability.circl.lu/vuln/CVE-2024-49365

bitcoinjs - tiny-secp256k1

#vulnerabilitylookup #vulnerability #cybersecurity #bot
cvelistv5 - CVE-2024-49365
Vulnerability-Lookup - Fast vulnerability lookup correlation from different sources.
vulnerability.circl.lu
July 1, 2025 at 2:48 AM
You can now share your thoughts on vulnerability CVE-2024-49364 in Vulnerability-Lookup:
https://vulnerability.circl.lu/vuln/CVE-2024-49364

bitcoinjs - tiny-secp256k1

#vulnerabilitylookup #vulnerability #cybersecurity #bot
cvelistv5 - CVE-2024-49364
Vulnerability-Lookup - Fast vulnerability lookup correlation from different sources.
vulnerability.circl.lu
July 1, 2025 at 2:48 AM
So, uhm... why does nVidia use BitcoinJS in their windows driver updater app? (picture is from the opensource licences page)
December 3, 2024 at 10:27 PM
Anyone I know using BitcoinJS? https://github.com/bitcoinjs
bitcoinjs
Open source organisation for Bitcoin libraries. bitcoinjs has 41 repositories available. Follow their code on GitHub.
github.com
November 8, 2024 at 5:54 AM
Note: This is a correction to an earlier version of this post, which misidentified the JS library as LibbitcoinJS rather than BitcoinJS.
November 14, 2023 at 7:18 PM
Up to $1 billion stored in early Bitcoin wallets may be at risk due to "Randstorm" vulnerability

November 14, 2023
https://web3isgoinggreat.com/?id=randstorm
November 14, 2023 at 7:17 PM
Validate addresses and messages using public keys, addresses, and signatures.

bitcoinjs-message Uses the traditional signing process, which simply signs the message with the prefix (if not specified). \x18Bitcoin Signed Message:\n. This type of signing scheme is common, but it is limited as it…
Validate addresses and messages using public keys, addresses, and signatures.
bitcoinjs-message Uses the traditional signing process, which simply signs the message with the prefix (if not specified). \x18Bitcoin Signed Message:\n. This type of signing scheme is common, but it is limited as it only supports p2pkh. There are implementations that support other types of addresses with this schema (bitcoinjs-message Also supports p2wpkh and p2sh-p2wpkh, but not p2tr). However, there are no strict standards regarding this.
earlybirdsinvest.com
January 1, 2026 at 10:03 PM
how "addDummySigs" When sending satoshi from p2tr multisig script in golang?

I have a 2-of-3 multisig tap root script and create it like this: bitcoinjs-lib: builder := txscript.NewScriptBuilder() for i, pk := range leafPubkeys { if i == 0 { builder.AddData(pk)…
how "addDummySigs" When sending satoshi from p2tr multisig script in golang?
I have a 2-of-3 multisig tap root script and create it like this: bitcoinjs-lib: builder := txscript.NewScriptBuilder() for i, pk := range leafPubkeys { if i == 0 { builder.AddData(pk) builder.AddOp(byte(txscript.OP_CHECKSIG)) } else { builder.AddData(pk) builder.AddOp(byte(txscript.OP_CHECKSIGADD)) } } builder.AddOp(byte(txscript.OP_1 - 1 + 2)) builder.AddOp(byte(txscript.OP_GREATERTHANOREQUAL)) Then create a tx (send satoshi from script) and sign it with two keys. But when I send it to bitcoind it returns "invalid schnorr signature".
earlybirdsinvest.com
December 23, 2025 at 9:29 PM
Bitcoinjs-Lib: "Malicious non-standard" When using complex p2wsh in op_if/else

I'm trying to create and spend a P2WSH transaction on TestNet with a "complex" script, but I'm running into a bad, purposeless error that I don't know. My goal I want to create a P2WSH output using a script that allows…
Bitcoinjs-Lib: "Malicious non-standard" When using complex p2wsh in op_if/else
I'm trying to create and spend a P2WSH transaction on TestNet with a "complex" script, but I'm running into a bad, purposeless error that I don't know. My goal I want to create a P2WSH output using a script that allows spending under two conditions: A 4-to-4 multi-sig signature is provided. Alternatively, a time lock (for example, 5 minutes) will pass and a single recovery signature will be provided.
earlybirdsinvest.com
August 18, 2025 at 3:17 PM
Create a forwarding script using TapRoot address P2TR

I'm trying to create a transfer script. The entire script was provided below import * as bitcoin from "bitcoinjs-lib"; import * as tinysecp from "tiny-secp256k1"; import axios from "axios"; import ECPairFactory from "ecpair"; const ECPair =…
Create a forwarding script using TapRoot address P2TR
I'm trying to create a transfer script. The entire script was provided below import * as bitcoin from "bitcoinjs-lib"; import * as tinysecp from "tiny-secp256k1"; import axios from "axios"; import ECPairFactory from "ecpair"; const ECPair = ECPairFactory(tinysecp); bitcoin.initEccLib(tinysecp); const NETWORK = bitcoin.networks.testnet; const MEMPOOL_API = " // Helper function to validate UTXO function validateUtxo(utxo: any): void { if ( !utxo.txid || typeof utxo.vout !== "number" || typeof utxo.value !== "number" ) { throw new Error("Invalid UTXO structure"); } if (!/^(a-fA-F0-9){64}$/.test(utxo.txid)) { throw new Error("Invalid UTXO txid format"); } } export async function sendBTC_P2TR({ wif, recipient, amountSats, }: { wif: string; recipient: string; amountSats: number; }): Promise<{ success: boolean; message: string; txId?: string }> { try { console.log("🏁 Starting transaction process..."); // Input validation if (!wif || !recipient || !amountSats) { throw new Error("Missing required parameters"); } if (typeof amountSats !== "number" || amountSats <= 0) { throw new Error("Invalid amount"); } if (!recipient.startsWith("tb1p")) { throw new Error("Recipient must be a Taproot testnet address"); } // Key derivation const keyPair = ECPair.fromWIF(wif, NETWORK); if (!keyPair.privateKey) throw new Error("No private key derived from WIF"); const privateKey = keyPair.privateKey; const internalPubkey = Buffer.from( tinysecp.pointFromScalar(privateKey, true)!.slice(1) ); const p2tr = bitcoin.payments.p2tr({ internalPubkey, network: NETWORK }); const address = p2tr.address!; const scriptPubKey = p2tr.output!; console.log("📬 Sender Taproot address:", address); // Fetch UTXOs const { data: utxos } = await axios.get( `${MEMPOOL_API}/address/${address}/utxo` ); if (!utxos.length) return { success: false, message: "No UTXOs found" }; // Estimate fee const { data: fees } = await axios.get( `${MEMPOOL_API}/v1/fees/recommended` ); const feeRate = Math.max(fees.hourFee || 1, 2); const fee = Math.ceil(feeRate * 110); // Estimated vsize for P2TR // Select UTXO const utxo = utxos.find((u: any) => u.value >= amountSats + fee); if (!utxo) return { success: false, message: `No suitable UTXO found (needed ${amountSats + fee} sats)`, }; // Key tweaking const tweak = bitcoin.crypto.taggedHash("TapTweak", internalPubkey); let tweakedPrivKey = tinysecp.privateAdd(privateKey, tweak); if (!tweakedPrivKey) throw new Error("Failed to tweak private key"); // Build PSBT const psbt = new bitcoin.Psbt({ network: NETWORK }); psbt.addInput({ hash: utxo.txid, index: utxo.vout, witnessUtxo: { script: scriptPubKey, value: utxo.value }, tapInternalKey: internalPubkey, }); psbt.addOutput({ address: recipient, value: amountSats }); const change = utxo.value - amountSats - fee; if (change > 294) { // Dust limit psbt.addOutput({ address, value: change }); } // Signing (fixed approach) const tx = (psbt as any).__CACHE.__TX as bitcoin.Transaction; const hash = tx.hashForWitnessV1(0, (scriptPubKey), (utxo.value), 0x00); const signature = Buffer.from(tinysecp.signSchnorr(hash, tweakedPrivKey)); // Update with proper signature format psbt.updateInput(0, { tapKeySig: signature, }); // Final verification const validator = (pubkey: Buffer, msghash: Buffer, sig: Buffer) => { return tinysecp.verifySchnorr(msghash, pubkey, sig); }; psbt.validateSignaturesOfInput(0, validator); psbt.finalizeAllInputs(); const txHex = psbt.extractTransaction().toHex(); // Broadcast const { data: txId } = await axios.post(`${MEMPOOL_API}/tx`, txHex, { headers: { "Content-Type": "text/plain" }, }); return { success: true, message: "Transaction broadcasted", txId }; } catch (error: any) { console.error("Transaction failed:", error.message); return { success: false, message: error?.response?.data || error?.message || "Unknown error", }; } } …
earlybirdsinvest.com
August 8, 2025 at 2:51 AM
Tiny-Secp256k1 and Ecpair Webpack Issues

I've developed a browser extension using Webpack V5 and created a Bitcoin wallet with the Bitcoinjs-Lib and Ecpair libraries. However, when I try to load the WebAssembly module, I am getting an error. I would greatly appreciate any guidance or suggestions…
Tiny-Secp256k1 and Ecpair Webpack Issues
I've developed a browser extension using Webpack V5 and created a Bitcoin wallet with the Bitcoinjs-Lib and Ecpair libraries. However, when I try to load the WebAssembly module, I am getting an error. I would greatly appreciate any guidance or suggestions on how to successfully resolve this issue and instantiate the WebAssembly module in a browser extension. Error Message: Here is an important detail of my setup.
earlybirdsinvest.com
July 7, 2025 at 1:16 PM
I built a Bitcoin wallet solo in 4 months using BitcoinJS and React Native. Here’s everything I learned about infra, engineering, and building in public. #bitcoin
Here’s Everything I Learned Building a Bitcoin Wallet from Scratch in 4 Months
hackernoon.com
July 2, 2025 at 5:26 AM
⚠️ A critical vulnerability in early crypto wallets threatens billions of dollars in digital assets, identified by crypto-security firm Unciphered. #CryptoSecurity #BitcoinJS #Unciphered According to Bitcoin.
A Major Vulnerability Found in Early Crypto Wallet Software Risks Billions in Assets
⚠️ A critical vulnerability in early crypto wallets threatens billions of dollars in digital assets, identified by crypto-security firm Unciphered. #CryptoSecurity #BitcoinJS #Unciphered According to Bitcoin.
cryptonews.blue
November 16, 2023 at 11:05 PM
Old wallets storing crypto might be at risk! Unciphered, a cybersecurity firm, discovered a potential vulnerability in wallets generated by BitcoinJS called 'Randstorm'. #CyberSecurity #Cryptocurrency According to Benzinga.
Crypto Stored In Old Wallets Are At Risk Based On This Cybersecurity Firm's Data
Old wallets storing crypto might be at risk! Unciphered, a cybersecurity firm, discovered a potential vulnerability in wallets generated by BitcoinJS called 'Randstorm'. #CyberSecurity #Cryptocurrency According to Benzinga.
cryptonews.blue
November 15, 2023 at 7:28 PM
Discordで制御されるNodeCordRATがNPMパッケージ経由でChromeデータを窃取

調査会社Zscaler ThreatLabzによる最近の調査で、暗号資産(仮想通貨)分野の人々を狙った巧妙な新たな罠が見つかりました。2025年11月、研究者は、開発者が日常的にアプリを構築するために利用する巨大な公開ライブラリであるNPMに潜む3つの悪意あるソフトウェアパッケージを発見しました。…
Discordで制御されるNodeCordRATがNPMパッケージ経由でChromeデータを窃取
調査会社Zscaler ThreatLabzによる最近の調査で、暗号資産(仮想通貨)分野の人々を狙った巧妙な新たな罠が見つかりました。2025年11月、研究者は、開発者が日常的にアプリを構築するために利用する巨大な公開ライブラリであるNPMに潜む3つの悪意あるソフトウェアパッケージを発見しました。 これらのファイルは単なる不具合ではなく、研究者がNodeCordRATと名付けた特定のウイルスを配布するために設計されていました。これは基本的にリモートアクセス型トロイの木馬(RAT)で、第三者があなたのコンピュータにバックドアから侵入し、行動を監視したりファイルを盗んだりできるようにします。 欺瞞の連鎖 調査の過程で、攻撃者はマルウェアをアップロードするだけでなく、検知を回避するためのファイルの連鎖も作っていたことが指摘されました。彼らは、正規のbitcoinjsプロジェクトにある本物の信頼できるツールとほぼ同一に見える名前を使用していました。研究者によると、攻撃者(メールアドレスsupertalented730@gmail.comに紐づく人物)は、次の3つの特定パッケージをアップロードしました。 bip40(約958回ダウンロード) bitcoin-lib-js(約183回ダウンロード) bitcoin-main-lib(約2,286回ダウンロード) さらに調査を進めると、開発者が最初の2つのパッケージをインストールしようとした際、隠しスクリプトが自動的に3つ目のbip40を取り込み、そこに実際のウイルスが含まれていることが判明しました。この一連の処理はバックグラウンドで自動的に行われ、ユーザーには「はい/いいえ」のポップアップや警告は一切表示されません。 「bip40は単体パッケージとしてダウンロードすることも可能で、他のライブラリを完全に回避できます。開発者を欺いて不正なパッケージをダウンロードさせるため、攻撃者は正規のbitcoinjsプロジェクト内にある実在のリポジトリの名称バリエーションを使用しました」と、Zscalerのブログ投稿には記されています。 攻撃チェーン(出典:Zscaler) Discord経由で制御 この攻撃を独特かつ深刻なものにしているのは、ハッカー側へ「応答」する仕組みです。Discordは主にゲームやチャットに使われますが、これらのハッカーは、プライベートなDiscordチャンネルに簡単なテキストコマンドを送ることで、Discordをリモコンのように利用しました。これにより、ハッカーは感染したコンピュータに対して、何をすべきかを正確に指示できました。 研究者はさらに、このウイルスが特定の短縮コマンドに反応することも指摘しています。例えば、!runコマンドはシェルコマンドの実行を可能にし、攻撃者は任意のコードを実行できます。一方、!screenshotはデスクトップのスクリーンショットを撮影し、!sendfileはハードドライブ上の任意のファイルを選んで攻撃者のチャットへ直接アップロードできるようにします。 狙いは何か NodeCordRATは、保存されたパスワードやログイン情報などのChromeデータ、暗号資産ウォレット(特にMetaMaskのシードフレーズとデジタルキー)、そしてAPIシークレットを含むChromeデータを狙い撃ちします。これには、企業がウェブサイト運用のために使用する隠しファイル(.envファイルなど)も含まれます。 なお、これらのパッケージはその後NPMストアから削除されたものの、ダウンロードした数千人にとっては既に被害が発生している可能性があります。暗号資産や開発分野で働いている場合は、最近のダウンロードにこれらの特定の名前が含まれていないか確認するのがよいでしょう。 翻訳元:
blackhatnews.tokyo
January 8, 2026 at 4:29 PM