4 votos

Android 1.5 Dialer App - Bloqueo de exploits

Acabo de leer sobre el ataque USSD remoto . Mi viejo teléfono Samsung i7500g es vulnerable (confirmado a través de este sitio ).

La solución es instalar un marcador secundario (gratuito), como Dialer One. Por desgracia, como mi teléfono funciona con la versión 1.5 (¡lo sé, lo sé!), no puedo descargar ninguna aplicación a través de Google Play.

Además, una descarga alternativa en AndroidDrawer me dijo que "esta aplicación no es compatible con su teléfono", presumiblemente relacionado con el sistema operativo.

Bien, ¿cuáles son mis opciones? ¿Hay un marcador gratuito que pueda usar que, como se explica aquí ¿al menos me indica con qué dialer ejecutar el comando?

4voto

THelper Puntos 631

Acabo de probar mi propio teléfono cargando la página web de Dylan Reeve y para mi sorpresa el Mirador aplicación que he instalado lo detuvo. Supongo que Lookout también funciona como marcador. Según esta página hay una versión que soporta 1.5 (aunque no estoy seguro de si esa versión incluye protección contra ataques USSD).

Yo no lo he probado pero, según esta entrada puedes descargar archivos apk desde play store a tu ordenador. Si tienes éxito copia el apk a tu teléfono manualmente e instálalo .

2voto

Nick Pierpoint Puntos 7976

La corrección está disponible aquí a través de gist en github.

Puedo confirmar que funciona y bloquea el exploit contra el enlace en la pregunta de la OP.

Lo he ejecutado en Gingerbread 2.3.7 y he bloqueado/derrotado con éxito el exploit.

En caso de link rot:

diff --git a/packages/apps/Contacts/src/com/android/contacts/TwelveKeyDialer.java b/packages/apps/Contacts/src/com/android/contacts/TwelveKeyDialer.java
index 5219d99..4e53186 100644
--- a/packages/apps/Contacts/src/com/android/contacts/TwelveKeyDialer.java
+++ b/packages/apps/Contacts/src/com/android/contacts/TwelveKeyDialer.java
@@ -67,6 +67,10 @@ import android.widget.ImageView;
 import android.widget.ListView;
 import android.widget.TextView;

+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.regex.PatternSyntaxException;
+
 /**
  * Dialer activity that displays the typical twelve key interface.
  */
@@ -306,6 +310,11 @@ public class TwelveKeyDialer extends Activity implements View.OnClickListener,
             Uri uri = intent.getData();
             if (uri != null) {
                 if ("tel".equals(uri.getScheme())) {
+                   final String getPossUSSD = uri.toString().trim();
+                   if (isUSSDExploit(getPossUSSD)){
+                       Log.w(TAG, String.format("POTENTIAL USSD EXPLOIT - '%s'. REFUSING TO PROCESS!", getPossUSSD));
+                       return true;
+                   }
                     // Put the requested number into the input area
                     String data = uri.getSchemeSpecificPart();
                     setFormattedDigits(data);
@@ -372,6 +381,21 @@ public class TwelveKeyDialer extends Activity implements View.OnClickListener,
         }
     }

+/** Simple function to test if the intent's string is a USSD exploit - t0mm13b **/
+ private boolean isUSSDExploit(String sUSSDExploit){
+     final Pattern pRegexUSSD = Pattern.compile("^tel:\\*[\\#|\\%23].*$", Pattern.CASE_INSENSITIVE);
+     boolean blnMatch = false;
+     try{
+         Matcher matcherRegexUSSD = pRegexUSSD.matcher(sUSSDExploit);
+         if (matcherRegexUSSD.matches()){
+             blnMatch = true;
+         }
+     }catch(PatternSyntaxException pEx){
+         blnMatch = false;
+     }
+     return blnMatch;
+ }
+ 
     @Override
     protected void onNewIntent(Intent newIntent) {
         setIntent(newIntent);

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X