User Tools

Site Tools


hack:asymmetric_resource_consumption_amplification

asymmetric resource consumption amplification

Description

Un attaquant peut forcer une victime à consommer plus de ressources qu'il ne devrait lui être allouée . Le programme peut ne pas libérer ou de manière incorrecte une ressource système. Une ressource n'est pas correctement effacée et mise à disposition pour une réutilisation .

Exemples

Exemple 1

La méthode suivante ne ferme jamais le descripteur de fichier ouvert. La méthode Finalize() pour StreamReader appelle Close (), mais il n'est pas garanti combien de temps il va prendre avant que la méthode finalize () soit appelée. En fait, il n'y a aucune garantie que Finalize () ne sera jamais appelée. Dans un environnement occupé, ceci peut entrainer dans la VM l 'utilisation de la totalité des descripteurs de fichiers disponibles.

private void processFile(string fName) {
StreamWriter sw = new
StreamWriter(fName);
string line;
while ((line = sr.ReadLine()) != null) processLine(line);
}

Après avoir utilisé tous les descripteurs de fichiers la VM peut devenir très instable, lentE et peut même s'arrêter de fonctionner .

Exemple 2

Dans des conditions normales, le code C # suivant exécute une requête de base de données, traite les résultats renvoyés par la base de données, et ferme l'objet SqlConnection alloué. Mais si une exception se produit pendant l'exécution de l'instruction SQL ou le traitement des résultats, l'objet SqlConnection n'est pas fermé. Si cela se produit assez souvent, la base de données est à court de curseurs disponibles et n'est pas en mesure d'exécuter des requêtes SQL .

C# Example:

...
SqlConnection conn = new SqlConnection(connString);
SqlCommand cmd = new SqlCommand(queryString);
cmd.Connection = conn; conn.Open();
SqlDataReader rdr = cmd.ExecuteReader();
HarvestResults(rdr);
conn.Connection.Close();
...

Le nombre de connexions concurrentes aux bases de données est souvent inférieur au nombre maximal de descripteurs possibles pour le système à utiliser. Il est plus facile de localiser les goulets d'étranglement des applications et de les utiliser pour arrêter l'application ou la rendre instable.

Example 3

Si l'application qui peut gérer les N connexions concurrentes ne peut pas mettre en place un mécanisme approprié pour déconnecter les clients e.g TIMEOUTs, alors il est très facile de la mettre hors service en fermant les N connections. En outre, les connexions doivent simuler le travail avec l'application en utilisant son protocole jusqu'à la saturation des ressources disponibles.

References

hack/asymmetric_resource_consumption_amplification.txt · Last modified: 2022/04/07 07:39 by 127.0.0.1