Intent Redirection
Redirección de Intent
Descripción
Una vulnerabilidad de redirección de Intent de Android ocurre cuando una aplicación envía un Intent (un objeto de mensajería utilizado para solicitar una acción de otro componente de la aplicación) a otro componente, pero un atacante manipula el Intent para redirigirlo a una aplicación o actividad maliciosa. Esto puede llevar a un acceso no autorizado a los componentes de la aplicación.
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
public class YourActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Get the Intent from the previous activity
Intent intent = getIntent();
Intent forward = intent.getParcelableExtra("key");
if (forward != null) {
startActivity(forward);
}
}
}
Recomendación
Como regla general, es mejor evitar exponer funcionalidades relacionadas con la redirección de intents anidados. Sin embargo, si la situación lo exige, utilice las siguientes estrategias para la mitigación:
- Compruebe hacia dónde se redirige el intent.
- Utilice objetos PendingIntent. Esto evita que su componente sea exportado y hace que el intent de la acción de destino sea inmutable.
- Utilice IntentSanitizer para hacer una copia saneada de un Intent
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
public class YourActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Get the Intent from the previous activity
Intent intent = getIntent();
Intent forward = intent.getParcelableExtra("key");
ComponentName name = forward.resolveActivity(getPackageManager());
if (name.getPackageName().equals("safe_package") && name.getClassName().equals("safe_class")) {
startActivity(forward);
}
}
}
Enlaces
Estándares
- OWASP_MASVS_L1:
- MSTG_PLATFORM_2
- OWASP_MASVS_L2:
- MSTG_PLATFORM_2
- PCI_STANDARDS:
- REQ_2_2
- REQ_6_2
- REQ_6_3
- REQ_11_3
- HIPAA_CONTROLS:
- SECURITY221
- SECURITY212
- SECURITY213
- OWASP_MASVS_v2_1:
- MASVS_CODE_4
- SOC2_CONTROLS:
- CC_2_1
- CC_4_1
- CC_7_1
- CC_7_2
- CC_7_4
- CC_7_5