For completeness, the whitepaper is here: http://matasano.com/research/bypassing_openssl_pinning.pdf
17 karma · joined February 5, 2013
For completeness, the whitepaper is here: http://matasano.com/research/bypassing_openssl_pinning.pdf
I think, there is two things to that.
First, for dynamic C/C++ libraries like OpenSSL, some degree of symbols have to be maintained in order to relocate the library and find the entry point to the corresponding function.
Second, Objective-C is a dynamic language and as such the binary will always include the Objective-C method names. The reason is that they are resolved at runtime (via so-called "selectors"). In fact, Objective-C doesn't technically call methods but they use a message passing system. So if you pull any app from the app store, you can determine all classes, methods, and mostly arguments of the methods.
If the app then uses HTTP or HTTPS without certificate validation, it is easily possible to inject JavaScrpipt code even when no Cross-Site Scripting vulnerability exists in the app.
[1] https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2012-66...
[2] https://labs.mwrinfosecurity.com/advisories/2013/09/24/webvi...