848
(page 2) 50 comments
sorted by: hot top controversial new old
[-] EmilyIsTrans@lemmy.blahaj.zone 42 points 1 day ago

I absolutely despise Firebase Firestore (the database technology that was "hacked"). It's like a clarion call for amateur developers, especially low rate/skill contractors who clearly picked it not as part of a considered tech stack, but merely as the simplest and most lax hammer out there. Clearly even DynamoDB with an API gateway is too scary for some professionals. It almost always interfaces directly with clients/the internet without sufficient security rules preventing access to private information (or entire database deletion), and no real forethought as to ongoing maintenance and technical debt.

A Firestore database facing the client directly on any serious project is a code smell in my opinion.

[-] sylver_dragon@lemmy.world 19 points 1 day ago

I think it's less about the tech picked and more about developers with no sense of security and a poor understanding of networking. I've seen far too many web applications where the developer needed some sort of database behind it (MySQL, PostGres, MSSQL) and so they stood up either a container or entire VM with a public IP and whatever the networking layer set to allow any IP to hit the database port. The excuse is almost always something like, "we needed the web front end to be able to reach the database, so we gave the database server/container a public IP and allowed access". Which is wonderful, right up until half of the IP addresses in Russia start trying to brute force the database.

[-] EmilyIsTrans@lemmy.blahaj.zone 12 points 22 hours ago

I agree that this is ultimately a problem with developers lacking security knowledge and general understanding, but my issue with Firestore specifically is that it is a powerful tool that, while it can be adopted as part of a carefully considered tech stack, lends itself most naturally towards being a blunt force instrument used by these kinds of developers.

My main criticism of Firestore is that it offers a powerful feature set that is both extremely attractive to amateur or constrained developers while simultaneously doing a poor job of guiding said amateurs towards creating a secure and well designed backend. In particular, the seemingly expected use case of the technology as something directly interfaced with by apps and other clients, as evidenced by the substantial support and feature set for this use case, is the main issue. This no-code no-management client driven interaction model makes it especially attractive to these developers.

This lack of indirection through an API Gateway or service, however, imposes additional design considerations largely delegated to the security rules which can easily be missed by a beginner. For example:

  1. Many examples of amateurs take an open-by-default approach, only applying access and write restrictions where necessary and miss data that should be restricted
  2. Some amateurs deploy databases with no access or write restrictions at all
  3. There is no way to only allow a "view" of a document to a request, instead a separate document and security rules containing the private fields needs to be created. This can be fairly simple to design around but seems to be a bit of a "gotcha", plus if you have similar but non identical sets of data that needs to be accessible by different groups it must be duplicated and manually synchronized.
  4. Since there is no way to version data models, incompatible changes require complicated workarounds or an increasingly complicated deserialization process on the client side (especially as existing clients continue to write outdated models).
  5. Schema validation of data written by clients to the database is handled by security rules, which is seemingly unintuitive or missed by many developers because I've seen plenty of projects miss it
  6. If clients are writing data directly, it can become fairly complex to handle and subsequently maintain their contributions, especially if the aforementioned private data documents are required or the data model changes.

All of these pitfalls can be worked around (although I would still argue for some layer of indirection at least for writes), but at this point I've been contracted to 2 or 3 projects worked on by "professionals" (derogatory) that failed to account for any of these issues and I absolutely sick to death of it. I think a measure of a tools quality is whether it guides a developer towards good practices by design and I have found Firestore to completely fail in that regard. I think it can be used well, and it is perfectly appropriate for small inconsequential (as in data leaks would be inconsequential) single developer projects, but it almost never is.

load more comments (3 replies)
[-] fmstrat@lemmy.nowsci.com 68 points 1 day ago
[-] funkless_eck@sh.itjust.works 19 points 1 day ago
[-] FooBarrington@lemmy.world 23 points 1 day ago

You know that's not the Tea code, but the downloader, right?

