DoS — bitta yoki cheklangan manbadan service, qurilma yoki application resource’ini band qilib, qonuniy foydalanuvchilar uchun mavjudlikni buzishga qaratilgan hujum. Atama Denial of Service so‘zlaridan tuzilgan.
DDoS ko‘p tarqatilgan manbadan keladi, DoS esa bitta host, process yoki connectiondan ham bajarilishi mumkin. Hujumning ta’siri source sonidan ko‘ra nishondagi zaiflik va resource limitiga bog‘liq.
Resource exhaustion
DoS quyidagilarni tugatishi mumkin:
- CPU;
- memory;
- disk;
- file descriptor;
- thread;
- process;
- socket;
- database connection;
- queue;
- storage quota.
Resource qayta tiklanmaguncha service yangi request qabul qilmaydi.
Connection exhaustion
Attacker juda ko‘p connection ochib, ularni uzoq vaqt yopmasligi mumkin.
Server har connection uchun state saqlaydi.
Himoya:
Connection soni bilan birga har connectiondagi memory ham kuzatiladi.
Algorithmic complexity
Maxsus input algorithmning eng yomon holatini ishga tushirishi mumkin.
Masalan, parser, regular expression yoki hash collision katta CPU sarflaydi.
Traffic hajmi kichik bo‘lsa ham bitta request uzoq ishlashi mumkin.
Input limit va vaqt cheklovi qo‘llanadi.
ReDoS
Regular Expression Denial of Service noto‘g‘ri regular expression va maxsus matn orqali juda uzoq backtracking yaratadi.
User inputi ustida murakkab regex ishlatilsa CPU band bo‘lishi mumkin.
Safe regex, input length limit va timeout kerak.
Katta payload
Juda katta request body, archive, JSON nesting yoki decompression server memory va CPU’ni tugatishi mumkin.
Himoya:
- maksimal body hajmi;
- nesting limit;
- compression ratio nazorati;
- streaming parser;
- upload quota;
- vaqtinchalik storage limiti.
Logic DoS
Application business qoidasi suiiste’mol qilinadi.
Masalan:
- ko‘p password reset email;
- qimmat report;
- search wildcard;
- invoice generation;
- image conversion;
- SMS yuborish.
Bu requestlar format jihatdan qonuniy bo‘lishi mumkin.
Disk exhaustion
Ko‘p log, upload, temporary file yoki failed job diskni to‘ldiradi.
Disk to‘lsa database va operatsion tizim ham xato berishi mumkin.
Quota, rotation, reserved space va alert ishlatiladi.
Queue saturation
Task producer consumerdan tezroq bo‘lsa queue cheksiz o‘sadi.
Bu memory yoki diskni tugatadi.
Bounded queue, backpressure, TTL va load shedding zarur.
Queue mavjudligi capacity muammosini abadiy hal qilmaydi.
Crash DoS
Maxsus packet yoki input process crashiga olib keladi.
Agar service avtomatik restart qilsa attacker xuddi shu requestni takrorlab crash loop yaratishi mumkin.
Crash signature bloklanadi va patch qo‘llanadi.
Infinite loop va deadlock
Noto‘g‘ri input applicationni infinite loop yoki lock holatiga keltirishi mumkin.
Threadlar tugamaydi va yangi requestlar queue’da qoladi.
Watchdog, timeout va concurrency monitoring buni aniqlaydi.
Authentication DoS
Login yoki password hashing qimmat operation bo‘lishi mumkin.
Attacker ko‘p noto‘g‘ri login yuborib CPU’ni band qiladi yoki accountlarni bloklatadi.
Rate limit user va source bo‘yicha muvozanatli bo‘lishi kerak.
Faqat account lockout attackerga userlarni bloklash imkonini bermasligi kerak.
Single-packet DoS
Ba’zi zaiflikda bitta maxsus packet yoki request service’ni crash qilishi mumkin.
Bunday holatda katta traffic shart emas.
Patch, protocol validation va IPS signature muhim.
DDoS bilan farqi
DoS source’ni bloklash osonroq bo‘lishi mumkin, ammo source spoofed yoki compromised proxy bo‘lsa farq kamayadi.
DDoS ko‘p manba va katta distributed capacity bilan keladi.
Himoya vositalari qisman umumiy: limit, timeout, validation va capacity isolation.
Bulkhead
Kritik va qimmat operationlar alohida worker, pool yoki queue’da ishlaydi.
Bitta endpoint barcha thread va database connectionni egallamaydi.
Bu bulkhead pattern orqali blast radiusni kamaytiradi.
Circuit breaker
Dependency sekin yoki xato bo‘lsa yangi requestlar vaqtincha tez rad etiladi.
Bu har requestni ishlamayotgan service’da uzoq kutishdan saqlaydi.
Circuit breaker hujumni bloklamaydi, ammo cascading failure’ni kamaytiradi.
Monitoring
DoS indikatorlari:
- bitta source’dan ko‘p request;
- CPU yoki memory spike;
- active connection;
- queue depth;
- disk o‘sishi;
- request duration;
- timeout;
- bir endpointdagi anomaliya.
Faqat umumiy trafikni kuzatish qimmat kichik requestlarni o‘tkazib yuborishi mumkin.
Himoya
Asosiy choralar:
- input validation;
- size limit;
- rate va concurrency limit;
- timeout;
- bounded queue;
- isolation;
- cache;
- patch;
- WAF;
- minimal exposed service;
- graceful degradation.
Memory leak
Attacker takroriy request bilan applicationdagi memory leakni tezlashtirishi mumkin. Har requestdan keyin oz miqdor memory qaytmasa process asta-sekin limitga yetadi. Profiling, heap monitoring va request isolation muammoni aniqlaydi. Restart vaqtinchalik tiklaydi, lekin sababni bartaraf etmaydi.
Slow request
Client body yoki headerni juda sekin yuborib connectionni uzoq ushlab turishi mumkin. Reverse proxy minimal data rate, header timeout va body timeout qo‘llaydi. Application server internet clientlari bilan bevosita cheksiz connection saqlamaydi.
Cache exhaustion
Ko‘p noyob key bilan request yuborib cache’ni foydasiz data bilan to‘ldirish mumkin. Bu qonuniy hot itemlarni chiqarib, database yukini oshiradi. Cache key normalization, admission policy va per-tenant quota yordam beradi.
Bog‘liq tushunchalar
DDoS, Resource exhaustion, ReDoS, Rate limiting, Timeout, Bulkhead, Circuit breaker, Load shedding, Input validation, Availability