Skip to content

Commit 45a8eee

Browse files
TheDauntlessJeroen
andauthored
(fix) Missing method name [android sslpinning disable] (#772)
Co-authored-by: Jeroen <thedauntless@gmail.com>
1 parent 50e0473 commit 45a8eee

File tree

1 file changed

+39
-8
lines changed

1 file changed

+39
-8
lines changed

agent/src/android/pinning.ts

Lines changed: 39 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,10 @@ const okHttp3CertificatePinnerCheck = (ident: number): Promise<any | undefined>
106106
const certificatePinner: CertificatePinner = Java.use("okhttp3.CertificatePinner");
107107
send(c.blackBright(`Found okhttp3.CertificatePinner, overriding CertificatePinner.check()`));
108108

109+
if(!certificatePinner.check) {
110+
return null;
111+
}
112+
109113
const CertificatePinnerCheck = certificatePinner.check.overload("java.lang.String", "java.util.List");
110114

111115
// tslint:disable-next-line:only-arrow-functions
@@ -147,6 +151,11 @@ const okHttp3CertificatePinnerCheckOkHttp = (ident: number): Promise<any | undef
147151
return wrapJavaPerform(() => {
148152
try {
149153
const certificatePinner: CertificatePinner = Java.use("okhttp3.CertificatePinner");
154+
155+
if(!certificatePinner.check$okhttp) {
156+
return null;
157+
}
158+
150159
send(c.blackBright(`Found okhttp3.CertificatePinner, overriding CertificatePinner.check$okhttp()`));
151160

152161
const CertificatePinnerCheckOkHttp = certificatePinner.check$okhttp.overload("java.lang.String", "u15");
@@ -175,12 +184,17 @@ const appceleratorTitaniumPinningTrustManager = (ident: number): Promise<any | u
175184
return wrapJavaPerform(() => {
176185
try {
177186
const pinningTrustManager: PinningTrustManager = Java.use("appcelerator.https.PinningTrustManager");
187+
const PinningTrustManagerCheckServerTrusted = pinningTrustManager.checkServerTrusted;
188+
189+
if(!PinningTrustManagerCheckServerTrusted) {
190+
return null;
191+
}
192+
178193
send(
179194
c.blackBright(`Found appcelerator.https.PinningTrustManager, ` +
180195
`overriding PinningTrustManager.checkServerTrusted()`),
181196
);
182197

183-
const PinningTrustManagerCheckServerTrusted = pinningTrustManager.checkServerTrusted;
184198

185199
// tslint:disable-next-line:only-arrow-functions
186200
PinningTrustManagerCheckServerTrusted.implementation = function () {
@@ -213,14 +227,21 @@ const trustManagerImplVerifyChainCheck = (ident: number): Promise<any> => {
213227
return wrapJavaPerform(() => {
214228
try {
215229
const trustManagerImpl: TrustManagerImpl = Java.use("com.android.org.conscrypt.TrustManagerImpl");
216-
send(
217-
c.blackBright(`Found com.android.org.conscrypt.TrustManagerImpl, ` +
218-
`overriding TrustManagerImpl.verifyChain()`),
219-
);
220230

221231
// https://github.com/google/conscrypt/blob/c88f9f55a523f128f0e4dace76a34724bfa1e88c/
222232
// platform/src/main/java/org/conscrypt/TrustManagerImpl.java#L650
223233
const TrustManagerImplverifyChain = trustManagerImpl.verifyChain;
234+
235+
if((!TrustManagerImplverifyChain)) {
236+
return null;
237+
}
238+
239+
send(
240+
c.blackBright(`Found com.android.org.conscrypt.TrustManagerImpl, ` +
241+
`overriding TrustManagerImpl.verifyChain()`),
242+
);
243+
244+
224245
// tslint:disable-next-line:only-arrow-functions
225246
TrustManagerImplverifyChain.implementation = function (untrustedChain, trustAnchorChain,
226247
host, clientAuth, ocspData, tlsSctData) {
@@ -252,14 +273,19 @@ const trustManagerImplCheckTrustedRecursiveCheck = (ident: number): Promise<any>
252273
try {
253274
const arrayList: ArrayList = Java.use("java.util.ArrayList");
254275
const trustManagerImpl: TrustManagerImpl = Java.use("com.android.org.conscrypt.TrustManagerImpl");
276+
277+
if(!trustManagerImpl.checkTrustedRecursive) {
278+
return null;
279+
}
280+
281+
// https://android.googlesource.com/platform/external/conscrypt/+/1186465/src/
282+
// platform/java/org/conscrypt/TrustManagerImpl.java#391
283+
const TrustManagerImplcheckTrustedRecursive = trustManagerImpl.checkTrustedRecursive;
255284
send(
256285
c.blackBright(`Found com.android.org.conscrypt.TrustManagerImpl, ` +
257286
`overriding TrustManagerImpl.checkTrustedRecursive()`),
258287
);
259288

260-
// https://android.googlesource.com/platform/external/conscrypt/+/1186465/src/
261-
// platform/java/org/conscrypt/TrustManagerImpl.java#391
262-
const TrustManagerImplcheckTrustedRecursive = trustManagerImpl.checkTrustedRecursive;
263289
// tslint:disable-next-line:only-arrow-functions
264290
TrustManagerImplcheckTrustedRecursive.implementation = function (certs, host, clientAuth, untrustedChain,
265291
trustAnchorChain, used) {
@@ -287,6 +313,11 @@ const phoneGapSSLCertificateChecker = (ident: number): Promise<any> => {
287313
return wrapJavaPerform(() => {
288314
try {
289315
const sslCertificateChecker: SSLCertificateChecker = Java.use("nl.xservices.plugins.SSLCertificateChecker");
316+
317+
if(!sslCertificateChecker.execute) {
318+
return null;
319+
}
320+
290321
send(
291322
c.blackBright(`Found nl.xservices.plugins.SSLCertificateChecker, ` +
292323
`overriding SSLCertificateChecker.execute()`),

0 commit comments

Comments
 (0)