11-bo‘lim

Zaifliklarni boshqarish

Zaifliklarni topish, CVSS bo'yicha baholash, ustuvorlashtirish, yamoqlash jarayoni va bug bounty.

🕑 15 daqiqa o‘qish 📄 1 038 so‘z 👁 5 marta ko‘rilgan
Ushbu bo‘lim mundarijasi
  1. Boshqaruv tsikli
  2. Inventarizatsiya
  3. Skanerlash turlari
  4. CVSS bahosi
  5. Zaifliklar reyestri
  6. Soxta ijobiy natijalar
  7. Yamoqlash jarayoni
  8. Zaifliklarni oshkor qilish siyosati
  9. Bug bounty
  10. Metrikalar
  11. Avtomatlashtirish
  12. Boshqaruv ro'yxati
  13. Xulosa

Zaifliklar doimiy paydo bo'ladi. Ularni topish emas, muntazam boshqarish - asosiy vazifa.

Boshqaruv tsikli #

Doimiy takrorlanadigan jarayon 1. Inventarizatsiya nima bor? 2. Skanerlash zaifliklarni topish 3. Baholash ustuvorlik 4. Tuzatish yamoq, chora 5. Tekshirish tuzatildimi?
Bir martalik skanerlash - foydasiz; jarayon kerak

Inventarizatsiya #

Bilmagan narsangizni himoya qila olmaysiz

Ko'p tashkilotlarda buzilish unutilgan server yoki eski test tizimi orqali sodir bo'ladi.

Inventarizatsiya - birinchi va eng muhim qadam.

MARKDOWN
| Aktiv | Turi | Muhitm | Egasi | Versiya | Internetga ochiqmi |
|-------|------|--------|-------|---------|-------------------|
| dokon.uz | Veb ilova | Prod | @husanboy | 2.3.0 | Ha |
| api.dokon.uz | API | Prod | @jasur | 2.3.0 | Ha |
| sinov.dokon.uz | Veb ilova | Staging | @jasur | 2.4.0-rc | Ha |
| db-01 | MySQL 8.0 | Prod | @aziz | 8.0.36 | Yo'q |
| redis-01 | Redis 7 | Prod | @aziz | 7.2.4 | Yo'q |
| ci.dokon.uz | GitLab | Ichki | @aziz | 16.8.1 | Ha |
Terminal
# Tarmoqdagi qurilmalarni aniqlash (faqat o'z tarmog'ingizda!)
nmap -sn 10.0.1.0/24

# Ochiq portlar va xizmat versiyalari
nmap -sV -p- 10.0.1.15
Terminal
# Bog'liqliklar inventarizatsiyasi - SBOM
composer show --format=json > sbom-php.json
npm list --json > sbom-js.json

# Standart formatda
syft dir:. -o cyclonedx-json > sbom.json
SBOM - dasturiy tarkib ro'yxati

Software Bill of Materials - loyihangizdagi barcha komponentalar ro'yxati.

Yangi zaiflik e'lon qilinganda, SBOM bo'lsa: "bizda shu kutubxona bormi?" degan savolga bir soniyada javob berasiz.

Usiz - har bir loyihani qo'lda tekshirishga to'g'ri keladi.

Skanerlash turlari #

TurNima tekshiradiVosita
SASTManba kodiSemgrep, Psalm, SonarQube
DASTIshlab turgan ilovaOWASP ZAP, Nikto
SCABog'liqliklarcomposer audit, Snyk, Dependabot
IASTIshlash paytida kodContrast, Seeker
KonteynerDocker obrazlariTrivy, Grype
InfratuzilmaServerlar, tarmoqOpenVAS, Nessus, Lynis
SirlarKodda kalitlargitleaks, trufflehog
Terminal
# SCA - bog'liqliklar
composer audit
npm audit --audit-level=high

# Konteyner
trivy image dokon:2.3.0
grype dokon:2.3.0

# Sirlar
gitleaks detect --source . --report-format json --report-path sirlar.json

# Statik tahlil
semgrep --config=p/security-audit --json --output=semgrep.json manba/
YAML
# CI da avtomatik skanerlash
name: Xavfsizlik skanerlash

on:
  push:
  schedule:
    - cron: '0 3 * * 1'      # har dushanba

