Asymmetric_resource_consumption_(amplification)
Popis
Útočník může přinutit oběť spotřebovávat více zdrojů, než by měly být povoleny pro útočníka úrovně přístupu. Program může potenciálně nepodaří uvolnit nebo nesprávně uvolnit systémové zdroje. Zdroj není správně vymazána a dány k dispozici pro opětovné použití
Rizikové faktory
TBD
Příklady
Následující metoda se nikdy zavře popisovač souboru se otevře. Finalize () pro StreamReader nakonec volání Close (), ale není tam žádná záruka, jak dlouho to bude trvat, než Finalize () je vyvolána. Ve skutečnosti neexistuje žádná záruka, že Finalize () bude někdy použil. V rušném prostředí, může to mít za následek VM pomocí se všechny jeho dostupných souborů rukojetí
private void processFile (string fname) { StreamWriter sw = new StreamWriter (fname); string line; while ((řádek = sr.ReadLine ()) = null!) processLine (line); }
Po použití všechen rukojeti (deskriptory souborů) VM může být velmi nestabilní, pomalé a může přestat pracovat deterministicky oproti předchozímu stavu
Příklad 2
Za normálních podmínek následující kód C # spustí databázový dotaz, zpracuje výsledky vrácené do databáze, a uzavře přidělenou SqlConnection objekt. Ale pokud dojde k výjimce při spouštění SQL nebo zpracování výsledků, je SqlConnection objekt není uzavřen. Pokud se tak stane dost často, databáze dojde k dispozici kurzory a není schopen provést žádné další dotazy SQL.
C # Příklad:
... SqlConnection conn = new SqlConnection (connString); SqlCommand cmd = new SqlCommand (QueryString); cmd.Connection = Conn; conn.Open (); SqlDataReader RDR = cmd.ExecuteReader (); HarvestResults (RDR); conn.Connection.Close (); ...
Počet concurent připojení k databází je často nižší než maximální počet možných úchyty pro systém použít. To usnadňuje najít úzká místa aplikace a používat je k zastavení používání nebo je nestabilní.
Kontroloa
Správa paměti
Zdrojů uzamknutí