drošība · 6 min · 17.07.2026

Dependabot tagad gaida trīs dienas pirms versijas atjauninājuma — instalācijas slānis to neievēro

GitHub 14. jūlijā ieslēdza Dependabot versiju atjauninājumiem trīs dienu nogaidi: bots vairs neatver pull request ar jaunu pakotnes versiju, kamēr tā reģistrā nav bijusi pieejama vismaz trīs dienas. Iestatījums strādā pēc noklusējuma, un neko konfigurēt nevajag.

Ideja ir vienkārša. Ļaunprātīga vai bojāta versija parasti tiek pamanīta pirmajās stundās vai dienās pēc publicēšanas. Ja bots to neievelk uzreiz, tad brīdī, kad izstrādātājs apstiprina pull request, kopiena problēmu jau ir paspējusi atzīmēt. Drošības atjauninājumus nogaide neskar — tie joprojām atveras uzreiz, lai kritiskie labojumi nekavējas.

Ko maina noklusējums

Nogaide attiecas uz visām github.com atbalstītajām ekosistēmām — npm, PyPI, Maven, Go moduļiem un pārējām. GitHub Enterprise Server to saņems 3.23 laidienā. Trīs dienas mēra no brīža, kad versija parādās pakotņu reģistrā, nevis no brīža, kad Dependabot to ierauga.

Ja trīs dienas neder, cooldown bloks failā .github/dependabot.yml ļauj to mainīt. Atslēgas ir konkrētas:

  • default-days — nogaide visām versijām, kurām nav sava iestatījuma.
  • semver-major-days, semver-minor-days, semver-patch-days — atsevišķi logi lieliem, mazākiem un ielāpu jauninājumiem. Var likt, piemēram, 14 dienas major un 2 dienas patch.
  • include un exclude — pakotņu saraksti, kuriem nogaide der vai neder.

Ja bloku izlaiž, spēkā ir trīs dienas visam. Ja gribi veco uzvedību, kur pull request atveras tūlīt, nogaidi liec uz nulli. Pilnais atslēgu saraksts ir Dependabot opciju dokumentācijā.

Nogaide sader ar grupēšanu: ja vairākas atkarības ir sasietas vienā pull request, GitHub atver to tikai tad, kad visas grupas versijas ir izturējušas savu logu. Tas nozīmē, ka viena svaiga pakotne grupā aizkavē visu pārējo, tāpēc lielas grupas ar īsu atjaunināšanas ritmu var atvērties retāk, nekā gaidīts.

Kāpēc tieši tagad

Nogaide risina konkrētu problēmu. Uzbrucējs, kas pārņem uzturētāja kontu vai publicē tipona pakotni, rēķinās, ka jaunā versija tiks ievilkta automātiski, pirms kāds to pamana. Reģistros tādas versijas mēdz nodzīvot no dažām stundām līdz dienai, kamēr tās izņem. StepSecurity, kas iepriekš aicināja pievienot Dependabot konfigurācijai tieši šādu nogaidi, apraksta to pašu loģiku: jo ilgāk versija ir publiska bez sūdzībām, jo mazāka iespēja, ka tā ir sabojāta.

Jaunas versijas ir izplatīts piegādes ķēdes uzbrukumu ceļš, kurā kompromitēta versija var sasniegt tavus atjauninājumus, pirms uzturētāji un kopiena to pamana. Neliela nogaide dod šim signālam laiku parādīties.

Skaitļi to paskaidro. Ja ļaunprātīga versija reģistrā nodzīvo pusstundu vai dažas stundas, pirms to izņem, tad trīs dienu nogaide to noķer pilnībā — Dependabot pull request tādā gadījumā nekad neatveras. Daudzi nesenie npm uzbrukumi tieši tā arī izskatījās: uzlauzts konts, ātri publicēta versija ar slēptu kodu, un pēc stundas jau izņemta. Ja versija paliek nepamanīta vairākas dienas, nogaide nepalīdz. Tā pērk laiku, lai signāls parādītos, bet neko negarantē.

Kur nogaide nestrādā

Nogaide nosedz tikai vienu slāni — Dependabot pull request. Pakotņu pārvaldnieks, kas versijas patiešām lejupielādē un instalē, par to neko nezina. TECHi to sauc par instalācijas slāņa spraugu: trīs dienu aizture pirmajā slānī automātiski nekļūst par trīs dienu aizturi otrajā.

Praksē ir vairākas vietas, kur svaiga versija ienāk apejot Dependabot:

  • Izstrādātājs pievieno pakotni ar roku, negaidot botu.
  • CI vai lokālais process pārģenerē lockfile un ievelk jaunāko atbilstošo versiju.
  • Tiešajai atkarībai piesaistās jaunas tranzitīvās atkarības, kuras Dependabot nogaide neierobežo.
  • Instalācijas skripts izpildās instalēšanas brīdī, pirms nogaide vispār ir spēkā.

Paši pakotņu pārvaldnieki noklusējuma aizturi nepiedāvā vienādi. npm nekādu versijas vecuma slieksni neuzliek. pnpm noklusējums atšķiras pa versijām. Yarn vienas dienas vārti ir īsāki par Dependabot trim dienām. Ja komanda paļaujas tikai uz Dependabot noklusējumu, jaunas pakotnes joprojām var ienākt pa citiem ceļiem, un rodas maldīga drošības sajūta.

Cena par nogaidi

Trīs dienas nav bez maksas. Jauna versija bieži nes kļūdu labojumus un jaunas iespējas, un tagad tie pull request atnāk trīs dienas vēlāk. Komandām, kas seko līdzi atkarībām katru dienu, tas ir mazs kavējums. Komandām, kas atjauninājumus sakrāj un apstrādā reizi nedēļā, trīs dienu logs var nozīmēt, ka pakotne izlaiž veselu ciklu.

Svarīgākais robežas gadījums ir drošības atjauninājumi. Tos nogaide neskar, tāpēc, ja pakotne izlaiž versiju, kas labo publiski zināmu ievainojamību, Dependabot to piedāvā uzreiz, negaidot trīs dienas. Nogaide attiecas tikai uz parastiem versiju atjauninājumiem, kur steigas nav.

Ko ar to darīt

Nogaide ir noderīgs noklusējums, taču tā nav pilns aizsargs. Ja piegādes ķēdes riski komandai ir svarīgi, aizturi vajag arī instalācijas slānī. Dependabot pull request vien to nesedz. pnpm jau piedāvā minimālā versijas vecuma iestatījumu, npm instalāciju var piesiet datumam ar --before, un CI var pārbaudīt versijas vecumu pirms lockfile pieņemšanas. Dependabot trīs dienas nosedz automātiskos pull request; pārējie ceļi paliek katras komandas pašas ziņā.

Avoti

komentārisaruna

Komentāri

Šim rakstam vēl nav komentāru. Esi pirmais, kurš dalās ar savu viedokli.

Pievieno komentāru

Tavs e-pasts netiks publicēts. Obligātie lauki atzīmēti.

vēl no drošībasaistītie