jobs:
  bogliqliklar:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: composer audit
      - run: npm audit --audit-level=high

  sirlar:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with: { fetch-depth: 0 }
      - uses: gitleaks/gitleaks-action@v2

  kod:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: returntocorp/semgrep-action@v1
        with:
          config: p/security-audit

  konteyner:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: docker build -t dokon:test .
      - uses: aquasecurity/trivy-action@master
        with:
          image-ref: dokon:test
          severity: CRITICAL,HIGH
          exit-code: 1

CVSS bahosi #

CVSS - zaiflik jiddiyligi shkalasi 0.0 Yo'q Ta'sir yo'q 0.1-3.9 Past Rejalashtirilgan yangilanishda 4.0-6.9 O'rta 30 kun ichida 7.0-8.9 Yuqori 7 kun ichida 9.0-10.0 Kritik 24-48 soat ichida
CVSS - boshlang'ich nuqta, yakuniy qaror emas
Natija
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H  →  9.8 (Kritik)
Ko'rsatkichMa'nosi
AV (Attack Vector)N - tarmoq, A - qo'shni, L - lokal, P - jismoniy
AC (Complexity)L - past, H - yuqori
PR (Privileges)N - kerak emas, L - past, H - yuqori
UI (User Interaction)N - kerak emas, R - kerak
C/I/AMaxfiylik/Yaxlitlik/Mavjudlik: N, L, H
CVSS - kontekstni hisobga olmaydi

CVSS 9.8 bo'lgan zaiflik:

  • Internetga ochiq to'lov tizimida → kritik
  • Ichki tarmoqdagi, 2 kishi ishlatadigan tizimda → o'rtacha

CVSS ni boshlang'ich nuqta sifatida oling, keyin o'z kontekstingizga moslang:

Natija
Haqiqiy ustuvorlik = CVSS × Ochiqlik × Aktiv qiymati × Ekspluatatsiya mavjudligi
PHP
final class ZaiflikBaholovchi
{
    public function ustuvorlik(Zaiflik $z, Aktiv $a): Ustuvorlik
    {
        $ball = $z->cvss;

        // Internetga ochiqmi?
        $ball *= $a->internetgaOchiq ? 1.5 : 0.7;

        // Ekspluatatsiya ommaviy mavjudmi?
        $ball *= $z->ekspluatatsiyaMavjud ? 1.4 : 1.0;

        // Faol foydalanilmoqdami?
        $ball *= $z->faolFoydalanilmoqda ? 2.0 : 1.0;

        // Aktiv muhimligi
        $ball *= match ($a->muhimlik) {
            Muhimlik::Kritik => 1.5,
            Muhimlik::Yuqori => 1.2,
            Muhimlik::Ortacha => 1.0,
            Muhimlik::Past => 0.6,
        };

        // Chora ko'rilganmi?
        $ball *= $z->choraKorilgan ? 0.4 : 1.0;

        return Ustuvorlik::balldan(min($ball, 15.0));
    }
}
KEV katalogiga qarang

CISA Known Exploited Vulnerabilities katalogi - haqiqatda foydalanilayotgan zaifliklar ro'yxati.

Bu ro'yxatdagi zaiflik CVSS bahosi past bo'lsa ham darhol tuzatilishi kerak.

Aksincha: CVSS 9.8, lekin uch yil davomida hech kim ishlatmagan zaiflik kamroq shoshilinch.

Zaifliklar reyestri #

MARKDOWN
# Zaifliklar reyestri

