| ▲ | junon 4 days ago |
| Hi, yep I got pwned. Sorry everyone, very embarrassing. More info: - https://github.com/chalk/chalk/issues/656 - https://github.com/debug-js/debug/issues/1005#issuecomment-3... Affected packages (at least the ones I know of): - ansi-styles@6.2.2 - debug@4.4.2 (appears to have been yanked as of 8 Sep 18:09 CEST) - chalk@5.6.1 - supports-color@10.2.1 - strip-ansi@7.1.1 - ansi-regex@6.2.1 - wrap-ansi@9.0.1 - color-convert@3.1.1 - color-name@2.0.1 - is-arrayish@0.3.3 - slice-ansi@7.1.1 - color@5.0.1 - color-string@2.1.1 - simple-swizzle@0.2.3 - supports-hyperlinks@4.1.1 - has-ansi@6.0.1 - chalk-template@1.1.1 - backslash@0.2.1 It looks and feels a bit like a targeted attack. Will try to keep this comment updated as long as I can before the edit expires. --- Chalk has been published over. The others remain compromised (8 Sep 17:50 CEST). NPM has yet to get back to me. My NPM account is entirely unreachable; forgot password system does not work. I have no recourse right now but to wait. Email came from support at npmjs dot help. Looked legitimate at first glance. Not making excuses, just had a long week and a panicky morning and was just trying to knock something off my list of to-dos. Made the mistake of clicking the link instead of going directly to the site like I normally would (since I was mobile). Just NPM is affected. Updates to be posted to the `/debug-js` link above. Again, I'm so sorry. |
|
| ▲ | 33a 4 days ago | parent | next [-] |
| We also caught this right away at Socket, https://socket.dev/blog/npm-author-qix-compromised-in-major-... While it sucks that this happened, the good thing is that the ecosystem mobilized quickly. I think these sorts of incidents really show why package scanning is essential for securing open source package repositories. |
| |
| ▲ | 4 days ago | parent | next [-] | | [deleted] | |
| ▲ | Yoric 4 days ago | parent | prev | next [-] | | So how do you detect these attacks? | | |
| ▲ | 33a 4 days ago | parent | next [-] | | We use a mix of static analysis and AI. Flagged packages are escalated to a human review team. If we catch a malicious package, we notify our users, block installation and report them to the upstream package registries. Suspected malicious packages that have not yet been reviewed by a human are blocked for our users, but we don't try to get them removed until after they have been triaged by a human. In this incident, we detected the packages quickly, reported them, and they were taken down shortly after. Given how high profile the attack was we also published an analysis soon after, as did others in the ecosystem. We try to be transparent with how Socket work. We've published the details of our systems in several papers, and I've also given a few talks on how our malware scanner works at various conferences: * https://arxiv.org/html/2403.12196v2 * https://www.youtube.com/watch?v=cxJPiMwoIyY | | |
| ▲ | Yoric a day ago | parent | next [-] | | So, from what I understand from your paper, you're using ChatGPT with careful prompts? | |
| ▲ | ATechGuy 3 days ago | parent | prev [-] | | You rely on LLMs riddled with hallucinations for malware detection? | | |
| ▲ | jmb99 3 days ago | parent | next [-] | | I'm not exactly pro-AI, but even I can see that their system clearly works well in this case. If you tune the model to favour false positives, with a human review step (that's quick), I can image your response time being cut from days to hours (and your customers getting their updates that much faster). | | | |
| ▲ | Culonavirus 3 days ago | parent | prev | next [-] | | He literally said "Flagged packages are escalated to a human review team." in the second sentence. Wtf is the problem here? | | |
| ▲ | ATechGuy 3 days ago | parent [-] | | What about packages that are not "flagged"? There could be hallucinations when deciding to (or not) "flag packages". | | |
| ▲ | orbital-decay 3 days ago | parent [-] | | >What about packages that are not "flagged"? You can't catch everything with normal static analysis either. LLM just produces some additional signal in this case, false negatives can be tolerated. | | |
| ▲ | ATechGuy 3 days ago | parent [-] | | static analysis DOES NOT hallucinate. | | |
| ▲ | tripzilch a day ago | parent | next [-] | | well, you've never had a non-spam email end up in your spam folder? or the other way around? when static analysis does it, it's called a "misclassification" | |
| ▲ | Twirrim 3 days ago | parent | prev [-] | | So what? They're not replacing standard tooling like static analysis with it. As they mention, it's being used as additional signal alongside static analysis. There are cases an LLM may be able to catch that their static analysis can't currently catch. Should they just completely ignore those scenarios, thereby doing the worst thing by their customers, just to stay purist? What is the worst case scenario that you're envisioning from an LLM hallucinating in this use case? To me the worst case is that it might incorrectly flag a package as malicious, which given they do a human review anyway isn't the end of the world. On the flip side, you've got LLM catching cases not yet recognised by static analysis, that can then be accounted for in the future. If they were just using an LLM, I might share similar concerns, but they're not. |
|
|
|
| |
| ▲ | wiseowise 3 days ago | parent | prev | next [-] | | > We use a mix of static analysis and AI. Flagged packages are escalated to a human review team. “Chat, I have reading comprehension problems. How do I fix it?” | | |
| ▲ | atanasi 2 days ago | parent [-] | | Reading comprehension problems can often be caught with some static analysis combined with AI. |
| |
| ▲ | Mawr 3 days ago | parent | prev [-] | | "LLM bad" Very insightful. |
|
| |
| ▲ | veber-alex 4 days ago | parent | prev [-] | | AI based code review with escalation to a human | | |
| ▲ | Yoric 4 days ago | parent [-] | | I'm curious :) Does the AI detect the obfuscation? | | |
| ▲ | 33a 4 days ago | parent | next [-] | | It's actually pretty easy to detect that something is obfuscated, but it's harder to prove that the obfuscated code is actually harmful. This is why we still have a team of humans review flagged packages before we try to get them taken down, otherwise you would end up with way too many false positives. | | |
| ▲ | Yoric 3 days ago | parent [-] | | Yeah, what I meant is that obfuscation is a strong sign that something needs to be flagged for review. Sadly, there's only a thin line between obfuscation and minification, so I was wondering how many false positives you get. Thanks for the links in your other comment, I'll take a look! |
| |
| ▲ | justusthane 4 days ago | parent | prev [-] | | Probably. It’s trivial to plug some obfuscated code into an LLM and ask it what it does. | | |
| ▲ | spartanatreyu 4 days ago | parent [-] | | Yeah, but just imagine how many false positives and false negatives there would be... |
|
|
|
| |
| ▲ | hsbauauvhabzb 4 days ago | parent | prev [-] | | [flagged] | | |
| ▲ | josephg 3 days ago | parent | next [-] | | Apparently it found this attack more or less immediately. It seems strange to attack a service like this right after it actively helped keep people safe from malware. I'm sure its not perfect, but it sounds like they deserve to take a victory lap. | | |
| ▲ | hsbauauvhabzb 3 days ago | parent [-] | | I don’t think celebrating a company who has a distinct interest in prolonging a problem while they profit off it is a good thing, no. | | |
| ▲ | josephg 3 days ago | parent [-] | | They're profiting off helping to solve the problem through early warning and detection. And by keeping their customers safe from stuff like this. Seems good to me. I want more attention and more tooling around this problem. You seem mad at them for helping solve a real problem? |
|
| |
| ▲ | fn-mote 4 days ago | parent | prev | next [-] | | You could at least offer some kind of substantive criticism of the tool (“socket”). | | |
| ▲ | hsbauauvhabzb 4 days ago | parent [-] | | Do I need any? Automated tools cannot prevent malicious code being injected. While they can make attempts to evaluate common heuristics and will catch low hanging malware, they are not fool proof against highly targeted attacks. Either way, the parent post is clearly ambulance chasing rather than having a productive conversation, which should really be about whether or not automatically downloading and executing huge hierarchal trees of code is absolutely fucking crazy, rather than a blatant attempt to make money off an ongoing problem without actually solving anything. | | |
| ▲ | 33a 4 days ago | parent | next [-] | | When we find malware on any registry (npm, rubygems, pypi or otherwise), we immediately report it to the upstream registry and try to get it taken down. This helps reduce the blast radius from incidents like this and mitigates the damage done to the entire ecosystem. You can call it ambulance chasing, but I think this is a good thing for the whole software ecosystem if people aren't accidentally bundling cryptostealers in their web apps. And regarding not copying massive trees of untrusted dependencies: I am actually all for this! It's better to have fewer dependencies, but this is also not how software works today. Given the imperfect world we have, I think it's better to at least try to do something to detect and block malware than just complain about npm. | | |
| ▲ | hsbauauvhabzb 4 days ago | parent [-] | | So instead you prolong the problem while making money? Nice! | | |
| ▲ | jondwillis 3 days ago | parent [-] | | I’m all for thinking about second, or third, or fourth order effects of behavior, but unless you have proof that Socket is doing something like lobbying that developers keep using NPM against their own best interests, frankly, I don’t know what your point here is. |
|
| |
| ▲ | josephg 3 days ago | parent | prev | next [-] | | > Do I need any? Automated tools cannot prevent malicious code being injected. While they can make attempts to evaluate common heuristics and will catch low hanging malware, they are not fool proof against highly targeted attacks. So just because a lock isn't 100% effective at keeping out criminals we shouldn't lock our doors? | | |
| ▲ | hsbauauvhabzb 3 days ago | parent [-] | | Im not sure how that relates to the company ambulance chasing on what should be a public service announcement without a shade of advertising. That’s like lock companies parading around when their neighbour is murdered during a burglary but they weren’t because they bought a Foobar(tm) lock. |
| |
| ▲ | LocalH 3 days ago | parent | prev [-] | | The more tools that exist to help find vulnerabilities, the better, as long as they're not used in a fully automated fashion. Human vetting is vital, but using tools to alert humans to such issues is a boon. |
|
| |
| ▲ | hsbauauvhabzb 4 days ago | parent | prev [-] | | For those interested, points associated with this post spiked to at least 4 then dropped back to one. Take of that what you will. |
|
|
|
| ▲ | winwang 4 days ago | parent | prev | next [-] |
| Just want to agree with everyone who is thanking you for owning up (and so quickly). Got phished once while drunk in college (a long time ago), could have been anyone. NPM being slowish to get back to you is a bit surprising, though. Seems like that would only make attacks more lucrative. |
| |
| ▲ | sneak 4 days ago | parent | next [-] | | Can happen to anyone… who doesn’t use password manager autofill and unphishable 2FA like passkeys. Most people who get phished aren’t using password managers, or they would notice that the autofill doesn’t work because the domain is wrong. Additionally, TOTP 2FA (numeric codes) are phishable; stop using them when U2F/WebAuthn/passkeys are available. I have never been phished because I follow best practices. Most people don’t. | | |
| ▲ | junon 4 days ago | parent | next [-] | | I use a password manager. I was mobile, the autofill stuff isn't installed as I don't use it often on my phone. In 15 years of maintaining OSS, I've never been pwned, phished, or anything of the sort. Thank you for your input :) | | |
| ▲ | yawaramin 3 days ago | parent | next [-] | | I'm angry about this. Large megacorps with the budget of medium-sized countries allocate the minimum amount of budget to maintain their auth systems and still allow the use of phishable auth methods. If npm disabled passwords and forced people to use passkeys, this huge problem just disappears tomorrow. But instead, we're left with this mess where ordinary developers are forced to deal with the consequences of getting phished. | | |
| ▲ | hdjrudni 3 days ago | parent [-] | | Passkeys can be a pain in the ass too. Evidentially I set up my Yubikey with Github as some point, which is fine if I'm at my desktop where my key is plugged in, but if I want to sign in on mobile.... now what? I just couldn't log in on mobile for months until I realized I think there's a button on there somewhere that's like "use different 2fa" but then what was even the point of having a key registered if it can be bypassed. | | |
| ▲ | sneak 3 days ago | parent | next [-] | | You can use software u2f (iCloud supports this), you don’t need Yubikeys. Also, Yubikeys work on phones just fine, via both NFC and USB. | |
| ▲ | dchest 3 days ago | parent | prev | next [-] | | While you can setup passkeys with YubiKey, the most common intended use case is key pairs that are synchable via your Apple/Google/password manager account. So, once you add a passkey, you'll be able to sign in on mobile with it automatically. | |
| ▲ | nialv7 3 days ago | parent | prev | next [-] | | you can use yubikeys for both passkey and password+2fa. this way you aren't bypassing anything. and btw, you can get USB-C yubikeys so you can plug it into your phone. if even that's not an option, you can get a USB-C to USB-A adapter. | |
| ▲ | yawaramin 3 days ago | parent | prev [-] | | > but if I want to sign in on mobile.... now what? Just set up a new passkey on the mobile device. |
|
| |
| ▲ | sneak 3 days ago | parent | prev | next [-] | | I never copy and paste passwords. Any time you find yourself wanting to do that, alarm bells should be ringing. Password managers can’t help you if you don’t use them properly. Spotify steals (and presumably uploads) your clipboard, as well as other apps. Autofill is your primary defense against phishing, as you (and hopefully some others) learned this week. | | |
| ▲ | johnisgood 3 days ago | parent | next [-] | | Do not give them permission to your clipboard. It is possible today. I copy and paste passwords and I clear the clipboard afterwards, and I do not use junk like Spotify, and were I to use Spotify, it would be through the browser, not the application. Were it the application, it would be firejailed to oblivion. It is possible to restrict clipboard access when running applications inside Firejail, i.e. Firejail allows you to restrict access to X11 and Wayland sockets, which prevents the sandboxed application from reading or writing to the system clipboard. See: "--x11=none", "--private=...", "--private-tmp", and so forth. You can run a GUI app with isolated clipboard via "firejail --x11=xvfb app". For Wayland, you should block access to the Wayland socket by adding "--blacklist=/run/user/*/wayland-*". I do not use autofill on desktop at all. I use it on Android, however. | |
| ▲ | jasode 3 days ago | parent | prev [-] | | >Autofill is your primary defense against phishing, The autofill feature is not 100% reliable for various reasons: (1) some companies use different domains that are legitimate but don't exactly match the url in the password manager. Troy Hunt, the security expert who runs https://haveibeenpwned.com/ got tricked because he knew autofill is often blank because of legit different domains[1]. His sophisticated knowledge and heuristics of how autofill is implemented -- actually worked against him. (2) autofill doesn't work because of technical bugs in the plugin, HTML elements detection, interaction/incompatibility with new browser versions, etc. It's a common complaint with all password plugins: https://www.google.com/search?q=1password+autofill+doesn%27t... https://www.1password.community/discussions/1password/1passw... https://github.com/bitwarden/clients/issues?q=is%3Aissue%20a... ... so in the meantime while the autofill is broken, people have to manually copy-paste the password! The real-world experience of flaky and glitchy autofill distorts the mental decision tree. Instead of, "hey, the password manager didn't autofill my username/password?!? What's going on--OH SHIT--I'm being phished!" ... it becomes "it didn't autofill in the password (again) so I assume the Rube-Goldberg contraption of pw manager browser plugin + browser version is broken again." Consider the irony of how password managers not being perfectly reliable causes sophisticated technical minds to become susceptible to social engineering. In other words, password managers inadvertently create a "Normalization of Deviance" : https://en.wikipedia.org/wiki/Normalization_of_deviance [1] >Thirdly, the thing that should have saved my bacon was the credentials not auto-filling from 1Password, so why didn't I stop there? Because that's not unusual. There are so many services where you've registered on one domain (and that address is stored in 1Password), then you legitimately log on to a different domain. -- from: https://www.troyhunt.com/a-sneaky-phish-just-grabbed-my-mail... | | |
| ▲ | mdaniel 3 days ago | parent [-] | | I want to live in a world where the 1Password CEO makes a formal apology for this failure, and applies the necessary internal pressure to treat any "autofill does not work" as a P0 The number of cases in this thread, about a malware attack basically because of 1Password, where people mention their bad experience with 1Password is really stretching the "no such thing as bad publicity" theory |
|
| |
| ▲ | ants_everywhere 4 days ago | parent | prev | next [-] | | sounds like you should use it on your phone then | |
| ▲ | bingabingabinga 4 days ago | parent | prev | next [-] | | > In 15 years of maintaining OSS, I've never been pwned, phished, or anything of the sort. Well, until now. | |
| ▲ | typpilol 4 days ago | parent | prev [-] | | I just don't get how you didn't look for an announcement about npm resetting 2fa. Especially when you get a random reset | | |
| ▲ | acdha 4 days ago | parent [-] | | Because you’re one person with a job which isn’t security, and the world is full of legitimate warnings from companies telling you that you must do something by an arbitrary deadline? They screwed up, but we have thousands of years of evidence that people make mistakes even when they really know better and the best way to prevent that is to remove places where a single person making a mistake causes a disaster. On that note, how many of the organizations at risk do you think have contributed a single dollar or developer-hour supporting the projects they trust? Maybe that’s where we should start looking for changes. |
|
| |
| ▲ | grumple 3 days ago | parent | prev | next [-] | | You can use password manager autofill and hardware 2fa and still get phished. All it takes is you rushing, not paying attention, clicking on a link, and logging in (been caught by my own security team doing this). Yes, in an ideal world you're going to be 100% perfect. The world is not ideal, unfortunately. I don't have a solution, but demanding humans behave perfectly in order to remain secure is not a reasonable ask. | |
| ▲ | acdha 3 days ago | parent | prev | next [-] | | I also use WebAuthn where possible but wouldn’t be so cocky. The most likely reason why we haven’t been phished because we haven’t been targeted by a sophisticated attacker. One side note: most systems make it hard to completely rely on WebAuthn. As long as other options are available, you are likely vulnerable to an attack. It’s often easier than it should be to get a vendor to reset MFA, even for security companies. | | |
| ▲ | typpilol 3 days ago | parent | next [-] | | But this wasn't even really a spear fishing attack. It was a generic Phish email you were in every single Corp 101 security course | | |
| ▲ | acdha 3 days ago | parent [-] | | The attacker did have a great domain name choice, didn’t overuse it to the point where it got on spam block lists, and got them at a moment of distraction, so it worked. It’s really easy to look at something in a training exercise and say “who’d fall for that” without thinking about what happens when you’re not at your best in a calm, focused state. My main point was simply that the better response isn’t to mock them but to build systems which can’t fail this badly. WebAuthn is great, but you have to go all in if you want to prevent phishing. NPM would also benefit immensely from putting speed bumps and things like code signing requirements in place, but that’s a big usability hit if it’s not carefully implemented. | | |
| ▲ | typpilol 3 days ago | parent [-] | | I wouldn't consider a .help domain to be a great choice. Ive literally never for a support email or any email from a .help domain. I'm not mocking them, just trying to understand how so many red flags slipped past. Domain name
No auto-fill
Unannounced MFA resets
Etc... My point is that nothing could have saved this person except extreme security measures. There's literally no conclusion here besides: 1. Lock everything down so extremely that it's extremely inconvenient to prevent mistakes 99% of people don't make. (How many npm packages vs the total have been hijacked, less than 1%) 2. This person was always going to be a victim eventually... And that's a hard pill to swallow. For me and the maintainer. Being in network security it's my actual nightmare scenario. The only lesson to be learned is you need extreme security measures for even the most experienced of internet users. This wasn't your grandma clicking a link, it's a guy who's been around for decades in the online / coding world. It also makes me suspicious but that's a road I'd rather keep myself |
|
| |
| ▲ | sneak 3 days ago | parent | prev [-] | | The failure here was that his password manager was not configured and he manually copied and pasted the credentials into the wrong webpage. A password manager can’t manage passwords if you don’t configure it and use it. | | |
| ▲ | acdha 3 days ago | parent [-] | | Yes, and we know that’s a thing which people are trained to do by all of the sites which are sloppy about their login forms or host names so we should assume that attackers can trick people into doing it, even many people who think they are too smart for it. Hubris is quite a boon for attackers. |
|
| |
| ▲ | gajgajendra a day ago | parent | prev | next [-] | | > I have never been phished because I follow best practices. Most people don’t. You forgot to mention that you are both highly skilled and practiced at phishing yourself... don't you think that helps too? | |
| ▲ | a day ago | parent | prev [-] | | [deleted] |
| |
| ▲ | internetter 4 days ago | parent | prev | next [-] | | in general npm does a not-too-great job with these things | | |
| ▲ | tripplyons 4 days ago | parent [-] | | Remember, NPM stands for Now Part of Microsoft! (Microsoft owns GitHub, which owns NPM.) | | |
| ▲ | thayne 4 days ago | parent [-] | | Which means they don't have the excuse of being a volunteer effort to not be on top of this. MS has plenty of resources. | | |
| ▲ | dabockster 4 days ago | parent [-] | | If you're running this kind of infrastructure online these days, you have every right to require payment somehow. Don't work for free. |
|
|
| |
| ▲ | wer232essf 4 days ago | parent | prev [-] | | [dead] | | |
|
|
| ▲ | hackerindio 4 days ago | parent | prev | next [-] |
| Hey, no problem, man. You do a lot for the community, and it's not all your fault. We learn from our mistakes. I was thinking of having a public fake profile to avoid this type of attack, but I'm not sure how it would work on the git tracking capabilities. Probably keeo it only internally for you&NPM ( the real one ) and have some fake ones open for public but not sure, just an obfuscated idea.
Thanks for taking the responsibility and working in fixing ASAP. God bless you. |
| |
| ▲ | junon 4 days ago | parent | next [-] | | Unfortunately wouldn't have helped. They skimmed my npm-only address directly from the public endpoint. | |
| ▲ | Imustaskforhelp 4 days ago | parent | prev [-] | | Wow, that's actually kinda genius not gonna lie. Honestly, I would love seeing some 2fa or some other way to prevent pwning. Maybe having a sign up with google with all of its flaws still might make sense given how it might be 2fa. But google comes with its own privacy nightmares. |
|
|
| ▲ | Cthulhu_ 4 days ago | parent | prev | next [-] |
| Tbh, it's not your fault per se; everybody can fall for phishing emails. The issue, IMO, lies with npmjs which publishes to everyone all at the same time. A delayed publish that allows parties like Aikido and co to scan for suspicious package uploads first (e.g. big changes in patch releases, obfuscated code, code that intercepts HTTP calls, etc), and a direct flagging system at NPM and / or Github would already be an improvement. |
| |
| ▲ | junon 4 days ago | parent [-] | | Being able to sign releases would help, too. I would happily have that enabled since I'm always publishing from one place. | | |
| ▲ | Yoric 4 days ago | parent | next [-] | | Wouldn't they have been able to change your key if they had compromised your entire npm account? Also, junon.support++ – big thanks for being clear about all this. | | |
| ▲ | veber-alex 4 days ago | parent | next [-] | | Hmm, maybe npm needs to do the same thing the iPhone does now. If you change your key you can't use it for like 12 hours or something? | |
| ▲ | junon 4 days ago | parent | prev | next [-] | | Yes though in theory my public key would have been published elsewhere at least for verification. Valid point though, yes they would have been able to do that. | |
| ▲ | dabockster 4 days ago | parent | prev | next [-] | | For this kind of infrastructure, some kind of real world verification may be necessary as well. Like having human ran phone verification (not AI, an actual call center) using information intentionally kept offline for securing more widespread and mission critical packages. They can't pwn what they can't find online. | |
| ▲ | jmb99 3 days ago | parent | prev [-] | | Push to many repos with a brand new key would (should) trigger red flags. | | |
| ▲ | Yoric 3 days ago | parent [-] | | Good point. But how should the red flag materialize? |
|
| |
| ▲ | OptionOfT 4 days ago | parent | prev | next [-] | | Provenance can be added to NPM https://docs.npmjs.com/generating-provenance-statements So if the hacker did an npm publish from local it would show up. | |
| ▲ | josephg 3 days ago | parent | prev [-] | | Yeah; I wish provenance was more widely used. I think about this a lot for mobile apps. If you take an opensource iOS app like signal, you can read the source code on github. But there's actually no guarantee that the code on github corresponds in any way to the app I download from the app store. With nodejs packages, I can open up node_modules and read the code. But packages get a chance to run arbitrary code on your computer after installation. By the time you can read the source code, it may be too late. |
|
|
|
| ▲ | zachrip 4 days ago | parent | prev | next [-] |
| Thanks for sounding the alarm. I've sent an abuse email to porkbun to hopefully get the domain taken down. |
| |
| ▲ | junon 4 days ago | parent [-] | | Thank you, I appreciate it! I did so as well and even called their support line to have them escalate it. Hopefully they'll treat this as an urgent thing; I'd imagine I'm far from the only one getting these. | | |
| ▲ | zachrip 4 days ago | parent [-] | | It's down, so there's some good news. Probably worth submitting to IC3 as well. |
|
|
|
| ▲ | zachleat 4 days ago | parent | prev | next [-] |
| Yo, someone at npm needs to unpublish simple-swizzle@0.2.3 IMMEDIATELY. It’s still actively compromised. |
| |
| ▲ | junon 4 days ago | parent | next [-] | | It's been almost two hours without a single email back from npm. I am sitting here struggling to figure out what to do to fix any of this. The packages that have Sindre as a co-publisher have been published over but even he isn't able to yank the malicious versions AFAIU. If there's any ideas on what I should be doing, I'm all ears. EDIT: I've heard back, they said they're aware and are on it, but no further details. | | |
| ▲ | alper 3 days ago | parent | next [-] | | NPM is a Github company and when there was a relatively serious attack in Github Actions a while back there was also pretty much zero response from them. Github is SOC2 compliant, but that of course means nothing really. | |
| ▲ | lambda 4 days ago | parent | prev | next [-] | | They have yanked the bad version of simple-swizzle by now, which was the last of the packages that I was tracking. It took them quite a long time to do so. | |
| ▲ | 9dev 4 days ago | parent | prev | next [-] | | My god. The npm team should urgently review their internal processes. These two hours of neglect will cost a lot of money downstream. At this stage, they act nothing short of irresponsible. | |
| ▲ | dabockster 4 days ago | parent | prev [-] | | I haven't published anything to npm in over a decade. But if you still have access to git, a cli, or a browser where the login is cached and you can access it, you should do so and either take the code down or intentionally sabotage/break it. |
| |
| ▲ | greatestdevever 2 days ago | parent | prev [-] | | I can not find the package anymore. I think someone did it already. |
|
|
| ▲ | pryelluw 4 days ago | parent | prev | next [-] |
| Thank you for your service. Please take care and see this as things that happen and not your own personal failure. |
|
| ▲ | cataflam 4 days ago | parent | prev | next [-] |
| Hey, you're doing an exemplary response, transparent and fast, in what must be a very stressful situation! I figure you aren't about to get fooled by phishing anytime soon, but based on some of your remarks and remarks of others, a PSA: TRUSTING YOUR OWN SENSES to "check" that a domain is right, or an email is right, or the wording has some urgency or whatever is BOUND TO FAIL often enough. I don't understand how most of the anti-phishing advice focuses on that, it's useless to borderline counter-productive. What really helps against phishing : 1. NEVER EVER login from an email link. EVER. There are enough legit and phishing emails asking you to do this that it's basically impossible to tell one from the other. The only way to win is to not try. 2. U2F/Webauthn key as second factor is phishing-proof. TOTP is not. That is all there is. Any other method, any other "indicator" helps but is error-prone, which means someone somewhere will get phished eventually. Particularly if stressed, tired, or in a hurry. It just happened to be you this time. Good luck and well done again on the response! |
| |
| ▲ | graemep 3 days ago | parent | next [-] | | > NEVER EVER login from an email link. EVER Login using one off email links (instead of username + password) is increasingly common which means its the only option. | | |
| ▲ | cataflam 3 days ago | parent | next [-] | | In that case 1. You just requested it, I'm not saying to never click link on transactional emails you requested. You still need to click on those verify email links 2. It replaces entering your password, so you're not entering your password on a link from an email, which is the very wrong thing. | |
| ▲ | hirako2000 3 days ago | parent | prev [-] | | At least you've requested that email, to be able to login. The timing chance for a phishing mail to come here and there is insignificant. OP is referring to communications that are one way street, the (pseudo) organisation to you. | | |
| ▲ | graemep 3 days ago | parent [-] | | Its a lot lower risk, its still not great IMO. Email is really not designed for it, and it trains people to use links to login. | | |
| ▲ | kngspook 3 days ago | parent | next [-] | | Yeah, I hate these. It's also a very not-ergonomic was to sign in. I wish those companies would redirect those efforts to passkeys. | | |
| ▲ | hirako2000 3 days ago | parent [-] | | It's very ergonomic for those who discovered the internet via an iPhone, who think Gmail is email. They can't remember their passwords, and wouldn't know where how to recover most cryptographic factors. They have an email account they tend to have access to and use magic links to login , they are very happy with that. Not promoting the pattern, I also find it worrying the majority of internet users have no basic understanding of authentication and the risk for their digital identity. |
| |
| ▲ | danenania 2 days ago | parent | prev [-] | | Username/password typically has the same issue via reset password links. | | |
| ▲ | graemep 2 days ago | parent [-] | | I agree. However you use them less often, so its far harder for someone to time it right. If you use username instead of email address attackers have to guess that too. One quite serious problem I see quite often is using email plus password for login, and notifying on failed login that the email is not in the system, letting attackers validate which emails are logins. | | |
| ▲ | danenania 2 days ago | parent [-] | | It happens less often, but it's also more believable that it would be sent without a user action—e.g. "We had a security incident. Please click here to change your password." And this is exactly the kind of phishing attack that is most effective, as this particular incident shows. So I'd say it's actually a worse phishing vector than magic links. |
|
|
|
|
| |
| ▲ | diggan 4 days ago | parent | prev [-] | | Or you know, get a password manager like the rest of us. If your password manager doesn't show the usual autofill, since the domain is different than it should, take a step back and validate everything before moving on. Have the TOTP in the same/another password manager (after considering the tradeoffs) and that can also not be entered unless the domain is right :) | | |
| ▲ | SchemaLoad 3 days ago | parent | next [-] | | I feel like it's extremely common for the autofill to not work for various reasons even when you aren't being phished. I have to manually select the site to fill fairly often, especially inside apps where the password manager doesn't seem to match the app to the website password. Passkeys seem like the best solution here where you physically can not fall for a phishing attack. | | |
| ▲ | vaylian 3 days ago | parent | next [-] | | > I feel like it's extremely common for the autofill to not work for various reasons even when you aren't being phished. This is how Troy Hunt got phished. He was already very tired after a long flight, but his internal alarm bells didn't ring loud enough, when the password manager didn't fill in the credentials. He was already used to autofill not always working. | | |
| ▲ | junon 3 days ago | parent [-] | | This is why I haven't bothered with them (the browser extensions; I have used password managers for years and years) and thus why they weren't there to protect against the attack. |
| |
| ▲ | diggan 3 days ago | parent | prev [-] | | > I feel like it's extremely common for the autofill to not work for various reasons even when you aren't being phished I dunno, it mostly seems to not work when companies change their field names/IDs, or just 3rd party authentication, then you need to manually add domains. Otherwise my password manager (1Password) works everywhere where I have an account, except my previous bank which was stuck in the 90s and disallowed pasting the passwords. If you find that your password manager doesn't work with most websites (since it's "extremely common") you might want to look into a different one, even Firefox+Linux combo works extremely well with 1Password. Not affiliated, just a happy years+ user. > Passkeys seem like the best solution here where you physically can not fall for a phishing attack. Yeah, I've looked into Passkeys but without any migration strategy or import/export support (WIP last time I looked into it), it's not really an alternative just yet, at least for me personally. I have to be 100% sure I can move things when the time ultimately comes for that. | | |
| ▲ | mdaniel 3 days ago | parent | next [-] | | I'm glad you've had such good experience with autofill consistently working for you. My experience has been closer to that of the sibling comments: 60/40 so I often just give up and copy-paste. I actually did try jettisoning 1Password for Proton Pass but that was even worse, so I went back > without any migration strategy or import/export support Since you're already a 1Password user, I wanted to draw your attention to the "Show debugging tools" in the "Settings > Advanced" section. From that point, you can say "Copy Item JSON" and it will give you the details you would want for rescuing the Passkey. Importing it into something else is its own journey that I can't help with {
"overview": {
"passkey": {
"credentialId": "...",
"rpId": "example.com",
"userHandle": "..."
},
...
"details": {
"passkey": {
"type": "webauthn",
"createdAt": 175.......,
"privateKey": "eyJ...",
"userHandle": "..."
}
I would guess their "op" CLI would allow similar, but I don't have the magic incantation to offer, whereas that Copy JSON is painless | |
| ▲ | kngspook 3 days ago | parent | prev [-] | | My understand is the people behind passkeys are working on an import/export solution. Who knows when it'll happen though. For now, when companies let me have multiple passkeys, that's sufficient for me. I put one on my Apple Keychain and one in 1Password. |
|
| |
| ▲ | cataflam 4 days ago | parent | prev | next [-] | | I mostly agree and I do use one. You only need read the whole thread however to see reasons why this would sometimes not be enough: sometimes the password manager does not auto-fill, so the user can think it's one of those cases, or they're on mobile and they don't have the extension there, or... As a matter of fact, he does use one, that didn't save him, see: https://news.ycombinator.com/item?id=45175125 | | |
| ▲ | eviks 4 days ago | parent [-] | | > sometimes the password manager does not auto-fill So pick one that does? That's like its top 2 feature > he does use one He doesn't since he has no autofill installed, so loses the key security+ convenience benefit of automatch | | |
| ▲ | acdha 4 days ago | parent | next [-] | | > So pick one that does? That's like its top 2 feature Still doesn’t work 100% of the time, because half of the companies on earth demote their developer time to breaking 1995-level forms. That’s why every popular password manager has a way to fill passwords for other domains, why people learn to use that feature, and why phishers have learned to convince people to use that feature. WebAuthn prevents phishing. Password managers reduce it. This is the difference between being bulletproof like Superman or a guy in a vest. | | |
| ▲ | vinterson 3 days ago | parent | next [-] | | Given recent vuln of password manager extensions on desktop leaking passwords to malicious sites, I have disabled autofill on desktop... And autofill didn't work for me on ycombinator on mobile... Autofill is too unreliable. | |
| ▲ | eviks 3 days ago | parent | prev | next [-] | | You don't need 100%, just a high enough frequency that you wouldn't get used to dismissing the fail on auto pilot. Perfect shouldn't be the enemy of the good? | |
| ▲ | sunaookami 3 days ago | parent | prev [-] | | Then good password managers will still show you only the logins for that domain. If the login is on another domain then you would have saved it anyways when first logging in/registering and if the site moved then you can get suspicious and check carefully first. | | |
| ▲ | acdha 3 days ago | parent | next [-] | | All password managers allow copy-paste (which is what happened here) and the popular ones all offer you the ability to search and fill passwords from other domains. It's important to understand why they do, because it's also why these attacks continue to work: the user _thinks_ they are working around some kind of IT screwup, and 9 times out of 10 (probably closer to 99 out of 100) that's correct. Every marketing-driven hostname migration, every SSO failure, every front-end developer who breaks autofill, every “security expert” who was an accountant last year saying password managers are a vulnerability helps train users to think that it's not suspicious when you have to search for a different variation of the hostname or copy-paste a password. That's why WebAuthn doesn't allow that as a core protocol feature, preventing both this attack and shifting the cost of unnecessary origin changes back to the company hosting the site. Attacking this guy for making a mistake in a moment of distraction is like prosecuting a soldier who was looking the other way when someone snuck past: wise leaders know that human error happens and structure the system to be robust against a single mistake. | |
| ▲ | voxic11 3 days ago | parent | prev [-] | | What are good password managers for chrome and Firefox on Android? | | |
| ▲ | Ghoelian 3 days ago | parent | next [-] | | Personally a big fan of 1Password. On the topic of autofill, the only website it sometimes won't fill is Reddit, which you know, whatever, I never go there anymore anyway. As a developer I also love their ssh and gpg integrations, very handy. I do get it for free from work, but if I had to choose one myself I'd have to pay for I'd probably still pick 1Passwrod. | | |
| ▲ | mdaniel 3 days ago | parent [-] | | > I do get it for free from work, but if I had to choose one myself I'd have to pay for I'd probably still pick 1Passwrod. I wanted to highlight that "getting it for free from work" isn't a sweetheart deal offered just to OP, but a feature of 1Password for Teams, meaning all employees of a business that uses 1Password automatically have a Family license for use at home https://support.1password.com/link-family/ And, for clarity, it's merely a financial relationship: the business cannot manage your Family account, cannot see its contents, and if you have a separation event you can retain the Family account forever in a read only capacity or you can take over the payment (or, heh, I presume move to another employer that also uses 1Password) and nothing changes for your home passwords |
| |
| ▲ | sunaookami 2 days ago | parent | prev [-] | | I use selfhosted Bitwarden (Vaultwarden). |
|
|
| |
| ▲ | voxic11 3 days ago | parent | prev | next [-] | | Mobile autofill requires you to make other security compromises. | | | |
| ▲ | y1n0 4 days ago | parent | prev [-] | | He didn't say it didn't have the autofill feature, he said sometimes it doesn't work. I've experienced this pretty routinely with two different managers. | | |
| ▲ | eviks 4 days ago | parent [-] | | Yes he did, read again > I was mobile, the autofill stuff isn't installed |
|
|
| |
| ▲ | FooBarWidget 3 days ago | parent | prev [-] | | I wish it's that easy. 1Password autofill on Android Chrome broke for me a month ago. Installed all updates, checked settings, still nothing. Back to phishing prone copy paste. |
|
|
|
| ▲ | Goofy_Coyote 3 days ago | parent | prev | next [-] |
| Absolutely best response here. Folks from multi-billion dollar companies with multimillion dollar packages should learn a few things from this response. |
|
| ▲ | kidk 4 days ago | parent | prev | next [-] |
| Could happen to any of us. Thanks for reacting so quickly!! |
|
| ▲ | aftbit 4 days ago | parent | prev | next [-] |
| Didn't your password manager notice that npmjs dot help was not a legit domain and avoid auto-filling there? |
| |
|
| ▲ | winterqt 4 days ago | parent | prev | next [-] |
| Thank you for the swift and candid response, this has to suck. :/ > The author appears to have deleted most of the compromised package before losing access to his account. At the time of writing, the package simple-swizzle is still compromised. Is this quote from TFA incorrect, since npm hasn’t yanked anything yet? |
| |
| ▲ | junon 4 days ago | parent [-] | | Quote is probably added recently. Not entirely correct as I have not regained access; nothing happening to the packages is of my own doing. npm does appear to have yanked a few, slowly, but I still don't have any insight as to what they're doing exactly. |
|
|
| ▲ | SkyPuncher 4 days ago | parent | prev | next [-] |
| The fact that NPMs entire ecosystem relies on this not happening regularly is very scary. I’m extremely security conscious and that phishing email could have easily gotten me. All it takes is one slip up. Tired, stressed, distracted. Bokm, compromised |
|
| ▲ | jap 4 days ago | parent | prev | next [-] |
| Could happen to anyone, many thanks for addressing this quickly. |
|
| ▲ | jacquesm 4 days ago | parent | prev | next [-] |
| I hate that kind of email when sent out legitimately. Google does this crap all the time pretty much conditioning their customers to click those links. And if you're really lucky it's from some subdomain they never bothered advertising as legit. Great of you to own up to it. |
| |
| ▲ | antod 4 days ago | parent | next [-] | | Atlassian and MS are terrible for making email notifications that are really hard to distinguish from phishing emails. Using hard to identify undocumented random domains in long redirect chains, obfuscating links etc etc. | |
| ▲ | mikeryan 4 days ago | parent | prev [-] | | I’ve started ignoring these types of emails and wait to do any sort of credentials reset until I get an alert when I log in (or try to) for just this reason. |
|
|
| ▲ | BlackjackCF 4 days ago | parent | prev | next [-] |
| Thank you for being quick and upfront about this! |
|
| ▲ | nodesocket 4 days ago | parent | prev | next [-] |
| What did the phishing email say that made you click and login? |
| |
| ▲ | junon 4 days ago | parent [-] | | That it had been more than 12 months since last updating them. Npm has done outreach before about doing security changes/enhancements in the past so this didn't really catch me. Screenshot here: https://imgur.com/a/q8s235k | | |
| ▲ | rollcat 4 days ago | parent | next [-] | | @everyone in the industry, everywhere: Urgency is poison. Please, please put a foot in the door whenever you see anyone trying to push this kind of sh*t on your users. Make one month's advance notice the golden standard. I see this pattern in scam mail (including physical) all the time: stamp an unreasonably short notice and expect the mark to panic. This scam works - and this is why legit companies that try this "in good faith" should be shamed for doing it. Actual alerts: just notify. Take immediate, preventive, but non-destructive action, and help the user figure out how to right it - on their own terms. | | |
| ▲ | notmyjob 4 days ago | parent [-] | | Agree, but this example wasn’t even that aggressive in its urgency and op said they were merely ticking things off the todo, not feeling alarmed by the urgency. The problem is email as it’s used currently. The solution is to not use email. | | |
| ▲ | niwtsol 4 days ago | parent | next [-] | | The email says accounts will start locking Sept 10th and it was sent Sept 8th - so a 48 hour urgency window or an account would be locked is urgency IMO | | |
| ▲ | 4 days ago | parent | next [-] | | [deleted] | |
| ▲ | notmyjob 4 days ago | parent | prev [-] | | Fair enough, was just thinking about many low effort scams that have “EMERGENCY!!! ACT NOW!!!” in red boldface. This, by being slightly? less aggressive is actually less likely to trip my “this is phishing” detector. Obviously ymmv. |
| |
| ▲ | naikrovek 4 days ago | parent | prev | next [-] | | > The solution is to not use email. and use what? instant message? few things lack legitimacy more than an instant message asking you to do something. Links in email are much more of a problem than email itself. So tempting to click. It's right there, you don't have to dig through bookmarks, you don't have to remember anything, just click. A link is seductive. the actual solution is to avoid dependencies whenever possible, so that you can review them when they change. You depend on them. You ARE reviewing them, right? Fewer things to depend on is better than more, and NPM is very much an ecosystem where one is encouraged to depend on others as much as possible. | | |
| ▲ | rollcat 3 days ago | parent | next [-] | | > the actual solution is to avoid dependencies whenever possible, so that you can review them when they change. If you're publishing your software: you can't "not" depend on some essential service like source hosting or library index. > You ARE reviewing them, right? Werkzeug is 20kloc and is considered "bare bones" of Python's server-side HTTP. If you're going to write a complex Python web app using raw WSGI, you're just going to repeat their every mistake. While at it: review Python itself, GCC, glibc, maybe Linux, your CPU? Society depends on trust. | |
| ▲ | notmyjob 3 days ago | parent | prev [-] | | Depends what you use it for. I don’t think email is a single thing in that regard. For example I’ve used it as a backup method for important files and also as 2 factor. Those are wholly different things that warrant different solutions. The majority of email volume is not person to person communication but part of some corporation/spammers/scammers business model who at best, like my bank, is using it to shift liability away from themselves onto consumers and at worst is attempting to defraud me of all I own. It’s still useful in business, maybe, but pretty sure teams/slack/… will win eventually. |
| |
| ▲ | lelanthran 4 days ago | parent | prev [-] | | > The problem is email as it’s used currently. The solution is to not use email. No. The problem is unsigned package repositories. The solution is to tie a package to an identity using a certificate. Quickest way I can think off would be requiring packages to be linked to a domain so that the repository can always check incoming changes to packages using the incoming signature against the domain certificate. | | |
| ▲ | benchloftbrunch 3 days ago | parent | next [-] | | As long as you're OK with self signed certificates or PGP keys, I'd be on board with this. I really, really dislike the idea of using TLS certificates as we know them for this purpose, because the certificate authority system is too centralized, hierarchical, and bureaucratic, tightly coupled to the DNS. That system is great for the centralized, hierarchical, bureaucratic enterprises who designed it in the 90s, but would be a pain in the ass for a solo developer, especially with the upcoming change to 45 day lifetimes. | | |
| ▲ | lelanthran 3 days ago | parent [-] | | > As long as you're OK with self signed certificates or PGP keys, I'd be on board with this. I am with PGP but more wary of self-signed certs, though even self-signed certs allow mass revocation of packages when an author's cert is compromised. |
| |
| ▲ | cluckindan 4 days ago | parent | prev | next [-] | | And one pwned domain later, we are back in square one. | | |
| ▲ | lelanthran 3 days ago | parent [-] | | > And one pwned domain later, we are back in square one. 1. It's an extra step: before you pwn the package, you need to pwn a domain. 2. When a domain is pwned, the packages it signs can be revoked with a single command. |
| |
| ▲ | dabockster 4 days ago | parent | prev | next [-] | | That wouldn't work against a really sophisticated attacker. Especially for something that's clearly being maintained for free by one overworked person in their spare time (yet again). You'd need some kind of offline verification method as well for these widely used infrastructure libraries. | | |
| ▲ | lelanthran 3 days ago | parent [-] | | > That wouldn't work against a really sophisticated attacker. Nothing "really works" against a sophisticated hacker :-/ Doesn't mean that "defense in depth" does not apply. > You'd need some kind of offline verification method as well for these widely used infrastructure libraries. I don't understand why this is an issue, or even what it means: uploading a new package to the repository requires the contributor to be online anyway. The new/updated/replacement package will have to be signed. The signature must be verified by the upload script/handler. The verification can be done using the X509 certificate issued for the domain of the contributor. 1. If the contributor cannot afford the few dollars a year for a domain, they are extremely vulnerable to the supply chain attack anyway (by selling the maintenance of the package to a bad actor), and you shouldn't trust them anyway. 2. If the contributor's domain gets compromised you only have to revoke that specific certificate, and all packages signed with that certificate, in the past or in the future, would not be installable. As I have repeatedly said in the past, NPM (and the JS tools development community in general) had no adults in the room during the design phase. Everything about JS stacks feels like it was designed by children who had never programmed in anything else before. It's a total clown show. | | |
| ▲ | benchloftbrunch 3 days ago | parent | next [-] | | > X509 certificate It should be a PGP or SSH key, absolutely not an X509 certificate (unless you allow self signed). Personal identity keys should be fully autonomous and not contingent on the formal recognition of any external authority. | |
| ▲ | idiotsecant 3 days ago | parent | prev [-] | | If only they would have had the benefit of you being around to do all that work with your glorious hindsight. | | |
| ▲ | lelanthran 3 days ago | parent [-] | | > If only they would have had the benefit of you being around to do all that work with your glorious hindsight. They didn't need me; plenty of repositories doing signed packages existed well before npm was created. Which is why I likened them to a bunch of kids - they didn't look around at how the existing repos were designed, they just did the first thing that popped into their head. | | |
| ▲ | idiotsecant 3 days ago | parent [-] | | On the other hand, they did the actual work when nobody else did. It's so easy to take potshots, when you've never done anything consequential enough for the results to matter as much as they do for npm. |
|
|
|
| |
| ▲ | rollcat 3 days ago | parent | prev [-] | | > The solution is to tie a package to an identity using a certificate. Identity on the Internet is a lie. Nobody knows you're a dog. The solution is to make security easy and accessible, so that the user can't be confused into doing the insecure thing. | | |
| ▲ | lelanthran 3 days ago | parent [-] | | > Identity on the Internet is a lie. What do you think HTTPS is? | | |
| ▲ | mdaniel 3 days ago | parent | next [-] | | Transport Layer Security, and has nothing to do with Identity. Take for example the perfectly valid certificate that was issued for npmjs[.]help which unquestionably does not belong to Microsoft/GitHub. Hell, even the certificate for npmjs.com is 'O=Google Trust Services' which doesn't sound like any of the business entities one would expect to own that cert | |
| ▲ | rollcat 2 days ago | parent | prev [-] | | "Whoever was on the cacert list that ships with your browser" has signed "I claim to be Acme Widgets Inc. and I own microsoft.com". |
|
|
|
|
| |
| ▲ | SSLy 4 days ago | parent | prev | next [-] | | Can you post full message headers somewhere? It'd be interesting which MTA was involved in delivery from the sender's side. | | |
| ▲ | junon 4 days ago | parent [-] | | Yep - https://gist.github.com/Qix-/c1f0d4f0d359dffaeec48dbfa1d40ee... | | |
| ▲ | nsdfg 4 days ago | parent | next [-] | | https://mailtrap.io/contact-details/ | |
| ▲ | SSLy 4 days ago | parent | prev | next [-] | | let's see the header of interest: Received: from npmjs.help by smtp.mailtrap.live
| | | |
| ▲ | alexellisuk 4 days ago | parent | prev [-] | | How did simply opening this email in something like Gmail or a desktop client result in it being able to compromise NPM packages under your control? I'm just curious - and as a word of warning to others so we can learn. I may be missing some details, I've read most of the comments on the page. | | |
| ▲ | junon 4 days ago | parent [-] | | I clicked the link like a genius :) | | |
| ▲ | osa1 4 days ago | parent | next [-] | | I don't understand. The link could've come from anywhere (for example from a HN comment). How does just clicking on it give your package credentials to someone else? Is NPM also at fault here? I'd naively think that this shouldn't be possible. For example, GitHub asks for 2FA when I change certain repo settings (or when deleting a repo etc.) even when I'm logged in. Maybe NPM needs to do the same? | | |
| ▲ | dboreham 4 days ago | parent | next [-] | | OP entered their credentials and TOTP code, which the attacker proxied to the real npmjs.com FWIW npmjs does support FIDO2 including hard tokens like Yubikey. They do not force re-auth when issuing an access token with publish rights, which is probably how the attackers compromised the packages. iirc GitHub does force re-auth when you request an access token. | | |
| ▲ | osa1 4 days ago | parent [-] | | > They do not force re-auth when issuing an access token with publish rights, which is probably how the attackers compromised the packages I'm surprised by this. Yeah, GitHub definitely forces you to re-auth when accessing certain settings. |
| |
| ▲ | koil 4 days ago | parent | prev | next [-] | | As OC mentioned elsewhere, it was a targeted TOTP proxy attack. | | |
| ▲ | hughw 4 days ago | parent [-] | | So, he clicked the link and then entered his correct TOTP? how would manually typing the url instead of clicking the link have mitigated this? | | |
| ▲ | Mogzol 4 days ago | parent [-] | | They wouldn't have manually typed the exact URL from the email, they would have just typed in npmjs.com which would ensure they ended up on the real NPM site. Or even if they did type out the exact URL from the email, it would have made them much more likely to notice that it was not the real NPM URL. |
|
| |
| ▲ | 4 days ago | parent | prev [-] | | [deleted] |
| |
| ▲ | alexellisuk 4 days ago | parent | prev [-] | | :-( How did the link hijack your password/2fa? Or did you also enter some stuff on the form? |
|
|
|
| |
| ▲ | bflesch 4 days ago | parent | prev | next [-] | | Thanks for sharing, I've created an OTX entry for this: https://otx.alienvault.com/pulse/68bf031ee0452072533deee6 | | | |
| ▲ | twoodfin 4 days ago | parent | prev | next [-] | | Perfect example of why habituating users to renewing credentials (typically password expiration) is a terrible practice. | | |
| ▲ | NooneAtAll3 4 days ago | parent | next [-] | | is there an actual habituation? that message feels like it could work as a first-time as well | | |
| ▲ | twoodfin 4 days ago | parent | next [-] | | We should be immediately suspicious when we get any solicitation to "renew" something "expired" in a security domain. Swapping un-compromised secrets is essentially always more risky than leaving them be. Regardless of whether the real NPM had done this in the past, decades of dumb password expiration policies have trained us that requests like this are to be expected rather than suspected. | |
| ▲ | nicoburns 4 days ago | parent | prev [-] | | If legitimate companies didn't do this, then the email would be suspicious. | | |
| |
| ▲ | anonymars 4 days ago | parent | prev [-] | | Frustrating that you're being downvoted https://pages.nist.gov/800-63-FAQ/#q-b05 |
| |
| ▲ | nodesocket 4 days ago | parent | prev | next [-] | | Yikes, looks legit. Curious what are the destination addresses? Would like to monitor them to see how much coin they are stealing. | | |
| ▲ | FergusArgyll 4 days ago | parent | next [-] | | 0x66a9893cC07D91D95644AEDD05D03f95e1dBA8Af 0x10ed43c718714eb63d5aa57b78b54704e256024e 0x13f4ea83d0bd40e75c8222255bc855a974568dd4 0x1111111254eeb25477b68fb85ed929f73a960582 0xd9e1ce17f2641f24ae83637ab66a2cca9c378b9f Source: https://github.com/chalk/chalk/issues/656#issuecomment-32670... | | |
| ▲ | dbdr 4 days ago | parent [-] | | Next comment: > Those are swap contract addresses, not attacker addresses. E.g. 0x66a9893cC07D91D95644AEDD05D03f95e1dBA8Af the Uniswap v4 universal router addr. > Every indication so far is that the attacker stole $0 from all of this. Which is a best-case outcome. | | |
| |
| ▲ | mcintyre1994 4 days ago | parent | prev | next [-] | | There's a lot, looks like they start at line 103 in the gist here: https://gist.github.com/sindresorhus/2b7466b1ec36376b8742dc7... | |
| ▲ | hunter2_ 4 days ago | parent | prev [-] | | In terms of presentation, yes. In terms of substance, short deadlines are often what separate phishing from legitimate requests. | | |
| ▲ | mrguyorama 4 days ago | parent [-] | | There is NO reliable indicators, because every single one of these "Legit requests don't ..." recommendations has been done by a local bank trying to get their customers to do something. My local credit union sent me a "please change your password" email from a completely unassociated email address with a link to the change password portal. I emailed them saying "Hey it looks like someone is phishing" and they said, "nope, we really, intentionally, did this" Companies intentionally withhold warning emails as late as possible to cause more people to incur late fees. So everyone is used to "shit, gotta do this now or get screwed" You can't hope to have good security when everyone's money is controlled by organizations that actively train people to have bad OPSEC or risk missing rent. | | |
| ▲ | cataflam 4 days ago | parent | next [-] | | > There is NO reliable indicators Completely agree. The only reliable way is to never use an email/SMS link to login, ever. | | |
| ▲ | hunter2_ 3 days ago | parent [-] | | Or go ahead and use them, but abort if your password manager doesn't auto fill. Such abort scenarios include not only a password field without auto fill, but also a total lack of password field (e.g., sites that offer OTP-only authentication), since either way you don't have your password manager vetting the domain. |
| |
| ▲ | hunter2_ 4 days ago | parent | prev [-] | | I agree: any of the potential indicators of phishing (whether it's poor presentation, incorrect grammar, tight deadlines, unusual "from" addresses, unusual domains in links, etc.) can easily have false positives which unfortunately dull people's senses. That doesn't mean they can't continue to be promulgated as indicators of possible (not definite) phishing, though. I used the word "often" rather than "always" for this reason. |
|
|
| |
| ▲ | IshKebab 4 days ago | parent | prev | next [-] | | And then what happens when you click the link? Wouldn't your password manager fail to auto fill your details? | | |
| ▲ | junon 4 days ago | parent [-] | | This was mobile, I don't use browser extensions for the password manager there. |
| |
| ▲ | lifeinthevoid 4 days ago | parent | prev [-] | | That green checkmark ... what application is this? | | |
| ▲ | junon 4 days ago | parent | next [-] | | Migadu. The tooltip hovering over it shows: dkim=pass header.d=smtp.mailtrap.live header.s=rwmt1 header.b=Wrv0sR0r
| |
| ▲ | markasoftware 4 days ago | parent | prev [-] | | check marks in email clients usually mean DKIM / other domain verification passed. The attack author truly owns npmjs.help, so a checkmark is appropriate. |
|
|
|
|
| ▲ | g42gregory 4 days ago | parent | prev | next [-] |
| I am not very sophisticated npm user on MacOS, but I installed bunch of packages for Claude Code development. How do we check if computer has a problem? Do we just run: npm list -g #for global installs npm list #for local installs And check if any packages appear that are on the above list? Thanks! |
| |
| ▲ | greatestdevever 2 days ago | parent [-] | | How I do it is, run npm list --all then check the completely dependency tree to find out if anywhere I am using the vulnerable package. |
|
|
| ▲ | rootlocus 4 days ago | parent | prev | next [-] |
| > Made the mistake of clicking the link instead of going directly to the site like I normally would (since I was mobile). Does anyone know how this attack works? Is it a CSRF against npmjs.com? |
| |
| ▲ | junon 4 days ago | parent | next [-] | | That was the low-tech part of their attack, and was my fault - both for clicking on it and for my phrasing. It wasn't a single-click attack, sorry for the confusion. I logged into their fake site with a TOTP code. | | |
| ▲ | yard2010 4 days ago | parent [-] | | This is a clear example that this can happen to anyone. Sorry for what you're going through. | | |
| ▲ | SchemaLoad 3 days ago | parent [-] | | This is why Passkeys are getting pushed right now. They make it physically impossible to sign in to a phishing site. |
|
| |
| ▲ | veber-alex 4 days ago | parent | prev | next [-] | | Fake site. You login with your credentials, the attacker logins to the real site. You get an SMS with a one time code from the real site and input it to the fake site. The attacker takes the code andc finishes the login to the real site. | |
| ▲ | smeijer87 4 days ago | parent | prev [-] | | Probably just a fake site. |
|
|
| ▲ | greatestdevever 2 days ago | parent | prev | next [-] |
| Hey, new dev here. Sorry if this is a common knowledge and I am asking a stupid question. How does you getting phished affect these NPM packages? aren't these handled by NPM or the developers of them? |
| |
| ▲ | p91paul 2 days ago | parent | next [-] | | The guy is actually the maintainer of those packages. So whoever got his credentials became able to perform releases on those packages. NPM itself does not build any package, it's just a place where people can publish stuff | |
| ▲ | handstitched 2 days ago | parent | prev [-] | | OP is the developer & maintainer of the affected packages, so the attacker was able to use their phished credentials to upload compromised versions to NPM. |
|
|
| ▲ | mkfs 3 days ago | parent | prev | next [-] |
| The 2FA/TOTP security theater was partly to blame for this. |
| |
| ▲ | lurker_jMckQT99 3 days ago | parent [-] | | How so? Has the author mentioned somewhere that he was tricked into providing 2FA codes / had any sort of 2FA enabled at all? | | |
| ▲ | mkfs 2 days ago | parent [-] | | A spearphishing email telling them they had to update their 2FA was the vector. |
|
|
|
| ▲ | AsmodiusVI 4 days ago | parent | prev | next [-] |
| You're doing what you can, it's not easy. Thanks for handling this so well. |
|
| ▲ | baloki 3 days ago | parent | prev | next [-] |
| Happens to the best of people. Appreciate you’re fast and open response. |
|
| ▲ | komali2 4 days ago | parent | prev | next [-] |
| `error-ex` 1.3.3, already removed from npm https://github.com/Qix-/node-error-ex/issues/17 |
|
| ▲ | n8m8 3 days ago | parent | prev | next [-] |
| Thanks for leaving a transparent response with what happened, how you responded, what you're doing next, and concisely taking accountability Great work! |
|
| ▲ | joshmanders 4 days ago | parent | prev | next [-] |
| Insanely well crafted phishing, godspeed man. |
| |
|
| ▲ | sidcool 3 days ago | parent | prev | next [-] |
| Thanks for your response. But this does call for preventing a single point of failure for security. |
|
| ▲ | mfedderly 4 days ago | parent | prev | next [-] |
| I'm sorry that you're having to go through this. Good luck sorting out your account access. I actually got hit by something that sounds very similar back in July. I was saved by my DNS settings where "npNjs dot com" wound up on a blocklist. I might be paranoid, but it felt targeted and was of a higher level of believability than I'd seen before. I also more recently received another email asking for an academic interview about "understanding why popular packages wouldn't have been published in a while" that felt like elicitation or an attempt to get publishing access. Sadly both of the original emails are now deleted so I don't have the exact details anymore, but stay safe out there everyone. |
|
| ▲ | cyanydeez 4 days ago | parent | prev | next [-] |
| maybe you should work with feross to make a website-api that simply gives you a "true/false" on "can I safely update my dependencies right now" that gives an outofband way to mark the current or all versions thereof, of compromised packages. |
|
| ▲ | svendroevskaeg 3 days ago | parent | prev | next [-] |
| So by "Just NPM is affected" does that mean yarn is unaffected? |
| |
| ▲ | junon 3 days ago | parent [-] | | No, anything that connects to npm as an authoritative source for packages. Yarn, pnpm, and npm clients all do. |
|
|
| ▲ | greatestdevever 2 days ago | parent | prev | next [-] |
| insanely well-crafted. i mean, it's something bad that happened but one must recognise the wit of this attack. |
|
| ▲ | HelloWorldH 4 days ago | parent | prev | next [-] |
| Thank god I misspelled "npm run strat"! Might have been owned. |
|
| ▲ | naikrovek 4 days ago | parent | prev | next [-] |
| mistakes happen. owning them doesn't always happen, so well done. phishing is too easy. so easy that I don't think the completely unchecked growth of ecosystems like NPM can continue. metastasis is not healthy. there are too many maintainers writing too many packages that too many others rely on. |
|
| ▲ | senectus1 3 days ago | parent | prev | next [-] |
| we're only human mate, great job responding to it! thanks for your efforts! |
|
| ▲ | dboreham 4 days ago | parent | prev | next [-] |
| Sorry to be dumb, but can you expand a bit on "2FA reset email..." so the rest of us know what not to do? |
| |
| ▲ | junon 4 days ago | parent | next [-] | | Ignore anything coming from npm you didn't expect. Don't click links, go to the website directly and address it there. That's what I should have done, and didn't because I was in a rush. Don't do security things when you're not fully awake, too. Lesson learned. The email was a "2FA update" email telling me it's been 12 months since I updated 2FA. That should have been a red flag but I've seen similarly dumb things coming from well-intentioned sites before. Since npm has historically been in contact about new security enhancements, this didn't smell particularly unbelievable to my nose. The email went to the npm-specific inbox, which is another way I can verify them. That address can be queried publicly but I don't generally count on spammers to find that one but instead look at git addresses etc The domain name was `npmjs dot help` which obviously should have caught my eye, and would have if I was a bit more awake. The actual in-email link matched what I'd expect on npm's actual site, too. I'm still trying to work out exactly how they got access. They didn't technically get a real 2FA code from the actual, I don't believe. EDIT: Yeah they did, nevermind. Was a TOTP proxy attack, or whatever you'd call it. Will post a post-mortem when everything is said and done. | | |
| ▲ | dboreham 4 days ago | parent | next [-] | | I see (I think): they tricked you into entering a TOTP code into their site, which they then proxied to the real names, thereby authenticating as your account. Is that correct? | | |
| ▲ | sugarpimpdorsey 4 days ago | parent | next [-] | | It only proves that TOTP is useless against phishing. | | |
| ▲ | goku12 4 days ago | parent | next [-] | | Every day brings me another reason to ask the question: "Why the hell did they throw away the idea of mutual TLS?". They then went onto invent mobile OTP, HOTP, TOTP, FIDO-U2F and finally came a full cycle by reinventing the same concept, but in a more complex incarnation - Passkeys. | | |
| ▲ | tpxl 4 days ago | parent | next [-] | | Works this way for my government and my bank. I was given a cert matching my real name and the login just asks for my cert and pulls me through (with additional 2FA for the bank). Pretty amazing if you ask me. | | |
| ▲ | goku12 4 days ago | parent [-] | | Which government is this, if I may ask? | | |
| ▲ | SahAssar 4 days ago | parent [-] | | I'm going to guess estonia which has had this since mid 2000's IIRC. | | |
| ▲ | jve 3 days ago | parent [-] | | Latvia has it too. We have ID cards which is a smartcard, we use that to set up some authentication app that allows us to authenticate within online services and can even do remotely transactions like selling the house (well that is the extreme case and one needs to connect to teams meeting and show your face and have high quality video/connection and show your id card, along with digital auth). But anyways, it is used all around the place, many many sites support that auth, the banks support it and even remote auth scenarios are possible. Just today was calling mobile operator support and they had to verify me - so after saying my ID, an auth request pops up from app that asks to verify identity to mobile operator (app shows who is asking for auth). Authentications are separated and if some signature must be placed or money to be sent, you must use other access code and the app shows the intention of what are you authorizing. If it is money being sent, you see where and how much you want to sent before you approve this request on the app. But the app is all tied to digital identity from the id card in the first place - to set up these strong authentication guarantees in the first place you use your ID card. Some time ago we had to use computer with smartcard reader to set it up, nowdays I dunno whether it is NFC or something, but the mobile phone can read the ID card. |
|
|
| |
| ▲ | mschuster91 4 days ago | parent | prev | next [-] | | the UI for client side certificates was shit for years. no one particularly cared. passkeys however are... pretty reasonable. | | |
| ▲ | xorcist 4 days ago | parent | next [-] | | That's just it. If any of the browser vendors put 1% of the work they spent on renewing their visual identity, remodeling their home page, or inventing yet another menu system into slightly easier to use client certificates (and smart cards) this would have been a solved problem two decades ago. All the pieces are in place, every browser has supported this since the birth of SSL, it's just the user interface bits that are missing. It's nothing short of amazing that nobody worked on this. It's not as if there isn't a need. Everyone with high security requirements (defense, banks etc.) already do this, but this clumsy plugins and (semi-)proprietary software. Instead we get the nth iteration of settings redesigns. | | | |
| ▲ | goku12 4 days ago | parent | prev | next [-] | | > the UI for client side certificates was shit for years. no one particularly cared. That's exactly what I mean! Who would use it if the UI/UX is terrible? Many Gemini (protocol) browsers like Lagrange have such pleasant UIs for it, though somewhat minimal. With sufficient push, you could have used mutual TLS from even hardware tokens. | |
| ▲ | 4 days ago | parent | prev | next [-] | | [deleted] | |
| ▲ | chuckadams 4 days ago | parent | prev [-] | | At least on a Mac, you can just double-click a cert file, it'll prompt to install in Keychain, and anything using macOS's TLS implementation will see it. | | |
| ▲ | goku12 3 days ago | parent [-] | | And what about the browser? How does it know which client cert (I assume the key is also there) to use for a site? Does it prompt you before proceeding with authentication? | | |
| ▲ | chuckadams 3 days ago | parent [-] | | The domains the cert gets presented to is also configured in Keychain, and Safari uses it. Looks like Firefox has its own thing, buried several layers deep in settings. No idea about chrome. It's definitely a process you'd want to script in an installer, nothing you'd want to subject the end user to. So yeah, still pretty crap UX overall. |
|
|
| |
| ▲ | 4 days ago | parent | prev | next [-] | | [deleted] | |
| ▲ | quotemstr 4 days ago | parent | prev [-] | | Because the tech industry egregore is a middling LLM that gets it context window compacted every generation. |
| |
| ▲ | ksdnjweusdnkl21 4 days ago | parent | prev | next [-] | | TOTP isnt designed to be against phishing. Its against weak, leaked or cracked passwords. | | |
| ▲ | Scoundreller 4 days ago | parent | next [-] | | Lots of junk TOTP apps in app stores. Once heard of a user putting in a helpdesk ticket asking why they had to pay for the TOTP app. Then I realize their TOTP seed is probably out in the open now. I’m sure we can imagine how else this could go badly… | |
| ▲ | 4 days ago | parent | prev [-] | | [deleted] |
| |
| ▲ | patrakov 2 days ago | parent | prev | next [-] | | No. It only proves that TOTP, as implemented by mobile apps, is useless against phishing. The extension from https://authenticator.cc, with smart domain match enabled, would have caught this by showing all other TOTP codes besides the one intended by NPM. On a Mac, Keychain would also have caught this by not autofilling: https://support.apple.com/en-ph/guide/passwords/mchl873a6e72... | |
| ▲ | dboreham 4 days ago | parent | prev [-] | | Yes. This attack would not have worked if FIDO2 (or the software emulation Passkey) had been used. |
| |
| ▲ | junon 4 days ago | parent | prev [-] | | Seems so, yes. |
| |
| ▲ | jvuygbbkuurx 4 days ago | parent | prev | next [-] | | Did they also phish the login password after clicking the link or did they already have it? | | |
| ▲ | junon 4 days ago | parent [-] | | They phished username, password (unique to npm), and a TOTP code. They even gave me a new TOTP code to install (lol) and it worked. Showed up in authy fine. Whoever made this put a ton of effort into it. | | |
| ▲ | scratchyone 4 days ago | parent | next [-] | | Damn, that's an impressively well-done attack. Curious, do you use a password manager? If so, did it not autofilling feel like a red flag to you? I've always wondered if I ever get phished if I'll notice bc of that or if I'll just go "ugh 1password isn't working, guess i'll paste my password in manually" and end up pwned | | |
| ▲ | junon 4 days ago | parent | next [-] | | I was on mobile, didn't use the autofiller. Also previous experience with the web extensions showed me that they were flakey at best anyway. The `.help` should have been the biggest red flag, followed by the 48-hours request timeline. I wasn't thinking about things like I normally would this morning and just wanted to get things done today. Been a particularly stressful week, not that it's any excuse. | |
| ▲ | nixosbestos 4 days ago | parent | prev [-] | | I'm thinking on what all the anti-passkey folks have to say right now. Or the "password managers aren't necessary" crowd. |
| |
| ▲ | 4 days ago | parent | prev [-] | | [deleted] |
|
| |
| ▲ | mkfs 3 days ago | parent | prev | next [-] | | > because I was in a rush That's how they get you. | |
| ▲ | tadamcz 4 days ago | parent | prev | next [-] | | Using a security key as 2FA instead of TOTP would have prevented this attack, right? If you maintain popular open source packages for the love of God get yourself a couple of security keys. | | |
| ▲ | SahAssar 4 days ago | parent [-] | | Well, that would also require all the services to support webauthn/FIDO, which a lot of them don't. Some who do support it only allow one key or trivial bypass via "security questions". |
| |
| ▲ | sugarpimpdorsey 4 days ago | parent | prev [-] | | > The domain name was `npmjs dot help` which obviously should have caught my eye, and would have if I was a bit more awake. It's a good thing the WebPKI cartel mostly did away with EV certs.... these days any old cert where only the SAN matches the domain and your browser gives a warm fuzzy "you're secure!" | | |
| ▲ | mananaysiempre 4 days ago | parent | next [-] | | The browsers mostly did away with EV certs[1], against sustained pushback from CAs, because of research invariably showing that the feeling of security is mostly unfounded. (Both because users are garbage at reading security indicators—and unscrupulous companies are eager to take advantage of that, see Cloudflare’s “security of your connection”—and because the legal-name namespace is much more Byzantine and locale-dependent than any layman can parse[2].) By contrast, OV certs, which were originally supposed a very similar level of assurance, were did away with by CAs themselves, by cost-optimizing the verification requirements into virtual nonexistence. That said, it remains a perpetual struggle to get people to understand the difference between being connected to the legitimate operator of satan.example (something an Internet-wide system mostly can guarantee) and it being wise to transact there (something extensive experience shows it can’t and shouldn’t try to). And if you’re a domain owner, your domain is your identity; pick one and stick to it. Stackoverflow.blog is stupid, don’t be like stackoverflow.blog. [1] https://www.troyhunt.com/extended-validation-certificates-ar... [2] https://arstechnica.com/information-technology/2017/12/nope-... | | |
| ▲ | sugarpimpdorsey 4 days ago | parent [-] | | > That said, it remains a perpetual struggle to get people to understand the difference between being connected to the legitimate operator of satan.example That's because the browser implementers gave up on trying to solve the identity problem. It's too difficult they said, we'd rather push other things. Google implemented certificate pinning in Chrome for themselves and a few friends, said fuck everyone else, and declared the problem solved. Who cares about everyone else when your own properties are protected and you control the browser? Meanwhile the average user has no idea what a certificate does, whether it does or doesn't prove identity. No wonder they removed the lock icon from the browser. | | |
| |
| ▲ | Kwpolska 4 days ago | parent | prev [-] | | People never paid attention to the special EV cert markers. And even if they did, what would stop someone from registering a company named "npm, Inc." and buying an EV cert for it? Sure, it’s going to cost some money upfront, but you can make much more by stealing cleptocurrency. |
|
| |
| ▲ | diggan 4 days ago | parent | prev [-] | | > so the rest of us know what not to do? Can't really tell you what not to do, but if you're not already using a password manager so you can easily avoid phishing scams, I really recommend you to look into starting doing so. In the case of this attack, if you had a password manager and ended up on a domain that looks like the real one, but isn't, you'd notice something is amiss when your password manager cannot find any existing passwords for the current website, and then you'd take a really close look at the domain to confirm before moving forward. | | |
| ▲ | ziml77 4 days ago | parent | next [-] | | After nearly being phished once (only having a confirmation email save me) I've taken to being extra vigilant if I don't get a password entry suggestion from my password manager. It means I need to be extremely damn sure I'm on a domain that is controlled by the same entity my account is with. So far I haven't had another incident like that and I hope to keep it that way. | |
| ▲ | withinboredom 4 days ago | parent | prev [-] | | This isn’t exactly true. My password manager fails to recognise the domain I’m on, all the time. I have to go search for it and then copy/paste it in. That being said, if you’re making login pages: please, for the love of god, test them with multiple password managers. Oh, and make sure they also work correctly with the browser’s autotranslation. Don’t rely on the label to make form submission decisions ... please. | | |
| ▲ | diggan 4 days ago | parent [-] | | > This isn’t exactly true. My password manager fails to recognise the domain I’m on, all the time. I have to go search for it and then copy/paste it in. I'd probably go looking for a new password manager if it fails to do one of the basic features they exist for, copy-pasting passwords defeats a lot of the purpose :) > That being said, if you’re making login pages I think we're doomed on this front already. My previous bank still (in 2025!) only allows 6 numbers as the online portal login password, no letters or special characters allowed, and you cannot paste in the field so no password manager works with their login fields, the future is great :) | | |
| ▲ | withinboredom 4 days ago | parent [-] | | > I'd probably go looking for a new password manager if it fails to do one of the basic features they exist for, copy-pasting passwords defeats a lot of the purpose :) This isn’t the fault of the password managers themselves, but devs not putting the right metadata on their login forms, or havo the password field show only after putting in the email address, causing the password input to fail to be filled, etc. | | |
| ▲ | sunaookami 3 days ago | parent | next [-] | | Then get a good password manager that matches the domain and triple-check if it's a new domain. If your password manager shows you your npm login for npmjs.com and you are suddenly on a new domain and your password manager doesn't show logins, you will notice. | | |
| ▲ | Macha 3 days ago | parent [-] | | I've noticed failure to fill the right fields (or any fields) on Lastpass, 1Password, Bitwarden and the KeepassXC browser extension. What is your mythical "good password manager"? | | |
| ▲ | diggan 3 days ago | parent [-] | | I'm using 1Password+Firefox+Linux, it fails to find the right username+passwords maybe 10% of the time, mostly because services keep using different domains for login than for signup, so it doesn't recognize it's a valid domain. In those cases, I carefully review the new domain, make sure it belongs to the right owner, then add it to the list of domains to accept. Now the account list properly show up in the future too, until they again change it. But it gives me a moment to pause and reflect before just moving past it. I cannot remember any times in the last years where 1Password was 100% unable to fill out the username/password for a website unless the website itself prevented pasting passwords (like my old bank). But even if it fills the wrong fields, it still provides safety as you wouldn't even see the accounts in the list if you're on the wrong domain, so that's your first warning sign. |
|
| |
| ▲ | aaronharnly 4 days ago | parent | prev [-] | | or switching to some generic-sounding domain during login | | |
| ▲ | sunaookami 3 days ago | parent [-] | | Good password managers can match subdomains, substrings, "url starts with", etc. There is no excuse. |
|
|
|
|
|
|
|
| ▲ | tomkarho 4 days ago | parent | prev | next [-] |
| Hang in there buddy. These things happen. |
|
| ▲ | sim7c00 4 days ago | parent | prev | next [-] |
| man. anyone and everyone can get fished in a targeted attack. good luck on the cleanup and thanks for being forward about it. want to stress everyone it can happen to. no one has perfect opsec or tradecraft as a 1 man show. its simply not possible. only luck gets one through and that often enough runs out. |
|
| ▲ | quotemstr 4 days ago | parent | prev [-] |
| Not your fault. Thanks for posting and being proactive about fixing the problem. It could happen to anyone. And because it could happen to anyone that we should be doing a better job using AI models for defense. If ordinary people reading a link target URL can see it as suspicious, a model probably can too. We should be plumbing all our emails through privacy-preserving models to detect things like this. The old family of vulnerability scanners isn't working. |