TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Show HN: Using eBPF to see through encryption without a proxy

149 pointsby tylerflintabout 5 hours ago
Hi HN, I&#x27;m Tyler Flint, one of the creators of qtap.<p>For a while now, my team and I at Qpoint.io have been grappling with the challenge of understanding what&#x27;s actually happening inside the encrypted traffic leaving our production systems. Modern apps rely heavily on third-party APIs (think payment processors, data providers, etc.), but once TLS kicks in, figuring out exactly what data is being sent, identifying PII exposure, or debugging integration issues becomes incredibly difficult without resorting to complex and often brittle solutions.<p>Traditional approaches like forward proxies require terminating TLS (MITM), managing certificates, and often introduce performance bottlenecks or single points of failure. Network firewalls usually operate at L3&#x2F;L4 and lack payload visibility. We felt there had to be a better way.<p>That&#x27;s why we built qtap. It&#x27;s a lightweight agent that uses eBPF to tap into network traffic at the kernel level. The key idea is to hook into common TLS libraries (like OpenSSL) before encryption and after decryption. This gives us deep visibility into the actual request&#x2F;response payloads of HTTPS&#x2F;TLS traffic without needing to terminate the connection or manage certs. Because it leverages eBPF, the performance impact is minimal compared to traditional methods.<p>With qtap, we can now see exactly which external services our apps are talking to, inspect the payloads for debugging or security auditing (e.g., spotting accidental PII leaks), monitor API performance&#x2F;errors for third-party dependencies, and get a much clearer picture of our egress traffic patterns.<p>We&#x27;ve found this approach really powerful for improving reliability and security posture. We&#x27;ve packaged qtap as a Linux Binary, Docker container, and Helm chart for deployment.<p>This is still evolving, but we&#x27;re excited about the potential of using eBPF for this kind of deep, yet non-intrusive, visibility.<p>We&#x27;d love to get the HN community&#x27;s feedback:<p><pre><code> Do you face similar challenges monitoring encrypted egress traffic? What are your thoughts on using eBPF for this compared to other methods? Any suggestions or potential use cases we haven&#x27;t considered? </code></pre> Happy to answer any questions!

15 comments

bbkaneabout 4 hours ago
Does this work for Go binaries? My understanding is that Go programs do all the encryption &quot;in the process&quot; so the data is encrypted before eBPF can intercept it. I&#x27;d love to be wrong about that!
评论 #43928612 未加载
评论 #43928485 未加载
eptcykaabout 3 hours ago
I know that arguing that SSLKEYLOGFILE is all you need will just be a different version of the rsync&#x2F;dropbox comment, but I do wonder under what circumstances is one able to strace a binary and isn’t able to make it dump session keys? I read the headline and set high hopes on finding a nifty way to mitm apps on Android - alas, I’m not sure this would work there necessarily.
评论 #43929991 未加载
compscidrabout 5 hours ago
Have been following this project for a while, cool stuff!<p>I work a bunch with vpn-like networking on Android phones and it would be cool to have a bit of info on how I might get something like working on phones. I guess its probably not your typical usecase.<p>Currently since the project is a VPN client, I already intercept all of the packets, I have a pcap writer and can write to files or a tcp sockets and connect wireshark to it - but it needs a bunch of complication to setup the keys so that I can see through encryption, so anything that would make that process easier would be great.
评论 #43928585 未加载
zxillyabout 2 hours ago
There&#x27;s a similiar tool <a href="https:&#x2F;&#x2F;github.com&#x2F;gojue&#x2F;ecapture">https:&#x2F;&#x2F;github.com&#x2F;gojue&#x2F;ecapture</a>
评论 #43930948 未加载
worldsaviorabout 4 hours ago
Isn&#x27;t there already mechanisms for patching specific SSL libraries to view encrypted requests (e.g. frida)? What is the benefit of using eBPF?
评论 #43928897 未加载
pclmulqdqabout 4 hours ago
To hook into OpenSSL, don&#x27;t you either need dynamic linking or userspace programs to compile your hooks in? Go and many Rust and C++ binaries tend to prefer static linking, so I wonder if this solution is workable there.
评论 #43928572 未加载
Severianabout 2 hours ago
Kinda related, anyone know of something similar for Windows? This is definitely going in my toolkit, but I need something similar for Windows client traffic inspection (tls 1.2+) to get the full picture. Working with proprietary client&#x2F;server coms over tls. Can use a special debug build, but requires shutting down and replacing. Need something in-sutu.
kristopolousabout 3 hours ago
Just found out about a related things: <a href="https:&#x2F;&#x2F;github.com&#x2F;cle-b&#x2F;httpdbg">https:&#x2F;&#x2F;github.com&#x2F;cle-b&#x2F;httpdbg</a><p>Anyone have any experience with it?
评论 #43929449 未加载
octoberelevenabout 1 hour ago
I don&#x27;t have any answers&#x2F;questions, but reading through the discussion, all I can say at this point is — Super impressive guys!
nikolayasdf123about 4 hours ago
sounds like a security breach. how you ensure this does not become link in some next complex CVE?
评论 #43929025 未加载
评论 #43928841 未加载
dahatebabout 3 hours ago
Does it also work on android? Afaik ebpf is also available there.
评论 #43930130 未加载
评论 #43930465 未加载
0nethacker1about 4 hours ago
I like the fact this doesn&#x27;t impact performance like MITM solutions do.
评论 #43929154 未加载
armitronabout 2 hours ago
There are many independent implementations of the same idea (given how easy it is to implement) but all suffer from similar shortcomings:<p>1. uprobes can be expensive and add latency (they force a context switch and copy data), especially when the hooked functions are called a lot<p>2. EBPF is not widely available outside of Linux, requires elevated privileges (compared to a MITM proxy that requires no privileges and works with every OS)<p>3. Doesn&#x27;t work with JVM, Rust, any runtime that doesn&#x27;t use the hooked functions
评论 #43930407 未加载
delusionalabout 3 hours ago
What does the usage pattern look like for this. Will I need to be root to run it, and can it run from inside a container without &quot;real&quot; host root?<p>I&#x27;m always looking for a way to make sniffing traffic from inside a container easier, and if I could attach a debug sidecar with something like an eBPF based SSL pre-master key extractor (both on incoming and outgoing requests) it starts to feel a lot like having network JTAG.
评论 #43930126 未加载
adampkabout 4 hours ago
How easy is the set up, does this need to be deeply integrated in each step of the life-cycle?
评论 #43928686 未加载