| ID | Aktiv | Zaiflik | CVSS | Ustuvorlik | Holat | Mas'ul | Muddat |
|----|-------|---------|------|-----------|-------|--------|--------|
| Z-001 | api.dokon.uz | SQL inyeksiya (qidiruv) | 9.1 | Kritik | Tuzatilmoqda | @jasur | 2026-08-17 |
| Z-002 | dokon.uz | Eskirgan guzzle (CVE-2026-1234) | 7.5 | Yuqori | Rejada | @husanboy | 2026-08-22 |
| Z-003 | db-01 | MySQL 8.0.32 (yangilanish kerak) | 6.5 | O'rta | Rejada | @aziz | 2026-09-15 |
| Z-004 | sinov.dokon.uz | Katalog ro'yxati ochiq | 4.3 | Past | Qabul qilindi | @jasur | — |
| Z-005 | dokon.uz | CSP yo'q | 5.4 | O'rta | Tuzatildi | @husanboy | 2026-08-10 |
PHP
enum ZaiflikHolati: string
{
    case Yangi          = 'yangi';
    case Tasdiqlangan   = 'tasdiqlangan';
    case Rejada         = 'rejada';
    case Tuzatilmoqda   = 'tuzatilmoqda';
    case Tuzatildi      = 'tuzatildi';
    case Tekshirildi    = 'tekshirildi';
    case QabulQilindi   = 'qabul_qilindi';   // xavf qabul qilindi
    case SoxtaIjobiy    = 'soxta_ijobiy';
}

Soxta ijobiy natijalar #

Skanerlar ko'p soxta natija beradi

Odatiy skanerlash hisobotida topilmalarning 30-60% soxta bo'lishi mumkin.

Sabablari:

  • Skaner kontekstni bilmaydi
  • Chora ko'rilganini ko'rmaydi
  • Versiyani noto'g'ri aniqlaydi

Har bir topilmani tekshiring va soxta bo'lsa - sababini yozib qo'ying:

MARKDOWN
| ID | Topilma | Holat | Izoh |
|----|---------|-------|------|
| Z-012 | XSS /qidiruv | Soxta | Chiqish qochirilgan, skaner ko'rmagan |
| Z-013 | Eski jQuery | Soxta | Faqat admin panelda, ichki tarmoqda |

Aks holda har skanerlashda bir xil topilma qaytadan tekshiriladi.

Yamoqlash jarayoni #

