signalapp / Signal-Android

A private messenger for Android.
https://signal.org
GNU Affero General Public License v3.0
25.16k stars 6.06k forks source link

Secure Value Recovery (SVR2) returns 404 upon PIN entry #13458

Open miles992 opened 4 months ago

miles992 commented 4 months ago

Bug description

The SVR2 is returning a 404 if the user tries to enter their PIN during switch of mobile devices.

It is impossible to move the account to a new device, but due to the started process the old device is already de-registered. This is a blocker for customer operation.

There is a very similar issue reported November 23, which is marked as fixed here: https://github.com/signalapp/Signal-Android/issues/13275

Steps to reproduce

Actual result: A "Error connecting to service" error is displayed if the correct PIN is entered. Logs show a 404 error. Expected result: Account is loaded and operable on the new device

Screenshots

Device info

Device: Google Pixel Android version: Android 14, latest offical Signal version: latest from website (downloaded today)

Link to debug log

logcat:

03-03 09:29:39.309  5461  5589 I SvrRepository: [restoreMasterKeyPreRegistration] Network error. SVR2::6ee1042f9e20f880326686dd4ba50c25359f01e9f733eeba4382bca001d45094
03-03 09:29:39.309  5461  5589 I SvrRepository: java.io.IOException: java.net.ProtocolException: Expected HTTP 101 response but was '404 Not Found'
03-03 09:29:39.309  5461  5589 I SvrRepository: at org.whispersystems.signalservice.api.svr.Svr2Socket$SvrWebSocketListener.onFailure(Svr2Socket.kt:163)
03-03 09:29:39.309  5461  5589 I SvrRepository: at okhttp3.internal.ws.RealWebSocket.failWebSocket(RealWebSocket.java:571)
03-03 09:29:39.309  5461  5589 I SvrRepository: at okhttp3.internal.ws.RealWebSocket$2.onResponse(RealWebSocket.java:198)
03-03 09:29:39.309  5461  5589 I SvrRepository: at okhttp3.RealCall$AsyncCall.execute(RealCall.java:203)
03-03 09:29:39.309  5461  5589 I SvrRepository: at okhttp3.internal.NamedRunnable.run(NamedRunnable.java:32)
03-03 09:29:39.309  5461  5589 I SvrRepository: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
03-03 09:29:39.309  5461  5589 I SvrRepository: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644)
03-03 09:29:39.309  5461  5589 I SvrRepository: at java.lang.Thread.run(Thread.java:1012)
03-03 09:29:39.309  5461  5589 I SvrRepository: Caused by: java.net.ProtocolException: Expected HTTP 101 response but was '404 Not Found'
03-03 09:29:39.309  5461  5589 I SvrRepository: at okhttp3.internal.ws.RealWebSocket.checkResponse(RealWebSocket.java:229)
03-03 09:29:39.309  5461  5589 I SvrRepository: at okhttp3.internal.ws.RealWebSocket$2.onResponse(RealWebSocket.java:196)
03-03 09:29:39.309  5461  5589 I SvrRepository: ... 5 more
03-03 09:29:39.309  5461  6466 W Svr2Socket: [onFailure] response? true
03-03 09:29:39.309  5461  6466 W Svr2Socket: java.net.ProtocolException: Expected HTTP 101 response but was '404 Not Found'
03-03 09:29:39.309  5461  6466 W Svr2Socket: at okhttp3.internal.ws.RealWebSocket.checkResponse(RealWebSocket.java:229)
03-03 09:29:39.309  5461  6466 W Svr2Socket: at okhttp3.internal.ws.RealWebSocket$2.onResponse(RealWebSocket.java:196)
03-03 09:29:39.309  5461  6466 W Svr2Socket: at okhttp3.RealCall$AsyncCall.execute(RealCall.java:203)
03-03 09:29:39.309  5461  6466 W Svr2Socket: at okhttp3.internal.NamedRunnable.run(NamedRunnable.java:32)
03-03 09:29:39.309  5461  6466 W Svr2Socket: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
03-03 09:29:39.309  5461  6466 W Svr2Socket: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644)
03-03 09:29:39.309  5461  6466 W Svr2Socket: at java.lang.Thread.run(Thread.java:1012)
03-03 09:29:39.309  5461  6466 W Svr2Socket:
03-03 09:29:39.312  5461  5461 W BaseRegistrationLockFra: Unable to verify code with registration lock
03-03 09:29:39.312  5461  5461 W BaseRegistrationLockFra: java.io.IOException: java.net.ProtocolException: Expected HTTP 101 response but was '404 Not Found'
03-03 09:29:39.312  5461  5461 W BaseRegistrationLockFra: at org.whispersystems.signalservice.api.svr.Svr2Socket$SvrWebSocketListener.onFailure(Svr2Socket.kt:163)
03-03 09:29:39.312  5461  5461 W BaseRegistrationLockFra: at okhttp3.internal.ws.RealWebSocket.failWebSocket(RealWebSocket.java:571)
03-03 09:29:39.312  5461  5461 W BaseRegistrationLockFra: at okhttp3.internal.ws.RealWebSocket$2.onResponse(RealWebSocket.java:198)
03-03 09:29:39.312  5461  5461 W BaseRegistrationLockFra: at okhttp3.RealCall$AsyncCall.execute(RealCall.java:203)
03-03 09:29:39.312  5461  5461 W BaseRegistrationLockFra: at okhttp3.internal.NamedRunnable.run(NamedRunnable.java:32)
03-03 09:29:39.312  5461  5461 W BaseRegistrationLockFra: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
03-03 09:29:39.312  5461  5461 W BaseRegistrationLockFra: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644)
03-03 09:29:39.312  5461  5461 W BaseRegistrationLockFra: at java.lang.Thread.run(Thread.java:1012)
03-03 09:29:39.312  5461  5461 W BaseRegistrationLockFra: Caused by: java.net.ProtocolException: Expected HTTP 101 response but was '404 Not Found'
03-03 09:29:39.312  5461  5461 W BaseRegistrationLockFra: at okhttp3.internal.ws.RealWebSocket.checkResponse(RealWebSocket.java:229)
03-03 09:29:39.312  5461  5461 W BaseRegistrationLockFra: at okhttp3.internal.ws.RealWebSocket$2.onResponse(RealWebSocket.java:196)
03-03 09:29:39.312  5461  5461 W BaseRegistrationLockFra: ... 5 more
SudoJuergens commented 4 months ago

I have a very similar problem, in my case I got de-registered on my old device when trying to activate the new one, but entered the wrong PIN there. Now a week later I try to register my old device again and have the same error message as above. What is a bit concerning now is that although Signal claims I need to enter my PIN to do anything, after the first try I do receive messages on my account again and can even answer them (by clicking on the notifications and answering there instead of in the app), but I am still locked out of the app. In the log file I added both the failing call and that I receive/send messages should be visible. signal-log-1709567745463.zip

nicholas-signal commented 4 months ago

This issue is fixed in 7.1

miles992 commented 4 months ago

This issue is fixed in 7.1

How to get 7.1? The APK download is still 6.47.5, see here: https://signal.org/android/apk/

alex-signal commented 4 months ago

Hello! 7.1 should be going to beta tomorrow afternoon.

miles992 commented 4 months ago

Until the beta is released, my account is unusable because the old phone got deregistered and I cannot PIN auth the new one. I am pretty sure I am not the only person using PIN. That is sort of a big blocker in production than. The beta as solution sounds odd.

Ole-Harald commented 4 months ago

I have the same problem.

stale[bot] commented 2 months ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.