5 comments

  • neo2006 2 hours ago
    Hey, we're the spinning-factory team, the folks behind Kloak. Kloak runs as a Kubernetes controller. It swaps the secrets in your workloads for harmless placeholders we call kloaked secrets, then uses eBPF to substitute the real secrets back in at the last moment — right when your app makes a request to an allowed host. Today, Kloak works with any app using OpenSSL 3.0–3.5 (statically or dynamically linked) or go-tls (Go 1.25 and 1.26). Support for more TLS libraries (GnuTLS, BoringSSL, and others) and additional Go versions is on the roadmap. Kloak is open source under the AGPL, contributions are welcome! We are also happy to hear any feedback and answer any question for the HN community.
    • koolba 1 hour ago
      So it reads the packets and replaces the byte sequences at the kernel level? How does that work across packet boundaries?
      • neo2006 1 hour ago
        Secrets are detected before encryption in the user buffer but rewrites happen post encryption in the kernel buffer to be sent on the wire.

        packets boundaries are not an issue because detection happen at the SSL write where we have the full secret in the buffer and its position so we can know at rewrite time that the secret is cross 2 packets and rewrite it in 2 separate operations. We also have to update the TLS session hash at the end to not corrupt the TLS frame.

    • subhobroto 1 hour ago
      This is fantastic! I need this. however, for my self-hosted home projects that are containerized but where I don't use Kubernetes, is there a way for me to use a version of Kloak that does the same eBPF magic on docker-compose or LXC/QEMU (Incus) stacks?

      It's perfectly fine for you to say non-Kubernetes isn't either your focus or on your 90 day roadmap :)

      • neo2006 1 hour ago
        Thank you! We appreciate your enthusiasm! :-) From technology perspective nothing prevent kloak to do rewrite on any workload scheduler or even without a scheduler (native Linux). The main challenge is to find a flow to signal to kloak what to rewrite and how to inject kloaked secrets to the workload. TBH supporting other technologies is not something we thought about but we can definitely consider if there is an ask for it from the community.
      • NewJazz 1 hour ago
        Yeah you might have to go talk to incus folks on how to integrate this together.. They are fairly capable, might have some good direction.

        https://discuss.linuxcontainers.org/t/how-to-best-ask-questi...

        • neo2006 7 minutes ago
          Thank you! We will reachout and see what can be done
  • mrweasel 2 hours ago
    Yeah, so Kloak is Danish for sewer.
    • WJW 2 hours ago
      More or less straight from Latin?

      https://en.wikipedia.org/wiki/Cloaca_Maxima

    • neo2006 1 hour ago
      I guess we are the secrets sewers then! :D We would love to hear what you think about it beyond the name though.
      • anthonyskipper 27 minutes ago
        I think it is funny that it's sewer, because a sewer is also a underground way around things, which is a good description of the out of band solution here. So the name checks out.
        • neo2006 5 minutes ago
          It was not intended! We were trying to make it sound like a cloak with a kubernetes K but I guess this explanation actually checkout better!
  • anthonyskipper 1 hour ago
    This is pretty awesome. Super relevant for the time because AI controlled workflows are desperate for a out of band solution like this.

    The main thing I wonder is how well supported is it in cloud environements? AKS/EKS/etc?

    • spinningfactory 1 hour ago
      It should work in cloud environments, We tested it on EKS and digital ocean cloud so far, and it works. The kloak controller is deployed as privileged daemonset that have access to the underlying host and can perform eBPF attachment operations on all the pods on that host.
  • captn3m0 1 hour ago
    You should split your controller - it is running in both the control and data planes. Idea is good though, wish you luck.
    • neo2006 1 hour ago
      Thank you! Not really, the controller is not doing dataplane per-say, it only pushes eBPF programs to the kernel for the relevant apps/cgroups so that could be considered control-plane. The full data-plane run in eBPF.
    • NewJazz 1 hour ago
      Aiui the controller is only running in the control plane, and the ebpf programs are in the data plane?
      • neo2006 8 minutes ago
        yes, that's right!