A Government Rails Site Was Hacked Hours After the Patch Dropped. What That Means for Your Software
A patched vulnerability was exploited within hours on a government site. That gap between 'patch released' and 'patch applied' is where most bespoke software gets caught out, and it's worth knowing who owns that gap in yours.

A government website was hit within hours of a fix going public for a known Rails vulnerability. Not weeks. Hours. Around the same time, a sandbox escape was found being actively exploited across every current version of Chromium, the engine behind most browsers and a lot of embedded browser components used in business tools.
Neither of these is really a story about Rails or Chromium being weak. It's a story about the gap between a patch being released and a patch being applied. That gap is where almost every breach actually happens, and it's a gap that exists in bespoke software just as much as it does in a government portal.
Once a fix is public, so is the problem
When a security advisory goes out for a framework, a library, or a browser engine, it usually includes enough detail for anyone to work out what was broken and how to exploit it. Security researchers post technical write-ups. Proof-of-concept code turns up on GitHub within days, sometimes hours. Automated scanners then start probing the internet for anything still running the old version.
So the moment a patch is announced, you're not looking at a slow-burning risk. You're looking at a countdown. The businesses that get caught out aren't usually the ones running unusual software. They're the ones running normal, sensible software that nobody got round to updating that week.
Why this matters more for bespoke software, not less
It's tempting to think custom-built systems are safer because nobody else is running the exact same code, so nobody's specifically targeting you. That's true, but it misses the point. Almost no piece of bespoke software is bespoke all the way down. Underneath the custom logic you paid for, there's a framework like Laravel or Rails, a database driver, a PDF library, an authentication package, maybe a payment SDK, and a browser rendering the admin screens your staff use every day.
Attackers don't need to know your business exists. They just need to find servers still running the vulnerable version of something common, and that's exactly what automated scanning does at scale. Your custom booking system or client portal isn't hidden from that. It's built on the same public components as everything else, which means it inherits the same clock once a vulnerability is disclosed.
The question worth asking about any software you rely on
Not "is it secure", because nothing stays secure forever. The better question is: when a vulnerability is disclosed in something this depends on, how long before someone notices, and how long before it's fixed and deployed?
For off-the-shelf SaaS tools, that's the vendor's job, and it's one of the genuine advantages of paying a subscription. For bespoke software, someone has to actually be that person. Not a support ticket that sits in a queue. Someone who's already watching for advisories in the specific stack your system runs on, who knows the codebase well enough to judge whether it's actually exposed, and who can get a fix live the same day if it needs it.
That's not a hypothetical add-on. It's part of what "who owns this after launch" should mean when you commission bespoke software in the first place.
What a sensible patching setup actually looks like
You don't need a security team for this. You need a few unglamorous habits done consistently:
- Know your exact stack. Framework version, key packages, hosting environment. If nobody can answer this in five minutes, that's the first problem.
- Subscribe to the right advisories. Laravel, Rails, WordPress, and major package registries all publish security advisories. Someone needs to actually be reading them, not assuming they'll hear about it.
- Keep staging close to production. If your test environment is months behind live, you can't safely test a patch quickly, which slows down the exact moment speed matters most.
- Have a deployment path that doesn't need a project. If pushing an update requires re-briefing a developer who's never seen the code before, you've already lost the hours that mattered.
- Retire what's no longer supported. Old frameworks and unmaintained plugins eventually stop getting patches at all. At that point the clock never starts, because there's no fix coming.
That last point is worth sitting with. A surprising amount of business-critical software out there is running on a framework version that's already past its support window. Nobody decided that on purpose. It's just what happens when a system gets built, works fine for years, and nobody revisits the foundations underneath it. If that sounds familiar, it's worth an honest look at whether the system needs patching, upgrading, or a properly staged move to something newer, which is exactly the kind of assessment covered in legacy software modernisation.
The advantage of one person owning it
One thing working directly with me instead of a rotating support desk gets you: I already know the stack, because I built it or I've been maintaining it. When an advisory drops for something I use, I don't have to onboard myself to your codebase before I can judge whether you're exposed. I already know. That's the difference between a fix going out in an afternoon and one waiting behind a queue while someone gets up to speed on a system they've never touched.
None of this is about fear. Most vulnerabilities never get exploited against any particular business. But the pattern with the Rails site is worth remembering: the ones that get hit are rarely the interesting targets. They're just the ones where the gap between patch and application happened to be long enough.


