App rejected for non-public symbols _BIO_s_socket and _OPENSSL_cleanse from third-party library

Hi, My app was recently rejected with the following message:

The app references non-public symbols in App: _BIO_s_socket, _OPENSSL_cleanse

The confusing part is that these symbols do not come from iOS system libraries. They are defined inside a third-party static library (gRPC/OpenSSL) that my app links. I am not calling any Apple private API, only linking against the third-party code where those symbols are defined.

Questions: Why does App Review treat these symbols as “non-public” when they are provided by my own bundled third-party library, not by the system?

What is Apple’s recommended approach in this situation — should I rebuild the third-party library with symbol renaming / hidden visibility, or is there another supported method?

It would help to understand the official reasoning here, because it seems strange that a vendor-namespaced or self-built OpenSSL would cause a rejection even though I am not using Apple’s internal/private APIs.

Thanks for any clarification.

Thank you for your post. We've begun investigating but we've been unable to locate your app submission to provide further assistance. Can you provide the name and App ID associated with the app? These can be found in App Store Connect in the App Information tab.

App rejected for non-public symbols _BIO_s_socket and _OPENSSL_cleanse from third-party library
 
 
Q