Intent Redirection
Redirection d'Intent
Description
Une vulnérabilité de redirection d'Intent Android se produit lorsqu'une application envoie un Intent (un objet de messagerie utilisé pour demander une action à un autre composant d'application) à un autre composant, mais qu'un attaquant manipule l'Intent pour le rediriger vers une application ou une activité malveillante. Cela peut conduire à un accès non autorisé aux composants de l'application.
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);
}
}
}
Recommandation
En règle générale, il est préférable d'éviter d'exposer des fonctionnalités liées à la redirection d'Intents imbriqués. Cependant, si la situation l'exige, utilisez les stratégies suivantes pour l'atténuation :
- Vérifiez où l'Intent est redirigé.
- Utilisez des objets PendingIntent. Cela empêche votre composant d'être exporté et rend l'Intent de l'action cible immuable.
- Utilisez IntentSanitizer pour créer une copie assainie d'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);
}
}
}
Liens
Normes
- 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