Earlier quoted context omitted.
Source? Their twitter says "This morning CET, a former Ledger Employee fell victim to a phishing attack that gained access to their NPMJS account." And Github Actions automatically redacts the secret in the log
You are right, I should have waited for the postmortem.. it appeared the likely way because the secret was in the release pipeline env. However.. something doesn't add up. There is no chance that a malicious actor gained access and in a couple of hours put together this exploit. Or, I can't see someone putting together this exploit, THEN trying to spear-phish in hope of getting lucky and pressing the button.
Ledger's NPM account has been hacked
111–120 of 130 posts
Re: Ledger's NPM account has been hacked
#112How did the exploit work? Obviously it looks really bad for Ledger to keep having these web security failures, but the entire point of a hardware wallet is to make it so that you don't have to rely on the security of the code on your computer. If the hardware wasn't compromised (sounds like this was just JS), then there was no way for the exploit to take anyone's private key. It sounds to me like the exploit would wo…
> How did the exploit work? Web browsers support programs written in a language called JavaScript (JS). When you're on a website that provides interactivity beyond the basics of e.g. clicking links that go to other pages or buttons to submit forms, that's generally because there's one or more JS programs (scripts) on the page making it happen. (Actually, most websites have JS programs nowadays, even if they don't eve…
Re: Ledger's NPM account has been hacked
#113Earlier quoted context omitted.
> How did the exploit work? Web browsers support programs written in a language called JavaScript (JS). When you're on a website that provides interactivity beyond the basics of e.g. clicking links that go to other pages or buttons to submit forms, that's generally because there's one or more JS programs (scripts) on the page making it happen. (Actually, most websites have JS programs nowadays, even if they don't eve…
If this is an AI response, it's one I approve. Wordy, yet entertaining. Opinionated, but sharing my opinions.
I get that what we're looking at a browser extension that relies on a bunch of webshit, some of which was malware.
As somebody not versed in "web3" specific webshits, I thought the point of a hardware token is that there was some kind of verification on the device itself. So this doesn't seem sufficient to "drain" a wallet - right?
My assumption would be that the computer running the malware never gets the key material directly, rather it submits some request to the hardware token, which prompts the user with the details on some external physical display. The user reviews the details, then does something in meatspace that causes the hardware token to sign the something in question and pass it back to the software on the PC.
So isn't it the case that the user would have to approve the malware drain transaction themselves? And if not... what's the point of these devices, anyway?
Re: Ledger's NPM account has been hacked
#114And once again calls to allow optional signing support natively to NPM will be rejected citing that it might intimidate drive-by devs who do not want to learn to setup a yubikey or nitrokey for artifact signing. I have talked to the NPM team about this multiple times over the last several years and they literally believe no signing at all is better than some devs feeling pressured to sign. You need no stronger eviden…
This isn't quite accurate. In fact, npm did ship a form of code signing called 'npm provenance' in April 2023. We wrote a semi-official deep dive on the feature in cooperation with the npm team that explains how to sign your npm packages [1]. You can see npm provenance in action on this npm package page [2] if you scroll to the very bottom and look under the "Provenance" heading. [1]: https://socket.dev/blog/npm-prov…
Each maintainer has a signing key to identify themselves to the public without need for any central infra, and signs the packages they publish. Someone that accesses some centralized server or account will not be able to impersonate the key held by that developer or the signatures they issue.
This new provenance system and the fulcio system which it is based on, is a centralized setup where you use traditional, usually phishable, authentication with a SaaS, and then the SaaS takes your submission and signs it for you with a centrally managed keychain. Having done security auditing for many fintech signing systems, I can tell you I have almost never once seen anyone get this right, particularly when there is no accountability.
Is this done in a secure enclave with a public remote attestation of the software image running on it that I can locally compile and verify the matching hash of? Does that code enforce the participation of multiple distributed people to make updates, key exports, or key imports using shamirs secret sharing or similar?
Or maybe it is just sitting on an amazon box somewhere a few people ssh to from their daily driver macbooks ?
I don't -hate- centralized signing existing as an -option- if it is done very well and highly accountable (which fulcio is not, imo). That said, -mandating- centralized signing on behalf of developers as the only path is really insulting, as though people who write software can't type a couple commands to provision a PGP key on a smartcard and publish their key to keyoxide which is strictly better in every way from a threat modeling perspective.
Speaking of Fuclio, this was meant to "invent" a solution for container signing, even though PGP multisig has existed from the start. No one used it because none of the major players in container software documented it other than the podman team.
https://github.com/containers/image/blob/main/docs/container... https://docs.podman.io/en/latest/markdown/podman-image-trust...
Back to NodeJS, Debian and Arch already sign npm packages with PGP keys. It works fine. We need to let people actually do that with NPM. Tell me how many supply chain attacks have happened in Debian or Arch recently compared to NPM?
PGP may be a small barrier to entry, but it is a standard with solid smartcard support and works in practice. It should be the default recommendation to all developers, and end users should be able to set policies to only install packages signed by a trusted set of maintainer or reviewer keys.
Re: Ledger's NPM account has been hacked
#115We've been building Socket [1] to detect and block this exact type of supply chain attack. Our Socket AI scanner [2] successfully detected this attack. It uses dozens of static signals combined with an LLM to detect novel attacks that evade traditional scanning tools. This is what Socket AI produces when given @ledgerhq/connect-kit 1.1.7 to analyze: > The obfuscated code block is highly suspicious and likely contains…
Love Socket! A lot of folks (think most) were loading the compromised package through another package, @ledgerhq/connect-kit-loader [1], via a CDN call [2]. Would be great if Socket could pick up on this because Socket's @ledgerhq/connect-kit-loader page [3] doesn't include any warning. [1]: https://socket.dev/npm/package/@ledgerhq/connect-kit-loader [2]: https://github.com/LedgerHQ/connect-kit/blob/main/packages/c..…
We don't currently detect 'implicit dependencies' loaded via CDN URLs, though we'll look into what it would take to support this.
Re: Ledger's NPM account has been hacked
#116I actually laughed! Anyway, this is the list of affected software
github.com/wevm/wagmi github.com/wevm/wagmi github.com/family/connectkit github.com/scaffold-eth/scaffold-eth-2 github.com/RevokeCash/revoke.cash github.com/blocknative/web3-onboard github.com/blocknative/web3-onboard github.com/liquity/dev github.com/matter-labs/zksync-wallet-vue github.com/bankisan/zkShield github.com/zkemail/zk-email-verify github.com/iron-wallet/iron github.com/gmx-io/gmx-interface github.com/blocknative/web3-onboard github.com/reservoirprotocol/reservoir-kit github.com/daimo-eth/daimo github.com/AztecProtocol/aztec-packages github.com/lifinance/widget github.com/matter-labs/zksync-dapp-checkout github.com/gnosis/zodiac-modifier-roles github.com/scaffold-eth/Scaffold-ETH-DeFi-Challenges github.com/cowprotocol/cowswap github.com/cowprotocol/cowswap github.com/cowprotocol/cowswap github.com/canvasxyz/canvas github.com/lifinance/widget github.com/parity-asia/hackathon-2023-summer github.com/ubiquity/ubiquity-dollar github.com/TalismanSociety/talisman-web github.com/BanklessDAO/bankless-website github.com/lifinance/widget github.com/TalismanSociety/talisman github.com/zkemail/proof-of-twitter github.com/Ifechukwudaniel/Oracles github.com/Ifechukwudaniel/Oracles github.com/noir-lang/noir-examples github.com/voteagora/agora github.com/coinbase/build-onchain-apps github.com/Midas-Protocol/monorepo github.com/austintgriffith/stupid-staking github.com/MetaMask/metamask-sdk github.com/threshold-network/token-dashboard github.com/threshold-network/token-dashboard github.com/privacy-scaling-explorations/bandada github.com/lidofinance/lido-ethereum-sdk github.com/haqq-network/frontend github.com/reservoirprotocol/seaport-oracle github.com/ameensol/pools-ui github.com/Web3Auth/web3auth-wagmi-connector github.com/Orbiter-Finance/zkprover-dapp github.com/xmtp/xmtp-web github.com/etherspot/etherspot-react-transaction-buidler-demo-dapp github.com/base-org/web github.com/unlock-protocol/examples github.com/saRvaGnyA/decertify github.com/scaffold-eth/OP-RetroPGF3-Discovery-Voting github.com/lukso-network/universalprofile-test-dapp github.com/ScopeLift/token-shielder github.com/givepraise/praise github.com/0xRusso/fr3ela github.com/BreadchainCoop/breadchain-crowdstaking github.com/unstoppabledomains/uauth github.com/unstoppabledomains/uauth github.com/hyperlane-xyz/hyperlane-warp-ui-template github.com/mento-protocol/mento-web github.com/harendra-shakya/blockchain-lottery github.com/harendra-shakya/blockchain-lottery github.com/harendra-shakya/blockchain-lottery github.com/harendra-shakya/blockchain-lottery github.com/Koniverse/SubConnect github.com/saqlain1020/dapp-react-typescript-boiler github.com/carletex/notion-eip712 github.com/BuidlGuidl/event-wallet github.com/scobru/nimbus2000-ui github.com/scobru/nimbus2000-ui github.com/yieldprotocol/cacti-frontend github.com/BuidlGuidl/hacker-houses-streams github.com/jaxernst/scp github.com/bee-io/web3-connect github.com/bee-io/web3-connect github.com/bee-io/web3-connect github.com/moodysalem/eth-batch-deposit github.com/AztecProtocol/zk-money github.com/BuidlGuidl/zupass-scaffold-eth-2 github.com/LedgerHQ/connect-kit github.com/LedgerHQ/connect-kit github.com/LedgerHQ/connect-kit github.com/LedgerHQ/connect-kit github.com/LedgerHQ/connect-kit github.com/LedgerHQ/connect-kit github.com/LedgerHQ/connect-kit github.com/LedgerHQ/connect-kit github.com/LedgerHQ/connect-kit github.com/elmol/zk-proof-of-humanity github.com/swing-xyz/examples github.com/ahmetson/nft-bridge github.com/RogerPodacter/gas-lovers-nft github.com/kmjones1979/scaffold-eth-2-solidity github.com/irfanbozkurt/flashbot-recovery-bundler github.com/amy-jung/collectivedaoarchives.catalog github.com/ERC-3643/ERC-3643-DApp github.com/austintgriffith/impersonator-vision github.com/scaffold-eth/SablierV2_starterKit github.com/gnosis/mech npm/web3-onboard/ledger npm/web3-onboard/ledger npm/web3-onboard/ledger github.com/succinctlabs/telepathy-messenger-demo github.com/Votes-Project/votes-web github.com/wevm/wagmi github.com/cowprotocol/cowswap
Re: Ledger's NPM account has been hacked
#117Earlier quoted context omitted.
Love Socket! A lot of folks (think most) were loading the compromised package through another package, @ledgerhq/connect-kit-loader [1], via a CDN call [2]. Would be great if Socket could pick up on this because Socket's @ledgerhq/connect-kit-loader page [3] doesn't include any warning. [1]: https://socket.dev/npm/package/@ledgerhq/connect-kit-loader [2]: https://github.com/LedgerHQ/connect-kit/blob/main/packages/c..…
Thanks for reporting this. Fixed: https://socket.dev/npm/package/@ledgerhq/connect-kit-loader/... We don't currently detect 'implicit dependencies' loaded via CDN URLs, though we'll look into what it would take to support this.
Re: Ledger's NPM account has been hacked
#118Re: Ledger's NPM account has been hacked
#119And once again calls to allow optional signing support natively to NPM will be rejected citing that it might intimidate drive-by devs who do not want to learn to setup a yubikey or nitrokey for artifact signing. I have talked to the NPM team about this multiple times over the last several years and they literally believe no signing at all is better than some devs feeling pressured to sign. You need no stronger eviden…
https://wiki.debian.org/OpenPGP
> When joining the Debian project, developers need to identify themselves by providing an OpenPGP key that is signed by at least two existing members of the project.
Re: Ledger's NPM account has been hacked
#120Earlier quoted context omitted.
If this is an AI response, it's one I approve. Wordy, yet entertaining. Opinionated, but sharing my opinions.
Yet it doesn't seem to really answer the question. I get that what we're looking at a browser extension that relies on a bunch of webshit, some of which was malware. As somebody not versed in "web3" specific webshits, I thought the point of a hardware token is that there was some kind of verification on the device itself. So this doesn't seem sufficient to "drain" a wallet - right? My assumption would be that the com…