[-] fmstrat@lemmy.nowsci.com 19 points 1 day ago
[-] FooBarrington@lemmy.world 22 points 1 day ago* (last edited 1 day ago)

Sure, it might be, I'm not saying it isn't. All I'm saying is: the screenshot shows the code someone wrote to download the images. It's not part of the Tea codebase.

load more comments (1 replies)
load more comments (6 replies)
[-] RaivoKulli@sopuli.xyz 1 points 14 hours ago

This is hilarious

[-] Stillwater@sh.itjust.works 301 points 1 day ago

Believe it or not a lot of hacking is more like this than you think.

[-] hoshikarakitaridia@lemmy.world 113 points 1 day ago

Social engineering is probably 95% of modern attack vectors. And that's not even unexpected, some highly regarded computer scientists and security researchers concluded this more than a decade ago.

[-] spankmonkey@lemmy.world 65 points 1 day ago

When the technical side reaches a certain level of security, the humans become the weakest link.

load more comments (3 replies)
load more comments (7 replies)
[-] danc4498@lemmy.world 10 points 1 day ago
[-] Vanilla_PuddinFudge@infosec.pub 1 points 13 hours ago

this man ssh'd in on a five-digit port

If I was a hacker, I would just get a job as a night cleaning person at corporate office buildings. And then just help myself to the fucking post-it notes with usernames and passwords on them.

load more comments (1 replies)
[-] 4am@lemmy.zip 27 points 1 day ago

I think that’s less about “hacking” and more about modern day devs being overworked by their hot-shit team lead and clueless PMs and creating “temporary” solutions that become permanent in the long run.

This bucket was probably something they set up early in the dev cycle so they could iterate components without needing to implement an auth system first and then got rushed into releasing before it could be fixed. That’s almost always how this stuff happens; whether it’s a core element or a rushed DR test.

[-] drkt@scribe.disroot.org 19 points 1 day ago

modern day devs being overworked

And then there is meningspunktet.dk which had all the time in the world to do whatever they wanted, and even get their hosting paid for by a university. They still leaked everyones email, phone, full legal name and location on day one and only fixed it because I pointed it out.

https://drkt.eu/files/ramblings/meningspunktet-dk.html

load more comments (1 replies)
load more comments (2 replies)
[-] taiyang@lemmy.world 93 points 1 day ago

This reminds me of how I showed a friend and her company how to get databases from BLS and it's basically all just text files with urls. "What API did you call? How did you scrape the data?"

Nah man, it's just... there. As government data should be. They called it a hack.

[-] kieron115@startrek.website 32 points 1 day ago* (last edited 1 day ago)

ah yes, the forbidden curl hack

[-] skip0110@lemmy.zip 163 points 1 day ago

AI just enables the shit programmers to create a greater volume of shit

load more comments (2 replies)
[-] ignotum@lemmy.world 84 points 1 day ago

I remember when a senior developer where i worked was tired of connecting to the servers to check its configuration, so they added a public facing rest endpoint that just dumped the entire active config, including credentials and secrets

That was a smaller slip-up than exposing a database like that (he just forgot that the config contained secrets) but still funny that it happened

[-] PattyMcB@lemmy.world 45 points 1 day ago

That's not a "senior developer." That's a developer that has just been around for too long.

Secrets shouldn't be in configurations, and developers shouldn't be mucking around in production, nor with production data.

[-] ignotum@lemmy.world 2 points 17 hours ago

Yeah the whole config thing in that project was an eldritch horror of a legacy, too ingrained in both the services and tooling to be modified without massive rewrites

load more comments (1 replies)
load more comments (1 replies)
load more comments
view more: ‹ prev next ›
this post was submitted on 26 Jul 2025
848 points (99.0% liked)

Programmer Humor

25282 readers
487 users here now

Welcome to Programmer Humor!

This is a place where you can post jokes, memes, humor, etc. related to programming!

For sharing awful code theres also Programming Horror.

Rules

founded 2 years ago
MODERATORS