Yamoq qo'llash bosqichlari 1. Xabar CVE e'lon qilindi 2. Baholash bizga tegishlimi? 3. Sinov staging da 4. Qo'llash prod ga 5. Tekshirish tuzatildimi? Kritik zaiflik uchun tezlashtirilgan yo'l Vaqtinchalik chora (WAF qoidasi, xizmatni o'chirish) → keyin to'liq yamoq
Yamoq sinovdan o'tmasdan ishlab chiqarishga chiqmasin
Terminal
# Zaiflik bizga tegishlimi?
composer why guzzlehttp/guzzle
Natija
dokon/app                requires  guzzlehttp/guzzle (^7.0)
league/flysystem-aws-s3  requires  guzzlehttp/guzzle (^7.4)
Terminal
# Yangilash
composer update guzzlehttp/guzzle --with-dependencies

# Faqat xavfsizlik yangilanishlari
composer update --with-all-dependencies --prefer-stable
Vaqtinchalik chora

Ba'zan yamoq darhol qo'llab bo'lmaydi:

  • Yangilanish mos kelmasligi mumkin
  • Sinov vaqt talab qiladi
  • Yamoq hali chiqmagan (nol kunlik)

Bunday holatda vaqtinchalik chora:

ChoraMisol
WAF qoidasiZaif URL ga so'rovlarni bloklash
Xizmatni o'chirishZaif imkoniyatni vaqtincha yopish
Tarmoq chekloviFaqat ichki tarmoqdan kirish
Monitoring kuchaytirishEkspluatatsiya urinishlarini kuzatish

Vaqtinchalik chora to'liq yechim emas - uni reyestrga yozing va muddat belgilang.

Zaifliklarni oshkor qilish siyosati #

MARKDOWN
# Xavfsizlik siyosati

Biz xavfsizlik tadqiqotchilarining ishini qadrlaymiz.

## Zaiflik topsangiz

Iltimos, quyidagi manzilga xabar bering:
**[email protected]** (PGP kaliti: /pgp.txt)

Xabarda ko'rsating:
- Zaiflik turi va joylashuvi
- Takrorlash qadamlari
- Potensial ta'sir
- Ekran surati yoki namoyish (agar bo'lsa)

## Bizning majburiyatimiz

- 48 soat ichida javob beramiz
- 7 kun ichida dastlabki baho beramiz
- Tuzatish jarayoni haqida xabardor qilamiz
- Ruxsatingiz bilan hurmat ro'yxatiga kiritamiz

## Doira

Kiradi:
- dokon.uz, api.dokon.uz
- Mobil ilovalar

Kirmaydi:
- sinov.dokon.uz (sinov muhiti)
- Uchinchi tomon xizmatlari
- DDoS hujumlari
- Ijtimoiy muhandislik
- Jismoniy hujumlar

## Qoidalar

- Faqat o'z hisobingiz bilan sinang
- Ma'lumotni o'chirmang va o'zgartirmang
- Xizmatga zarar yetkazmang
- Zaiflikni tuzatilgunga qadar oshkor qilmang
- Boshqa foydalanuvchilar ma'lumotiga kirmang

Ushbu qoidalarga rioya qilgan tadqiqotchilarga qarshi huquqiy
chora ko'rilmaydi.
Natija
# /.well-known/security.txt
Contact: mailto:[email protected]
Expires: 2027-01-01T00:00:00.000Z
Encryption: https://dokon.uz/pgp.txt
Preferred-Languages: uz, ru, en
Policy: https://dokon.uz/xavfsizlik-siyosati
Acknowledgments: https://dokon.uz/hurmat
security.txt - oddiy, lekin foydali

Tadqiqotchi zaiflik topsa, u kimga xabar berishni bilishi kerak.

Bu fayl bo'lmasa, u:

  • Umumiy info@ manzilga yozadi (javob kelmaydi)
  • Ijtimoiy tarmoqda e'lon qiladi
  • Yoki umuman xabar bermaydi

Bir necha qatorlik fayl - katta farq qiladi.

Bug bounty #

ModelTavsifi
Yopiq dasturTaklif qilingan tadqiqotchilar
Ochiq dasturHamma qatnashadi
Mukofotsiz (VDP)Faqat hurmat ro'yxati
Platforma orqaliHackerOne, Bugcrowd
MARKDOWN
# Mukofot jadvali

| Jiddiylik | Mukofot |
|-----------|---------|
| Kritik (9.0-10.0) | $2000 - $5000 |
| Yuqori (7.0-8.9) | $500 - $2000 |
| O'rta (4.0-6.9) | $150 - $500 |
| Past (0.1-3.9) | $50 - $150 |

Qo'shimcha: yaxshi hisobot uchun bonus
Bug bounty - tayyor bo'lganda boshlang

Dastur ochishdan oldin:

  1. Asosiy zaifliklar tuzatilgan bo'lsin
  2. Ichki skanerlash o'tkazilgan bo'lsin
  3. Hisobotlarni ko'rib chiqadigan odam bo'lsin
  4. Tuzatish jarayoni ishlab turgan bo'lsin

Aks holda yuzlab hisobot keladi va ular javobsiz qoladi - bu obro'ga zarar yetkazadi.

Metrikalar #

MARKDOWN
| Ko'rsatkich | Maqsad | Joriy |
|-------------|--------|-------|
| Ochiq kritik zaifliklar | 0 | 1 |
| Ochiq yuqori zaifliklar | < 5 | 3 |
| Kritikni tuzatish o'rtacha vaqti | < 2 kun | 3.2 kun |
| Yuqorini tuzatish o'rtacha vaqti | < 7 kun | 5.8 kun |
| Skanerlash qamrovi | 100% | 92% |
| Muddati o'tgan zaifliklar | 0 | 2 |
| Soxta ijobiy foizi | < 30% | 41% |
Ochiq zaifliklar dinamikasi O'rta Yuqori Kritik Yan Mar May Iyul 40 0 Tendensiya muhimroq - jarayon ishlayaptimi?
Nol zaiflik - real maqsad emas; kamayish tendensiyasi muhim
Nol zaiflik - real maqsad emas

Har kuni yangi zaifliklar e'lon qilinadi. "Nolga yetish" imkonsiz.

To'g'ri maqsadlar:

  • Kritik zaifliklar 24-48 soatda tuzatiladi
  • Muddati o'tgan zaifliklar nol
  • Tendensiya kamayishga qarab boradi
  • Yangi zaifliklar tez aniqlanadi

Avtomatlashtirish #

YAML
# Dependabot
version: 2
updates:
  - package-ecosystem: "composer"
    directory: "/"
    schedule:
      interval: "daily"
    open-pull-requests-limit: 10
    labels: ["xavfsizlik", "bogliqliklar"]
    reviewers: ["husanboy"]

  - package-ecosystem: "docker"
    directory: "/"
    schedule:
      interval: "weekly"

  - package-ecosystem: "github-actions"
    directory: "/"
    schedule:
      interval: "monthly"
PHP
// Zaiflik xabarlarini avtomatik qayta ishlash
final class ZaiflikXabarnomasi
{
    public function qabulQiling(array $xabar): void
    {
        $zaiflik = Zaiflik::xabardan($xabar);

        $tegishliAktivlar = $this->inventar->sbomBoyichaQidiring(
            $zaiflik->paket,
            $zaiflik->tasirlanganVersiyalar,
        );

        if ($tegishliAktivlar === []) {
            $this->jurnal->info('Zaiflik bizga tegishli emas', [
                'cve' => $zaiflik->cve,
            ]);

            return;
        }

        foreach ($tegishliAktivlar as $aktiv) {
            $ustuvorlik = $this->baholovchi->ustuvorlik($zaiflik, $aktiv);

            $vazifa = $this->vazifalar->yarating([
                'sarlavha'   => "[{$ustuvorlik->name}] {$zaiflik->cve} - {$aktiv->nomi}",
                'tavsif'     => $zaiflik->tavsif,
                'mas_ul'     => $aktiv->egasi,
                'muddat'     => $ustuvorlik->muddat(),
                'yorliqlar'  => ['xavfsizlik', $ustuvorlik->value],
            ]);

            if ($ustuvorlik === Ustuvorlik::Kritik) {
                $this->ogohlantiruvchi->darhol($vazifa);
            }
        }
    }
}

Boshqaruv ro'yxati #

Zaifliklarni boshqarish
TalabBajarildi
Aktivlar inventarizatsiyasi mavjud va yangi
SBOM yaratiladi
CI da avtomatik skanerlash
Haftalik to'liq skanerlash
Zaifliklar reyestri yuritiladi
Ustuvorlik kontekst bilan belgilanadi
Har bir zaiflikda mas'ul va muddat
Soxta natijalar yozib boriladi
Yamoq sinovdan o'tadi
Tuzatish tekshiriladi
Metrikalar kuzatiladi
security.txt mavjud
Oshkor qilish siyosati e'lon qilingan
Amaliy topshiriq
  1. Loyihangiz uchun aktivlar inventarizatsiyasini tuzing.
  2. composer audit va npm audit ishga tushiring.
  3. syft bilan SBOM yarating.
  4. gitleaks bilan sirlarni skanerlang.
  5. Trivy bilan Docker obrazini tekshiring.
  6. Topilgan zaifliklarni reyestrga yozing.
  7. Har biriga CVSS va kontekstli ustuvorlik bering.
  8. CI ga avtomatik skanerlash qo'shing.
  9. Dependabot ni yoqing.
  10. security.txt fayli va oshkor qilish siyosatini yozing.

Xulosa #

  • Inventarizatsiyasiz himoya qilib bo'lmaydi - unutilgan tizim eng katta xavf.
  • SBOM yangi zaiflik e'lon qilinganda tez javob berish imkonini beradi.
  • Skanerlash turlari: SAST, DAST, SCA, konteyner, infratuzilma, sirlar.
  • CVSS - boshlang'ich nuqta, yakuniy qaror emas.
  • Ustuvorlikni kontekst bilan hisoblang: ochiqlik, aktiv qiymati, ekspluatatsiya mavjudligi.
  • KEV katalogi - haqiqatda foydalanilayotgan zaifliklar.
  • Skanerlar 30-60% soxta natija beradi - ularni yozib boring.
  • Yamoq sinovdan o'tmasdan ishlab chiqarishga chiqmasin.
  • Vaqtinchalik chora to'liq yechim emas - muddat belgilang.
  • security.txt - oddiy fayl, katta foyda.
  • Nol zaiflik real maqsad emas; tendensiya va tuzatish vaqti muhim.

Keyingi bo'limda xavfsizlik testini ko'ramiz.

Xatolik topdingizmi?

Imlo xatosi, ishlamaydigan kod yoki noto‘g‘ri ma‘lumotni ko‘rsangiz - bizga xabar bering. Har bir xabar administrator tomonidan ko‘rib chiqiladi.