info@cetonix.com +91 (966) 512-1196 Mon–Fri, 09:30–18:00 IST
HomeInsightsWhat Bypassing Certificate Pinning Actually Proves

What Bypassing Certificate Pinning Actually Proves

Pinning is not a pass/fail control. The useful output of testing it is a number: how long it took, and with what tooling.

Security Testing Cetonix
What Bypassing Certificate Pinning Actually Proves

Certificate pinning comes up in almost every mobile assessment, usually in one of two unhelpful framings. Either the client expects that pinning will prevent testing altogether, or a previous report recorded “certificate pinning implemented” as a control and moved on.

Both miss what the test is for.

Pinning is a cost, not a barrier

An application running on a device the user controls cannot keep a secret from that user. Pinning does not change this. It raises the effort required to intercept traffic — and raising effort is genuinely valuable — but any implementation can be defeated given a rooted or jailbroken device and standard instrumentation tooling.

So the question is never can it be bypassed. It is how much did it cost, and what tooling was required. That number is the finding.

The spectrum we report against

  • Minutes, with an off-the-shelf script. A standard Frida or Objection universal bypass works against the default network stack with no modification. This is the most common outcome and it means pinning is providing close to no practical resistance.
  • An hour or two, with targeted work. The implementation uses a custom trust manager or a less common HTTP library, so a generic script fails and the specific check has to be located and hooked. Meaningful resistance against opportunistic attackers.
  • A day or more. Pinning implemented in native code, multiple independent checks, integrity verification that detects instrumentation, or validation that also happens server-side. This is rare and it is a genuine control.
  • Not bypassed within the engagement window. We say so explicitly, and we say what we tried, because a bounded negative result is useful and an unbounded one is not.

What else the test reveals

Pinning testing usually surfaces adjacent issues worth more than the pinning verdict itself:

  • Inconsistent coverage. The main API is pinned; the analytics endpoint, the crash reporter, the CDN for remote configuration and the third-party SDK are not. Remote configuration in particular is a control channel worth attacking.
  • Pinning without validation. The pin is checked, the result is logged, and the connection proceeds regardless. We see this more often than you would expect, usually as the residue of a debugging session.
  • No backup pin. A single pinned certificate with no backup is an outage waiting for a certificate rotation. This is a reliability finding that we report anyway, because it is the reason teams disable pinning in a hurry.
  • Debug bypasses in release builds. A flag, a build variant, or a network security configuration that trusts user-added certificate authorities. On Android this is a network_security_config.xml question and it takes thirty seconds to check.

Where pinning sits in the threat model

Pinning defends against an attacker intercepting traffic between the app and your server — hostile networks, and a user who has installed a certificate authority on their own device. It is a reasonable control against the first and a deterrent against the second.

It does not defend against anything the server accepts. If your API trusts a client-supplied field, pinning does not help; the attacker sends the request from anywhere. This matters because pinning is sometimes deployed as a substitute for server-side authorisation, which is a trade that never works.

What to do with the finding

If pinning was bypassed in minutes and your threat model depends on it, that is worth fixing. If pinning was bypassed in minutes and your server-side controls are sound, it is a low-severity observation and your remediation budget belongs elsewhere.

The value of testing it is knowing which of those two situations you are in.

← PCI DSS 11.3 and 11.4: A Vulnerability Scan Is Not a Penetration TestAndroid Exported Components: The Attack Surface You Ship by Accident →