requirements.txt - zahtjevi za instalaciju pipa.txt - zahtjevi za zamrzavanje pipa.txt

Skrivene opasnosti datoteke Requirements.txt: Kako vas prikvačivanje ovisnosti može spasiti

requirements.txt: Osnovni alat ili skrivena prijetnja?

Svaki Python projekt to ima. Taj nevino izgledajući requirements.txt nalazi se u korijenu vašeg repozitorija, datoteka pip install requirements.txt consumes, je popis ovisnosti, naravno, ali ako niste oprezni, to također može biti širom otvorena vrata nestabilnim verzijama, ranjivim paketima i ozbiljnim sigurnosnim problemima.

U svojoj jezgri, zahtjevi.txt kontrolira koje pakete trećih strana vaša aplikacija povlači. Kada pokrenete pip instaliraj -r requirements.txt, Pythonov upravitelj paketa instalira svaku navedenu ovisnost. Ali evo ključne stvari: ako ne prikvačite točne verzije, povjerenje u PyPI uvijek posluživati ​​sigurnu, kompatibilnu i nepromijenjenu verziju, svaki put. To nije način na koji moderni AppSec funkcionira.

Bez prikvačivanja, verzije se mogu pokvariti. Još gore, vaša aplikacija bi mogla nesvjesno unijeti zlonamjerne pakete. Otvoreno upravljanje verzijama (Tikvica >=1.0, na primjer) ili ograničenja labave verzije (django~=3.2) plodno su tlo za ubacivanje nesigurnog koda. Zato je pravilno upravljanje zahtjevi.txt je temeljni sigurnosni zadatak.

Gdje se PIP zamrzava i PIP instaliraju zahtjevi.txt raščlamba

zamrzavanje pipa je praktično, ali i opasno kada se koristi bez razumijevanja što snima. Programeri često generiraju zahtjevi.txt koristeći Zahtjevi za zamrzavanje pipa.txt, očekujući da će zaključati njihovo okruženje. Ali freeze ne provjerava sigurnost ili porijeklo ovisnosti; samo izbacuje sve što je trenutno instalirano, uključujući tranzitivne i potencijalno zastarjele pakete.

Sada zamislite da suigrač ili vaš CI slijepo trči pip instaliraj -r requirements.txtAko ta datoteka sadrži zastarjele, ranjive ili čak paketi s tipografskim greškama, upravo ste automatizirali sigurnosni incident.

Brzi primjer:

⚠️ Nesiguran primjer, ne koristiti u produkciji

Sada dodajte ovo svom CI-ju pipeline:

Vjerujete da je okruženje reproducibilno, da se ništa nije promijenilo u PyPI-ju i da svaka ovisnost je još uvijek sigurno. To je velika pretpostavka kada se oslanjamo na Zahtjevi za zamrzavanje pipa.txt tijekovi rada.

Prave prijetnje AppSecu: Tipografske pogreške i zbrka oko ovisnosti u datoteci requirements.txt

Napadači vole ekosustave otvorenog koda. Zašto? Zato što se programeri često oslanjaju na zadane postavke i implicitno povjerenje. Evo kako napadaju koristeći zahtjevi.txt:

  • Tipo skvotiranjePrijenos zlonamjernog paketa s nazivom poput zahtjevi umjesto zahtjevaJedan lik nedostaje i vaša je verzija u vlasništvu.

zahtjevi # ⚠️ Ilustrativni primjer, nije pravi paket za instalaciju

  • Zbunjenost oko ovisnostiAko vaš interni paket nije pričvršćen ili privatno ograničen, napadači mogu objaviti zlonamjernu verziju na PyPI s istim imenom. Ako vaš CI ne provjerava izvore, instalirat ćete njihov paket umjesto svog.

Oba napada iskorištavaju nedostatak strogog prikvačivanja i kontrole izvora u zahtjevi.txtAko je tvoj samo kaže neka-unutarnja-knjižnica, i trčiš Zahtjevi za instalaciju pip-a.txt u CI-ju, mogao bi dohvatiti pogrešan paket s pogrešnog mjesta.

