this post was submitted on 28 Jul 2025
328 points (97.4% liked)

Technology

73465 readers
3749 users here now

This is a most excellent place for technology news and articles.


Our Rules


  1. Follow the lemmy.world rules.
  2. Only tech related news or articles.
  3. Be excellent to each other!
  4. Mod approved content bots can post up to 10 articles per day.
  5. Threads asking for personal tech support may be deleted.
  6. Politics threads may be removed.
  7. No memes allowed as posts, OK to post as comments.
  8. Only approved bots from the list below, this includes using AI responses and summaries. To ask if your bot can be added please contact a mod.
  9. Check for duplicates before posting, duplicates may be removed
  10. Accounts 7 days and younger will have their posts automatically removed.

Approved Bots


founded 2 years ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
[–] pivot_root@lemmy.world 120 points 4 days ago (3 children)

Tea was storing its users’ sensitive information on Firebase, a Google-owned backend cloud storage and computing service.

Every time. With startups, it's always an unsecured Firebase or S3 bucket.

[–] NeilBru@lemmy.world 13 points 3 days ago* (last edited 3 days ago) (2 children)

I'm certainly no web security expert, but shouldn't Tea's junior network/backend/security developers, let alone seniors, know how to secure said Firebase or S3 buckets with STARTTLS or SSL certificates? Shouldn't a company like this have some sort of compliance department?

[–] zqps@sh.itjust.works 14 points 3 days ago* (last edited 3 days ago) (1 children)

It's a little more complex than that. If you want the app on the user device to be able to dump data directly into your online database, you have to give it access in some way. Encrypting the transmission doesn't do much if every app installation contains access credentials that can be extracted or sniffed.

Obviously there are ways around this too, but it's not just "use TLS".

[–] NeilBru@lemmy.world 2 points 3 days ago* (last edited 3 days ago) (1 children)

Encrypting the transmission doesn't do much if every app installation contains access credentials that can be extracted or sniffed.

Encrypt the credentials then? Or OAUTH pipeline, perhaps? Automated temporary private key generation for each upload (that sounds unrealistic, to be fair)? Can credentialing be used for intermediary storage that encrypts the data on that server and then decrypted on the database host?

Clearly my utter "noobishness" is showing, but at least it's triggering a slight urge to casually peruse modern WebSec production workflows. I am a DNN researcher. Thus, I am far removed from customer-facing production environments, and it shows.

Any recommendations on literature or articles on how engineers solve these problems in a "best practices" way that you can recommend? I suppose I could just look it up, but I thought I'd ask.

Edit: I don't know why I'm down-voted. My questions were sincere.

[–] nickwitha_k@lemmy.sdf.org 4 points 2 days ago* (last edited 2 days ago) (1 children)

You've got the right ideas. Noone should ever be storing any password in plaintext. It should always be hashed and only the hash stored. That's like WEBDEV99 (remedial course, not even 101).

Really. Despite your stated "noobishness", you basically landed in the territory of best practices right of the bat.

If you're looking for a good source of best practices, the CIS benchmarks are great. https://www.cisecurity.org/

[–] NeilBru@lemmy.world 3 points 2 days ago

Brother, I need the "remedial" lessons since I self-host a lot of my experimental DNN solutions on a GPU cluster served via CasaOS/Ubuntu-Server LTS.

I've followed basic tutorials about nginx, end-to-end encryption, and DNS, but I need more knowledge and training about the theory behind modern security best practices. I think I'm doing okay but I have this ever-present anxiety that I've overlooked something and my ass (i.e., sensitive data) is really just hanging out in the wind.

Thank you for your recommendation.

[–] gian@lemmy.grys.it 9 points 3 days ago (1 children)

I am not sure, but I read somewhere that the developer(s) used vibe coding to create the app so...

[–] Canconda@lemmy.ca 2 points 3 days ago (1 children)

A lot of people have speculated that.

According to their statement their code was written in Feb/2024 and predates "vibe coding"

[–] gian@lemmy.grys.it 2 points 2 days ago

What intrigue me is this:

I'm confident vibe coding was not to blame in this particular case,

So they used vibe coding, they are only saying that they think/hope that it is not the cause of the break (and maybe also of the second one)

And if vvibe coding is not caused then they are even more incompetent.

[–] Kalothar@lemmy.ca 6 points 3 days ago (1 children)

My hey we’re probably using Firestore as their database without authenticating their api calls to firebase functions. Basically leaving their api endpoints open to the public Internet.

They could have connected service account and used some kind of auth handshake between that and generate a temporary login token based on user credentials and the service account oauth credentials to access the api. but they probably just had everything set to unauthenticated

[–] nickwitha_k@lemmy.sdf.org 1 points 2 days ago (1 children)

Yup. It sounds like they were following security worst practices.

[–] Kalothar@lemmy.ca 2 points 2 days ago (1 children)

I get doing that in Dev for testing before launch, but in production? that’s insane.

Like it has to either be a junior developer playing the role of lead or some serious lack of web dev fundamentals haha

[–] nickwitha_k@lemmy.sdf.org 2 points 2 days ago

I'd argue that it should not even be done in Dev. Dev, staging/testing, and prod environments should all be as close to one another as possible, especially for infra like datastores.