gojue/ecapture

Feature Request: Add libnnzsrv.so (Oracle) TLS master secret extraction support

Open

#999 opened on May 7, 2026

View on GitHub
 (0 comments) (1 reaction) (0 assignees)C (15,163 stars) (1,611 forks)batch import
help wantedquestion

Description

Feature Request: Support Oracle's libnnzsrv.so (nz* symbols) for Master Secret Extraction

Background: Currently, eCapture's OpenSSL probe targets the standard OpenSSL API (e.g., SSL_do_handshake, SSL_SESSION_get_master_key) and attaches uprobes to those symbols to extract TLS master secrets. However, Oracle's libnnzsrv.so library, as used in Oracle Database clients and some proprietary apps, does not expose those OpenSSL symbols. Instead, it uses custom symbols with an nz* prefix for its own TLS implementation, causing eCapture's current uprobes to miss these flows entirely.

Proposed Solution:

  • Use readelf -s or nm -D on libnnzsrv.so to identify nz* symbols that are analogous to the OpenSSL functions currently hooked by eCapture.
  • Create a new probe following the pattern of the existing OpenSSL probe, but targeting these nz* symbols instead.
  • Implement a custom uprobe for the key extraction logic in Oracle's TLS implementation.
  • Optionally, document any gotchas or kernel-version-specific caveats encountered during development.

Expected Outcome:

  • Enable extraction of TLS master secrets from Oracle flows that use libnnzsrv.so.
  • Allow community contributions and feedback to help refine coverage for less common enterprise TLS stacks.

Reference:

Notes:

  • This feature is not on the official roadmap due to the niche nature of Oracle TLS usage.
  • Upstream focus will remain on OpenSSL, GnuTLS, BoringSSL, and other mainstream stacks, but this enhancement will help users in specialized environments like Oracle DB deployments.

If anyone in the community has Oracle DB internals experience or sample binaries, help is welcome!

Contributor guide