News for hackers. Stuff that matters.
Re:Using HTTP Basic Auth in 2022 by gjsman-1000 on Saturday January 01, 2022 @03:32PM (#29762395)
"Stop passing plain passwords over the wire."

If you are using HTTPS, you are equally as good as any other login form.

Some have suggested using JavaScript to encrypt passwords before send - but in my opinion, this is generally stupid because it breaks support on browsers without JavaScript, and this doesn't protect you from the server at all because a hacker could just change the JavaScript to send plaintext copies somewhere. You are reliant on the server being a source of truth either way.

Re:Using HTTP Basic Auth in 2022 by oconnore on Saturday January 01, 2022 @03:39PM (#29762483)
No, it would be much better to use a zero knowledge proof (typically called a PAKE — password authenticated key agreement) to demonstrate that the user knows their password without sending that password over the channel.

Sending the password over HTTPS doesn’t expose the password to passive observers, but it does unnecessarily expose the password to the server.

https://en.m.wikipedia.org/wiki/Password-authenticated_key_a...

Re:Using HTTP Basic Auth in 2022 by gjsman-1000 on Saturday January 01, 2022 @03:44PM (#29762547)
> "but it does unnecessarily expose the password to the server"

Yes - it does - but I am having a hard time thinking that this actually matters in the real world.

I can understand why not sending the password to the server, would be theoretically more secure. However in practice, what hacking attempts does this actually prevent?

If I was a hacker, I can add JavaScript to send plaintext somewhere. If I was a hacker, I could change the login form to stop hashing them client-side and instead send them over to the server for hashing and inspection.

It's theoretically more secure... but against what? Accidental logging? I mean, I guess, but then just set up your logs correctly instead of breaking login for anyone without JavaScript.

In my opinion, client-side hashing is security theater. It sounds impressive, but it doesn't really stop any real-world attacks, and the attacks it does prevent can be prevented using simpler methods. Ironically, the other methods (i.e. making sure your logs are clean) are so much simpler to implement it's probably more secure than trying to build a secure client-hashing implementation in the first place.

Re:Using HTTP Basic Auth in 2022 by staticassertion on Saturday January 01, 2022 @04:04PM (#29762768)
> Accidental logging?

Yes, it happens all the time that passwords get logged.

> I mean, I guess, but then just set up your logs correctly instead of breaking login for anyone without JavaScript.

I have no idea what "set up your logs correctly" is supposed to mean but clearly no one's doing it. What is a "clean log" ?

> If I was a hacker, I can add JavaScript to send plaintext somewhere. If I was a hacker, I could change the login form to stop hashing them client-side and instead send them over to the server for hashing and inspection.

This assumes you have full control over the client page. But that's not necessarily (or often? most people don't serve JS from the same code that serves their auth API) the case.

1. The JS could be loaded from a CDN, not the same service that has access to the password. You may have absolutely no control over the JS on the page.

2. Every point between the browser and the password DB is a point where the password is in cleartext. So a compromise of any of those, including any logging paths, is a compromise of the password.

3. I don't think anyone cares about breaking login for users who don't use JS, nor should they.

What's more, ZKP means that if your password database is owned the impact is far less. If you're doing things right for password storage on top of ZKP you can practically make your password db public.

Even if we're talking about a basic client side hashing approach you're significantly improving security, but to be clear, the parent poster is talking about ZKPs, which involve more than that.

Re:Using HTTP Basic Auth in 2022 by gjsman-1000 on Saturday January 01, 2022 @04:11PM (#29762837)
> "I have no idea what "set up your logs correctly" is supposed to mean but clearly no one's doing it. What is a "clean log"?"

As you admitted, passwords get logged "all the time." So the reasonable solution in most cases would be to ensure all applicable logs were clean and not logging passwords, not over-engineer a JavaScript-powered client-side-hashing algorithm. That's like taking a sledgehammer to a nail.

Re:Using HTTP Basic Auth in 2022 by staticassertion on Saturday January 01, 2022 @04:15PM (#29762895)
Sorry, but the idea that implementing "clean logs" is:

a) Tractable

b) Simple or straightforward

compared to client side hashing is absurd.

Client side hashing is a one time solution forever that exists in one place, requiring no 'cooperation' from other code to be safe. "Cleaning logs", which you still haven't defined at all, is going to be a constant maintenance burden that can break in any place where you log ie: absolutely fucking everywhere by absolutely fucking everyone.

Re:Using HTTP Basic Auth in 2022 by peanut-walrus on Saturday January 01, 2022 @06:37PM (#29764047)
And how exactly would having the hash in the log versus having the password in the log be an improvement? If someone gets that hash it's exactly the same as having the password, as it is the hash that gets sent to your server in the http request.

Edit: alright, I saw that you mentioned password reuse in another reply, fair enough, it does help against that.

Re:Using HTTP Basic Auth in 2022 by lolc on Sunday January 02, 2022 @04:36AM (#29767236)
Proper client-side hashing uses a nonce generated by the server. The transmitted hash is only valid in that session. Even if the nonce and the hashed product are logged, you can't reuse it, because the nonce will be different for your login attempt.
Re:Using HTTP Basic Auth in 2022 by gjsman-1000 on Saturday January 01, 2022 @04:32PM (#29763052)
How complex and unusual is the authentication system you are working on?

If it was a consumer-facing web app, it's not like your password is logged in a million different places. It's possibly logged by your web server software (nginx in my case), and it's possibly logged by your web app framework's requests handler. It's not terribly hard to ensure that these points where the password passes through do not have passwords in their logs, or to ensure that said passwords are not logged to begin with.

If it was a massive enterprise system, I would hope that you would use a single-sign-on system with a centralized login page rather than exposing passwords to every web app within it. And then, just ensure that said passwords are not stored in logs. This is what I meant by clean logs - anywhere the password is used, ensure there is no record. How much code and how many layers does a password need to go through?

And yes, maybe client-side hashing does resolve some attacks, but I remain convinced that it is overkill and less protective than it initially seems. And in the future we would move to Zero-Knowledge Proofs but we aren't there yet for general users.

Re:Using HTTP Basic Auth in 2022 by staticassertion on Saturday January 01, 2022 @04:51PM (#29763216)
Plenty of very simple web apps terminate TLS at the edge ie: at something like API Gateway. So if you then turn on request logging... voila. Hardly a complex scenario, happens all the time. Or at the application layer:

    @path("/login")
    def login(request):
        print("I have a bug, I'll just log the whole request real quick to see wtf is up!", request)
It's actually very hard to ensure that the password doesn't get logged. It requires constant discipline and maintenance. Any bug or change could expose it.

> I would hope that you would use a single-sign-on system with a centralized login page rather than exposing passwords to every web app within it

Implementing SSO is a great idea. Not everyone wants to use SSO though. If I were hosting a porn site I wouldn't expect my users to happily "sign in with Facebook". It's also much more work than a basic client hash.

> This is what I meant by clean logs - anywhere the password is used, ensure there is no record. How much code and how many layers does a password need to go through?

You underestimate the places logs can be generated or passwords can be accidentally persisted.

1. Your proxy

2. Crashes, stack traces, segfaults, core dumps, thread dumps, VM snapshots, free'd memory

3. Firewalls, both network and host

4. Audit logs for security, such as via ebpf or other auditing frameworks

5. The application, at any layer. In Python, did you know I can get a reference to the calling function? I've done this for logging purposes before, in fact. So even if your caller is super careful not to pass the password in, saving me from accidentally logging it, I can crawl back up the stack and get it anyway.

6. Your database logs

7. Services/ RPCs that sit between your auth API and your database

And as your business grows and your code changes you'll have to track all of that.

Orrrrrrrrr, you can just hash your password on the client side and significantly reduce the damage of a leak. Or put the extra work in to implement OPAQUE. Or use webauthn, that's cool too.

Re:Using HTTP Basic Auth in 2022 by huntertwo on Saturday January 01, 2022 @06:46PM (#29764115)
If the hash is used to authenticate, how is leaking the hash less bad than leaking the password? If I have the hash I can already impersonate you.
Re:Using HTTP Basic Auth in 2022 by Too on Sunday January 02, 2022 @02:32AM (#29766644)
The hash is not constant.

With public key crypto you can implement a challenge response. Server generates random garbage, send to client, client signs the garbage using priv key, sends it back as a hash that the server can verify using pub key.

Another version of this is with shared secrets instead of public/private, by replacing the signature with simply HMAC(secret, garbage) and keep rest of flow same as above.

Re:Using HTTP Basic Auth in 2022 by staticassertion on Sunday January 02, 2022 @03:08AM (#29766806)
Yeah, once you get to the ZKP approach, which is what you're describing, the benefits are more significant.
Re:Using HTTP Basic Auth in 2022 by u801e on Sunday January 02, 2022 @11:33PM (#29777359)
> With public key crypto you can implement a challenge response.

Or just use a client side TLS certificate to authenticate instead of or in addition to the username and password.

Re:Using HTTP Basic Auth in 2022 by staticassertion on Saturday January 01, 2022 @06:57PM (#29764198)
There are like a dozen other posts where I answer this question so I'd recommend just going to my comment history.
Re:Using HTTP Basic Auth in 2022 by PuercoPop on Saturday January 01, 2022 @09:03PM (#29765006)
Because many inputs map to that hash (the hashing function is surjective instead of bijective). People re-use passwords all the time. If the hash leaks it will only affect the particular service.
Re:Using HTTP Basic Auth in 2022 by gsich on Saturday January 01, 2022 @10:20PM (#29765467)
Because pass the hash only works for the current server. People reuse passwords, so without brute-forcing you are out of luck.
Re:Using HTTP Basic Auth in 2022 by gsich on Saturday January 01, 2022 @10:18PM (#29765451)
>As you admitted, passwords get logged "all the time." So the reasonable solution in most cases would be to ensure all applicable logs were clean and not logging passwords, not over-engineer a JavaScript-powered client-side-hashing algorithm. That's like taking a sledgehammer to a nail.

Maybe, but as a client I can't verify that this happens. So never sending the cleartext password is the only solution.

Re:Using HTTP Basic Auth in 2022 by 5e92cb50239222b on Sunday January 02, 2022 @02:12AM (#29766560)
> 1. The JS could be loaded from a CDN, not the same service that has access to the password. You may have absolutely no control over the JS on the page.

You have full control over it, as long as you don't embed any third-party maps or crap like ads.

https://developer.mozilla.org/en-US/docs/Web/Security/Subres...

Re:Using HTTP Basic Auth in 2022 by marcosdumay on Saturday January 01, 2022 @06:47PM (#29764120)
Zero knowledge proofs protect against the password leaking due to any kind of error from the server. That's not security theater, passwords leak all the time.

And the nice thing is that browsers already implement that, no need for Javascript. The bad news is that the UX sucks so much that you just can not use, so it's as useful as it not being there.

But digest password authentication protects against nearly none of those errors. On this case, leaking a digest is just as bad as leaking a password.

Re:Using HTTP Basic Auth in 2022 by throwaway81523 on Saturday January 01, 2022 @08:48PM (#29764907)
> Zero knowledge proofs protect against the password leaking due to any kind of error from the server. That's not security theater, passwords leak all the time.

That's a little confused. PAKE usually still stores a password or hashed password on the server, with the password potentially recoverable by brute force reversing the hash. What it avoids is transmitting a hash over the wire that can be reversed into a password, the way HTTP digest auth allows. The stuff transmitted over the wire by PAKE instead reveals no info about the password.

Most login pages on web sites today send the cleartext password underneath the https encryption layer, so the server sees the password (though hopefully stores it in only in hashed or MAC'd form). That is equivalent to http basic auth sent through https.

I use basic auth + https for my own stuff (where I don't care about styling) and it suffices for most things. Obviously you can escalate from there to 2fa, client certificates with credentials wrapped in hardware tokens, or whatever. I haven't needed that for personal stuff so far.

Re:Using HTTP Basic Auth in 2022 by marcosdumay on Sunday January 02, 2022 @10:56AM (#29769723)
There are more ways to do zero knowledge proofs than PAKE. (Besides, PAKE isn't the way current browsers support.)

PAKE is interesting mostly because we have some infrastructure for dealing with passwords already, but passwords in any form are not optimal.

Re:Using HTTP Basic Auth in 2022 by unscaled on Saturday January 01, 2022 @10:11PM (#29765401)
Most PAKE implementations actually make a security trade-off here - they protect the password transmitted over the wire, but you end up with a weaker password hash stored in the server's database.

Modern PAKE implementations, like SRP, don't store the plaintext password on the server side, but rather store a "verifier", which is essentially a hashed and salted version of the password. This way the server never sees the actual password, even at the registration phase.

The problem is with the hashing function though. For instance, all the SRP implementations I've seen use fast hash functions like SHA-1, SHA-256 or Blake2b by default. But contrary to folk wisdom (which is unfortunately often repeated here as well), hashing and salting a password is not enough. This is not 2003 anymore, and rainbow tables are not your main threat - your main threat is a cluster of fast GPUs demolishing your hashed passwords at rates that often just start at 1 GH/s.

The best practice nowadays is to use a function which is both computationally expensive and memory-hard such as scrypt or the newer Argon2 (and not PBKDF2!). You could very well do that with a PAKE, but now you run across a nasty UX trade-off: the computationally expensive function would have to be executed on the client side every time the client authenticates. There are WASM implementations of Argon2 out there, so this is probably not a big issue on a beefy PC, but you'll have to aim for the lowest common denominator here, and tune your function for a low-end smartphone.

tl;dr: In practice, with a carefully implemented PAKE, you'll give the attacker a 10-100 times faster hashrate than you would with a plain-text password authentication approach implemented with the same amount of care. In real practice, you'll probably use whatever defaults your library gives you and give often end up with a ridiculously weak hash.

Now, I said this is a trade-off. If you implement PAKE well, you will reduce the resiliency of your stored password hashes against brute force attacks, but this is what you get in return:

* Protection against password sniffing at TLS-terminating proxies

* Protection against hackers taking over your server and stealing user passwords as they login (Online password leak)

* Protection against MITM with a stolen CA key[1]

All of these things are still an issue with clear-text passwords even if you're using TLS. If any of these issues are a concern for you, this means you consider your users' passwords to be significantly more sensitive than the data that flows between your clients and servers, but that could be a valid threat model. In this case PAKE looks like a nice solution.

For everything else, I don't recommend PAKE. It is harder to implement correctly (with library defaults being insecure as I mentioned above), and this is more important than whatever theoretical strengths it has. Cryptographic systems are generally broken because of incorrect implementation rather than theoretical weaknesses in the algorithm.

[1] Not very common, but that did happen in the past: https://en.wikipedia.org/wiki/DigiNotar

Re:Using HTTP Basic Auth in 2022 by amluto on Saturday January 01, 2022 @09:59PM (#29765337)
PAKE is highly phishing resistant. If you type your password for an important website into a browser-controlled PAKE UI, but you’re being phished and the browser tries to authenticate to a malicious website, the worst the website can do is guess one single password. It can’t relay the password to the real website.
Re:Using HTTP Basic Auth in 2022 by Thorrez on Saturday January 01, 2022 @11:15PM (#29765758)
Good point that it protects against a phishing site that exactly replicates the victim site but with a different URL.

But the phishers could do a slight variation. They could create a website that looks very similar to the browser's Basic Auth popup, but implemented in HTML and Javascript. Most people won't notice the difference. Most people don't understand the line of death[1].

[1] https://textslashplain.com/2017/01/14/the-line-of-death/

Re:Using HTTP Basic Auth in 2022 by eru on Sunday January 02, 2022 @02:14AM (#29766574)
You could make the line of death better.

In the context of the pop-up: a simple pop up can be faked. But what if the browser would flash all the borders (and other stuff outside the line of death) when the real popup is displayed?

I'm not saying any of this is 100% foolproof, just that we should be doing some UI experiments on real people to see what works better.

Re:Using HTTP Basic Auth in 2022 by thesz on Sunday January 02, 2022 @04:22AM (#29767174)
This is what was done in the EROS [1] (extremely reliable operating system) UIs - it was not possible for user window to be rendered completely undistinguishable from system windows like, you knew it, a password prompt.

[1] https://en.wikipedia.org/wiki/EROS_(microkernel)

EROS used capabilities to enforce such rules. If you lack a capability to be a system window, you can't pretend to be one.

Re:Using HTTP Basic Auth in 2022 by amluto on Sunday January 02, 2022 @01:24PM (#29771800)
This is also what a secure attention key is for. Sadly the well known implementation (Windows NT) made it sufficiently obnoxious that it went away.

I can imagine keyboards having a special “password” key and trying to train people that all passwords start with the password key. I don’t know if this would work, but it can’t be worse than Ctrl-alt-delete.

Re:Using HTTP Basic Auth in 2022 by oconnore on Saturday January 01, 2022 @03:58PM (#29762696)
- If you share your password across sites that used a hypothetical browser-implemented PAKE, site A cannot login to your account on site-B

- If a site is attacked, there is no risk that password material was extracted from application memory — site operator can dump session tokens and safely re-auth users.

Re:Using HTTP Basic Auth in 2022 by gjsman-1000 on Saturday January 01, 2022 @04:02PM (#29762738)
This sounds like an interesting system, but I think you are arguing for a system that as-of-now is only theoretical and is very different against the current crop of JavaScript-powered client-side-hashing methods which I am arguing against.
Re:Using HTTP Basic Auth in 2022 by indymike on Saturday January 01, 2022 @04:22PM (#29762972)
The first implementation was Bellovin and Merritt's Encrypted Key Exchange in 1992. In 2000 a provably secure implementation was released. PAKE has been around for quite some time and is proven, and is in wide use in the field. Here's a decent article on the subject: https://blog.cryptographyengineering.com/2018/10/19/lets-tal...
Re:Using HTTP Basic Auth in 2022 by gjsman-1000 on Saturday January 01, 2022 @04:37PM (#29763092)
I don't dispute the technology exists - I dispute that this technology can be deployed on a web app to general users effectively. I don't believe that is currently possible in production effectively in a way that neutralizes my arguments that an attacker could just change the JavaScript to record passwords somewhere.
Re:Using HTTP Basic Auth in 2022 by madacol on Saturday January 01, 2022 @05:39PM (#29763609)
That's why the browser's built-in login Form could be so useful, it would have its own security context, so I, as a user can be sure that no Javascript could read that

I would happily sign up and reuse a password for a website that I didn't trust if it were as secure as described (PAKE + browser built-in login)

Re:Using HTTP Basic Auth in 2022 by indymike on Sunday January 02, 2022 @10:02AM (#29769223)
I'm really not sure what you are disputing here. PAKEs are for preventing man in the middle attacks, not for securing a local program or preventing malicious code from running in the browser. No one is advocating, use a PAKE and all your problems are gone - it's about addressing key exchange over the wire and eliminating an entire class of attack. Password managers are a tough subject - they are like coffee . Yes, there may be small amounts of toxic stuff in it, but that is offset by a factor of 10,000 by the number of people who do not get in a wreck on the way to work, thanks to being awake and aware form 70mg of caffeine.
Re:Using HTTP Basic Auth in 2022 by staticassertion on Saturday January 01, 2022 @04:05PM (#29762778)
PAKE isn't theoretical at all and the post you're responding to didn't say client side hashing it said zero knowledge proofs.
Re:Using HTTP Basic Auth in 2022 by gjsman-1000 on Saturday January 01, 2022 @04:15PM (#29762904)
PAKE is theoretical from a web-development perspective because there is no secure way for me to implement PAKE in my web app for a user to log in with in 2022. It doesn't exist - you tell me how to implement PAKE login right now.

Zero Knowledge Proofs would be awesome (something like WebAuthn/FIDO right now?) but I am arguing more in general against client-side hashing methods that are currently usable, mainly JavaScript-based ones.

Re:Using HTTP Basic Auth in 2022 by staticassertion on Saturday January 01, 2022 @04:17PM (#29762921)
Not sure what you mean.

1. There is, of course, a way to implement it in your web app. I don't know what you mean by "no secure way" ?

> I am arguing more in general against client-side hashing methods that are currently usable, mainly JavaScript-based ones.

Even a trivially implemented client side hashing approach protects against a number of attacks.

Re:Using HTTP Basic Auth in 2022 by gjsman-1000 on Saturday January 01, 2022 @04:34PM (#29763068)
I meant, let's say I picked a framework. Django, Laravel, Express, similar.

How would I implement PAKE login for my users? How would I get every user to log in with PAKE? How would I ensure that my code for PAKE could not be overwritten if a hacker took over part of my server?

It doesn't exist, AFAIK, on a user-facing front at this time in a secure way that a hacker couldn't just change the logic for.

Re:Using HTTP Basic Auth in 2022 by staticassertion on Saturday January 01, 2022 @04:44PM (#29763164)
Implementing opaque isn't overly hard. You can find pseudocode, implementations, state machine diagrams, etc, online. Here's a good post that links to implemented code: https://blog.cloudflare.com/opaque-oblivious-passwords/

I know nothing of framework support, I don't use frameworks. I'm likely going to contribute some open source code in the near future from my company to simplify things though.

But you could also just have your client do:

    salt = sha256("your company name goes here" + username)
    password_hash = pbkdf2(plaintext_password, salt)
and get some nice benefits.

> How would I ensure that my code for PAKE could not be overwritten if a hacker took over part of my server?

Depends on the server and the level of control. But it'll help in a number of cases. You're assuming the attacker has full control over the web-page's contents (among other things - even if an attacker had the web page's contents CORS means they couldn't send http only cookies to an attacker controlled server), which is a very specific, powerful position to be in.

Re:Using HTTP Basic Auth in 2022 by pests on Saturday January 01, 2022 @05:05PM (#29763331)
What benefits would you get though?

You are still exposing the password_hash to the server and any compromise there (software or hardware, as described in your link) would still let an attacker grab password_hash, craft a custom client, and send it as if the original client had hashed the plaintext_password to begin with.

The attacker doesn't need to know plaintext_password, just the string you use to authenticate with in order to replay it. The password_hash becomes the new password.

Then due to the salt being on the client, it still opens the password up to rainbow table attacks etc.

Re:Using HTTP Basic Auth in 2022 by staticassertion on Saturday January 01, 2022 @05:09PM (#29763367)
If the attacker only has access to the hash that hash is only usable for your website. If the user uses the same password for another site an attacker can not log into that other site using the hash.

That's really the main benefit of this approach - it reduces the impact of password reuse.

Re:Using HTTP Basic Auth in 2022 by wswope on Saturday January 01, 2022 @05:30PM (#29763541)
If I’m understanding your argument correctly (I may not be) - implementing PAKE would only be helpful in a scenario where an attacker gets access to hashed passwords, but isn’t able to modify front-end code to directly intercept unhashed passwords, right?
Re:Using HTTP Basic Auth in 2022 by staticassertion on Saturday January 01, 2022 @05:36PM (#29763583)
You are correct. I (and I think most people?) consider that to be the most common attacker scenario.
Re:Using HTTP Basic Auth in 2022 by wswope on Saturday January 01, 2022 @06:03PM (#29763807)
Gotcha - and I can definitely see the utility with a large userbase.

From a corporate perspective, with a segmented + well-firewalled architecture, and a lot of surface area for injection vulns, I totally agree with you. The article was priming me to think of a flat, single-box solodev environment, where if someone breaks in, they own everything - which is why I think the original post above us mentioning PAKE is getting a lot of questioning.

Re:Using HTTP Basic Auth in 2022 by cassonmars on Saturday January 01, 2022 @04:40PM (#29763123)
PAKE isn’t about preventing compromise at the serving of the front end. That’s still the responsibility of the server maintainer. PAKE is about reducing damage potential. The responsibility of keeping your servers secure applies regardless of use of PAKE. PAKE just makes it possible that if your database is leaked in some smash-and-grab someone can’t just run a rainbow table against it to suss out passwords against emails.
Re:Using HTTP Basic Auth in 2022 by scoopertrooper on Saturday January 01, 2022 @04:31PM (#29763043)
Not theoretical, you can do it today.

https://www.npmjs.com/package/libopaque

Re:Using HTTP Basic Auth in 2022 by somebodythere on Saturday January 01, 2022 @06:27PM (#29763972)
Metamask basically works this way and is used on thousands of apps.
Re:Using HTTP Basic Auth in 2022 by fivelessminutes on Saturday January 01, 2022 @03:54PM (#29762653)
If someone gets a copy of the encrypted traffic - and we know that 'full take' is being done routinely for some parts of the internet - the credential in the plaintext means that if they are ever able to decrypt it even weeks later, they can make fresh connections using the valid credential afterwards.

If the server issues a different challenge each time, decrypting one response doesn't buy you anything.

Re:Using HTTP Basic Auth in 2022 by gjsman-1000 on Saturday January 01, 2022 @03:59PM (#29762705)
I guess this makes sense - but who is capable of decrypting it weeks later unless the original private key was stolen, in which case it could be decrypted almost in real-time? Maybe if you were concerned a nation-state or something was trying to get your private key, but you've got bigger fish to fry at that point.
Re:Using HTTP Basic Auth in 2022 by w3ll_w3ll_w3ll on Saturday January 01, 2022 @04:31PM (#29763042)
Also, using TLS with Perfect Forward Secrecy (all modern ciphers), it's not possible to just capture the traffic and dectypt it later. You have to know the private key and do MITM.
Re:Using HTTP Basic Auth in 2022 by rixed on Saturday January 01, 2022 @11:10PM (#29765740)
> You have to know the private key and do MITM.

Which can safely be assumed to happen whenever the equipment is provided by another party such as an employer. All in the name of security, just not that of the user.

Re:Using HTTP Basic Auth in 2022 by throw0101a on Saturday January 01, 2022 @03:54PM (#29762654)
> If I was a hacker, I can add JavaScript to send plaintext somewhere. If I was a hacker, I could change the login form to stop hashing them client-side and instead send them over to the server for hashing and inspection.

If a zero knowledge (ZK) system combined with HTTP Basic was used, then account entry would come from the browser itself and not a web form that could be intercepted by JavaScript.

Further, a ZK system would help with the silliness of folks using bad algorithms (straight MD-5 / SHA-1) to store passwords, or even storing them in plain-text.

Re:Using HTTP Basic Auth in 2022 by gjsman-1000 on Saturday January 01, 2022 @04:14PM (#29762885)
Right - it would, I don't disagree, it'd be awesome. It's something like WebAuthn.

I'm arguing here more against some people who think that using a JavaScript-based system to hash the password entry before sending it to the server is a good idea.

Re:Using HTTP Basic Auth in 2022 by masklinn on Saturday January 01, 2022 @04:21PM (#29762958)
> I'm arguing here more against some people who think that using a JavaScript-based system to hash the password entry before sending it to the server is a good idea.

So you're arguing against something nobody is arguing for?

Re:Using HTTP Basic Auth in 2022 by madacol on Saturday January 01, 2022 @05:47PM (#29763682)
So you are strawmanning?
Re:Using HTTP Basic Auth in 2022 by weaksauce on Saturday January 01, 2022 @03:53PM (#29762644)
I could be missing something but they are not suggesting to use a javascript version but the version where the zero knowledge algorithm is used at the browser level. the password would never be outside the secure context of the browser and nothing other than the algorithm bits would be sent.
Re:Using HTTP Basic Auth in 2022 by masklinn on Saturday January 01, 2022 @04:20PM (#29762951)
You're not missing anything, GP is.
Re:Using HTTP Basic Auth in 2022 by almost on Saturday January 01, 2022 @03:50PM (#29762600)
Credential stuffing is a thing. So it’s pretty good if a compromised website just cannot leak your password.

But as the other comment pointed out the current situation with web form login is that password is sent to server so it wouldn’t be worse than the the status quo.

Re:Using HTTP Basic Auth in 2022 by gjsman-1000 on Saturday January 01, 2022 @03:56PM (#29762670)
I hope you are kidding.

A compromised website that was well designed should not leak your password any more than a client-side hashing implementation. This is because the passwords are hashed in the database. Client-side hashing means that, yes, initially the website is not receiving plaintext passwords, but a few quick code edits to maybe add some logging JavaScript or disable the client-side hashing implementation will fix that.

And credential stuffing? Client-side hashing does absolutely nothing to prevent credential stuffing other than that you may need a GPU to do a lot of hashes quickly. Client-side hashing doesn't make a server handle more or less authentication requests.

Re:Using HTTP Basic Auth in 2022 by masklinn on Saturday January 01, 2022 @04:19PM (#29762942)
> A compromised website that was well designed

Ah yes, "if nobody makes any mistake there's no problem", that's worked so well forever hasn't it?

> Client-side hashing means that, yes, initially the website is not receiving plaintext passwords, but a few quick code edits to maybe add some logging JavaScript or disable the client-side hashing implementation will fix that.

That makes quite literally no sense, did you miss the entire thing and go off with whatever?

The request here is to make the browser's support for HTTP authentication better. The entire point is that there is no "quick code edit" without owning the entire browser at which point you're quite thoroughly owned anyway.

Re:Using HTTP Basic Auth in 2022 by garbagecoder on Saturday January 01, 2022 @04:57PM (#29763278)
I don’t think he understands salts or really hashing at all and this is messing up the logic in his posts.
Re:Using HTTP Basic Auth in 2022 by garbagecoder on Saturday January 01, 2022 @04:56PM (#29763262)
If “should” were a word that meant what people thinks it means, we wouldn’t need security at all.
Re:Using HTTP Basic Auth in 2022 by lordlimecat on Saturday January 01, 2022 @08:45PM (#29764890)
Scenario 1: Attacker compromises ECOMMERCE_SITE where you have a login. The ECOMMERCE_SITE uses md5 for logins, so the attacker just brute-forces the hash and then uses that password to compromise your logins on other sites.

Scenario 2: The ecommerce site has upgraded to SHA512, so cracking isnt an option. But the site is relying on basic auth, so the attacker simply sniffs your password when you auth.

Scenario 3: the ecommerce site is using a secure zero-knowledge auth against a hashed/salted/peppered/whatever credential. They cannot brute force it, and the server never sees your password. They can mess around with the ECOMMERCE_SITE but cannot pivot to any of your other logins.

>If I was a hacker, I can add JavaScript to send plaintext somewhere.

We've just shifted from "quiet, persistent threat" to "hacker announces to the world that he's in". Changing javascript on a prod website is going to trigger alarms.

Re:Using HTTP Basic Auth in 2022 by BeefWellington on Sunday January 02, 2022 @01:04AM (#29766282)
> We've just shifted from "quiet, persistent threat" to "hacker announces to the world that he's in". Changing javascript on a prod website is going to trigger alarms.

While I'd like that to be true, it really isn't. There have been loads of card skimming operations injected into production sites which weren't noticed for sometimes months.[0][1][2][3]

[0]: https://blog.malwarebytes.com/hacking-2/2020/03/criminals-ha...

[1]: https://www.wired.com/story/british-airways-hack-details/

[2]: https://www.riskiq.com/blog/external-threat-management/magec...

[3]: https://sansec.io/research/svg-malware

Re:Using HTTP Basic Auth in 2022 by na85 on Saturday January 01, 2022 @03:59PM (#29762712)
>Yes - it does - but I am having a hard time thinking that this actually matters in the real world.

In the 90s and early aughts it was fashionable for php sites to store passwords hashed, usually some combination of a salt with md5 and later the SHA variants.

For a brief few years there were entire communities on IRC and elsewhere dedicated to making rainbow tables for cracking stolen password hashes.

Often the salt would be common across all passwords, so if you got a database dump it was a gold mine for credentials.

Re:Using HTTP Basic Auth in 2022 by staticassertion on Saturday January 01, 2022 @04:11PM (#29762840)
A trivial fix here is to:

a) Add a static value to the salt ie: your company's name

b) Add the user's email address to the salt

The "right" way would be a zero knowledge proof.

Re:Using HTTP Basic Auth in 2022 by na85 on Saturday January 01, 2022 @05:07PM (#29763356)
Yeah well PHPnuke wasn't exactly written by secure coding experts.
Re:Using HTTP Basic Auth in 2022 by gjsman-1000 on Saturday January 01, 2022 @04:03PM (#29762754)
Right - but that's been resolved, PHP and others now store the unique salt used with the password together, so every password has its own salt.

That didn't need client-side hashing to fix it.

Re:Using HTTP Basic Auth in 2022 by garbagecoder on Saturday January 01, 2022 @04:59PM (#29763289)
Gee, it’s almost like on the internet there are computers between you and the destination.
Re:Using HTTP Basic Auth in 2022 by Too on Sunday January 02, 2022 @02:39AM (#29766678)
bcrypt solves that in two ways. It uses per password unique salts and it has a tunable cost-parameter to deliberately slow down the computation, making it slow and infeasible to build a rainbow table.
Re:Using HTTP Basic Auth in 2022 by garbagecoder on Saturday January 01, 2022 @04:53PM (#29763229)
Is this a parody of a webdev?
Re:Using HTTP Basic Auth in 2022 by michaelcampbell on Saturday January 01, 2022 @03:59PM (#29762707)
> No, it would be much better to use a zero knowledge proof

Yes, it would. A further improvement to an improvement doesn't take away from the first improvement. Don't let the perfect be the enemy of the good.

Re:Using HTTP Basic Auth in 2022 by ibic on Sunday January 02, 2022 @06:31AM (#29767885)
I don't think this is a major concern here, many websites pass username and password in plain text and rely on https for security (Just take a look at HN's log in form). If I'm not wrong, J2EE's login is implemented using plaint text also for password.
Re:Using HTTP Basic Auth in 2022 by rcxdude on Sunday January 02, 2022 @08:55AM (#29768707)
Don't such methods require you to store the password in a non-hashed form on the server? That seems mostly worse than this approach, since now the passwords of all users are visible at rest and can be used directly as authentication. RADIUS I know commonly uses this approach and it always made me nervous having the passwords in plaintext.
Re:Using HTTP Basic Auth in 2022 by armchairhacker on Saturday January 01, 2022 @05:26PM (#29763512)
idk if you even need a zero knowledge proof.

Server sends client a salt, client hashes the salt and password and sends back to server.

Implement this as a built-in feature of the web browser, and the browser can show a special icon or symbol to mark that the password will be sent hashed (and later show a warning on password fields sent via plaintext).

Re:Using HTTP Basic Auth in 2022 by hnick on Saturday January 01, 2022 @07:40PM (#29764499)
Then you either have:

1) A different salt each time, meaning the server must know your plaintext password to validate, or 2) The same salt every time, in which case the hash is essentially the password since that's all the attacker has to pass to the server next time.

Re:Using HTTP Basic Auth in 2022 by xmprt on Saturday January 01, 2022 @05:29PM (#29763535)
Could that really work? Sounds like it's highly abusable if someone compromises the database and gets a list of all the hashes. Now, they don't even need to use rainbow tables or any brute force to compute the password. They just send the hash to the server and will be logged in.
Re:Using HTTP Basic Auth in 2022 by armchairhacker on Saturday January 01, 2022 @09:02PM (#29764996)
Yes, if an attacker compromises the database they can send the direct hash.

The point is that a malicious or badly-secured site can't use your password on other websites, because ultimately most people use the same password on many different sites.

Re:Using HTTP Basic Auth in 2022 by mikea1 on Saturday January 01, 2022 @06:13PM (#29763869)
The salt-and-hash combo is how email logins worked for decades. The problem with this approach is that what you really want different salts, which requires that the server knows the plain text password.
Re:Using HTTP Basic Auth in 2022 by geektips on Saturday January 01, 2022 @04:09PM (#29762820)
Intresting idea, this kind implementation would have prevented password leak from something like Cloudbleed[0]

[0] https://en.m.wikipedia.org/wiki/Cloudbleed

Re:Using HTTP Basic Auth in 2022 by thrashh on Saturday January 01, 2022 @03:43PM (#29762534)
But most login forms don’t do that anyway so it wouldn’t be any worse than how things are already done.
Re:Using HTTP Basic Auth in 2022 by dllthomas on Saturday January 01, 2022 @04:23PM (#29762973)
You've responded as if the bit you've quoted is advice to individual developers in the present context, but the topic of conversation was about extending browsers so that the standard login form would do this (... better than existing auth digest). If we did that and people were used to using the browser's built-in login dialog, and (as with https) we made it visible what security features were enabled, then a trivial server-side change wouldn't compromise user passwords.
Re:Using HTTP Basic Auth in 2022 by gjsman-1000 on Saturday January 01, 2022 @04:38PM (#29763113)
Right... that would be awesome. But it would still be susceptible to a hacker replacing it with a traditional login page with some logging... unless somehow you could prevent any traditional web pages from working.
Re:Using HTTP Basic Auth in 2022 by madacol on Saturday January 01, 2022 @05:51PM (#29763732)
And users WILL NOTICE before that happens

Please, stop using those strawman arguments

Re:Using HTTP Basic Auth in 2022 by gjsman-1000 on Saturday January 01, 2022 @05:59PM (#29763777)
I beg to differ. You'd be surprised how many users probably would not recognize any difference whatsoever as long as the hacker got things looking relatively identical.
Re:Using HTTP Basic Auth in 2022 by dllthomas on Saturday January 01, 2022 @06:13PM (#29763866)
Some users will notice. If we've succeeded to the point of "traditional login pages" being unusual and remarkable, many users will notice. Probably in any case some users will fail to notice.

In any case, though, it seems likely to reduce the impact of a compromise.

Re:Using HTTP Basic Auth in 2022 by remram on Saturday January 01, 2022 @09:19PM (#29765091)
Except you usually send the password once, and get back a cookie with a token that you present for the rest of your session (possibly to other endpoints/servers). Whereas with basic auth, the login/password keeps being sent.
Re:Using HTTP Basic Auth in 2022 by gsich on Saturday January 01, 2022 @10:16PM (#29765437)
>If you are using HTTPS, you are equally as good as any other login form.

Or equally as bad. TLS only protects you from sniffing, not the server seeing your password in cleartext.