# Keyboard press caching

## Description

Dans certaines applications, il arrive que celle-ci ai besoin d'enregistrer les frappes clavier pour proposer un préremplissage de l'entrée utilisateur. Cette fonctionnalité peut par exemple être utile dans le cas d'applications de messagerie. Cependant, le cache du clavier peut divulguer et faire fuiter des informations sensibles. La vulnérabilité "Mise en cache des frappes clavier" survient lorsque cette mise en cache n'est pas faite de manière sécurisé.

## Détection

### Analyse statique

#### Via le fichier de base de données

On peut retrouver le fichier de cache clavier à l'emplacement:

&#x20;`/data/data/com.android.providers.userdictionary/databases/user_dict.db`

#### Dans la balise \<EditText>

Dans la définition de mise en page d'une activité, vous pouvez définir des `TextViews` qui ont des attributs XML. Si la L'attribut XML `android:inputType` reçoit la valeur `textNoSuggestions`, le cache du clavier ne s'affichera pas lorsque le champ de saisie est sélectionné. L'utilisateur devra tout saisir à la main. Autrement, la suggestion d'autocompletion restera activé et pourra être retrouvé dans le cache.

Exemple:

```xml
<EditText
    android:id="@+id/KeyBoardCache"
    android:inputType="textNoSuggestions" 
/>
```

### Analyse dynamique

En analyse dynamique, il suffit simplement de tapper quelque chose dans un champs de l'application et regarder si des suggestions sont données.
