Welp. My Forgejo instance got popped with an RCE two days ago by CVE-2026-60004. Luckily, I noticed the following morning and had the day free to figure out what happened. Let's dive in!

As a homelab enthusiast, I found this a very interesting post. Here are my take aways from the post that I'm implementing myself:

  • Miner detection. I've updated monitoring rules to now watch the CPU on my hosts. If the same thing happened to me I would not have been alerted at all as I'm doing simple up / down monitoring. Fixed.
  • Access logging. I turned on access logging for my homelab Caddy instances.
  • Log retention. I have increased the amount and retention of my logging. The hope is this will help me reconstruct what happened after a breach.
  • Logs offsite. The VPS access logs now ride along with the normal backup process, which runs hourly. The homelab side still only gets caught by the weekly VM backup, so that's next.
  • Closed an open signup. My webtrees instance (genealogy) had self registration enabled, which is the same door this guy got hit through. Oops. Fixed.
  • Built a tool. log-inventory.sh, so "could I actually reconstruct what happened" is a command I run instead of a thing I assume.
you are viewing a single comment's thread
view the rest of the comments
[–] 3 points 2 months ago (5 children)

I wonder if the person who downvoted you thought you pointed your public DNS record to a 192.168 network, instead of making a change to your local DNS server like I'm assuming you did.

  • source
  • parent
  • hideshow 5 child comments
  • [–] 2 points 2 months ago (4 children)

    If you want https it's gotta be a external DNS record anyway, might as well point to internal ips

    Depending on how paranoid your setup is not everything will use the DHCP provided DNS servers

  • source
  • parent
  • hideshow 4 child comments
  • [–] 6 points 2 months ago (2 children)

    If you want https it's gotta be a external DNS record anyway

    Not sure what you mean by that, but off the top of my head, you can get certificates via challenges that prove DNS control (rather than checking if the DNS points to your server), and you can get wildcard certificates so you don't even have to expose the existence of subdomains.

    And that's ignoring the option of using your own CA, which only really works with your own devices, but for local access might be viable.

  • source
  • parent
  • hideshow 2 child comments
  • [–] 1 point 3 weeks ago (1 child)

    So what you do is you have an external DNS that sharing your URL. You have the DNS point "myrealcoolurl.net" at 192.168.1.123. Now when anyone goes to "myrealcoolurl.net" the dns points them at 192.168.1.123 which worse case is their own router, if they are on your network though they get pointed at your server and are loving all your home hosted applications.

    Now you can get a wildcard TLS cert issued for "myrealcoolyrl.net" and apps in your home network can use https. Anyone outside your network still gets whatever 192.168.1.123 means for them in their home network

  • source
  • parent
  • hideshow 1 child comment
  • [–] 2 points 3 weeks ago

    I'm a bit confused by what you're saying, because to my knowledge the DNS entry you're mentioning won't help with getting a certificate at all. Challenges will typically require either having the DNS entry point to a publicly reachable website (doesn't get you wildcard) or proving the ability to modify records for the domain by adding something like a TXT record on the fly, which shouldn't require A/AAAA records.

    So you should be able to do the second type of challenge without a global A record to get a wildcard certificate, and use local DNS for the A record?

  • source
  • parent