Datoteka za osiguranje zahtjeva.txt u CI/CD Pipelines hashovima i prikvačivanjem

Evo kako se otvrdnuti zahtjevi.txt protiv prijetnji iz stvarnog svijeta:

  • Prikvači točne verzije: Uvijek koristiti == za svaki paket u vašem zahtjevi.txtNema zamjenskih znakova, nema raspona.
  • Koristiti –zahtijevaju-hasheve: To čini pip instaliraj -r requirements.txt provjeriti integritet svakog preuzetog paketa.

Primjer:

⚠️ Demonstrativni primjer, zamijenite stvarnim hashom u stvarnim projektima

  • Izolirajte svoje verzijeUvijek gradite u čistim, minimalnim spremnicima. Nikada ne vjerujte slijepo osnovnoj slici.
  • Koristite privatni PyPI indeksHostirajte vlastiti proxy/predmemoriju i mirrorajte samo pouzdane pakete.

Pokreni skeniranje ovisnostiIntegrirajte alate poput pip-revizija ili koristiti SBOManaliza temeljena na vašem pipelines.

Primjer isječka koda za GitHub Actions:

⚠️ Edukativno pipeline na primjer, prilagodite se svojoj okolini

Strogo rukovanje pip instaliraj -r requirements.txt in CI/CD je jedan od najlakših načina za smanjenje rizika otvorenog koda.

Reproducibilne verzije: Održavanje njihove stabilnosti u različitim okruženjima

Ako vaša aplikacija radi lokalno, ali ne uspijeva u fazi testiranja ili produkcije, nekonzistentne ovisnosti u zahtjevi.txt su uobičajeni osumnjičeni. Čak i mala verzija drifta uzrokuje velike probleme.

Koristite ove strategije:

  • pip-alati: Koristiti pip-kompiliranje generirati zahtjevi.txt od zahtjevi.inRješava ovisnosti pravilnim prikvačivanjem.
  • Oznake okolineZa pakete specifične za operativni sustav ili ovisnosti specifične za verziju Pythona, koristite oznake poput platform_system == 'Linux'.
  • Docker keširanjeU CI-ju, spremite Docker slojeve u predmemoriju nakon instaliranja ovisnosti iz zahtjevi.txt kako bi se smanjila varijabilnost gradnje.

Primjer s pip-alatima:

⚠️ Demonstrativni primjer, stvarni učinak ovisi o vašem okruženju

Izlaz je potpuno pričvršćen zahtjevi.txt.

Alati poput zamrzavanje pipa, u kombinaciji s pip instaliraj -r requirements.txt tijekom gradnje zahtijevaju disciplinu i dodatne zaštitne mjere.

Zaključak: Pouzdano ispunjavanje vaših zahtjeva

Loše upravljanje zahtjevi.txt nije samo loša praksa; to je aktivni sigurnosni rizik. Labavo prikvačivanje, neprovjerene instalacije i slijepo povjerenje u otvorene registre način su na koji napadači iskorištavaju vaše CI/CD pipelineTo nisu teorijski nedostaci; oni se svakodnevno iskorištavaju.

Zakačivanje ovisnosti je više od najbolje prakse. To je vaša prva linija obrane od napada na lanac opskrbe u Pythonu. Kombinirajte to s –zahtijevaju-hasheve, izgraditi izolaciju i reproducibilne alate poput pip-alati, i dobijete pipeline to je teže kompromisno rješenje.

Bilo da koristite Zahtjevi za instalaciju pip-a.txt lokalno ili u CI-ju, uvijek provjerite i pratite što se unosi u vaše verzije. Alati poput Xygeni pružaju vidljivost, provedbu pravila i automatizirane provjere koje blokiraju vaš lanac opskrbe Pythonom od Zahtjevi za zamrzavanje pipa.txt sve do kraja proizvodnje.

alati-za-analizu-sastava-softvera-sca-tools
Prioritizirajte, sanirajte i osigurajte softverske rizike
Nabavite svoj besplatni račun.
Nije potrebna kreditna kartica.

Osigurajte svoj razvoj i isporuku softvera

s Xygeni paketom proizvoda