Zhvilluesit e depos së pakove Python, PyPI (Python Package Index), shpallën zbatimin e mbështetjes për mekanizmin e cilësisë dixhitale për verifikimin e autentikësisë së pakove të publikuara, që zëvendësoi verifikimin përmes nënshkrimeve PGP. Një dallim kryesor i cilësisë është se publikimi i paketave nuk certifikohet nga zhvilluesi, por nga një palë e tretë (katalogu i pakove) pas konfirmimit të vërtetësisë së publikimit përmes një ofruesi të jashtëm OpenID Connect (për shembull, pas verifikimit që paketa e publikuar përputhet me depozitat e lidhura në GitHub ose GitLab).
Sistemi i cilësisë eliminon disavantazhet që ishin tipike për mekanizmin e verifikimit me nënshkrime PGP, i cili më parë u shpall i vjetruar në PyPI. Ky zgjidhje u mor për shkak të problemeve me verifikimin e përkatësisë së zhvilluesve të çelësave të hapura PGP, të përdorura për verifikimin e nënshkrimeve dixhitale - nga 1069 çelësa PGP të përdorur që nga viti 2020 për formimin e nënshkrimeve në PyPI, 29% e çelësave të hapura mungonin në publikimet më të mëdha. sistemet çelësa, dhe 35% e çelësave ishin të pamundur të konfirmoheshin gjatë auditimit. Megjithatë, 36% e çelësave PGP të konfirmuar përfshinin vetëm 0.3% të të gjitha skedarëve të nënshkruar.
Në sistemin e ri, nënshkrimet e përdorura për certifikimin e pakove krijohen me çelësa efemerë të gjatë të shkurtër, të gjeneruar mbi bazën e autorizimeve të konfirmuara nga ofruesit e OpenID Connect. Në momentin e gjenerimit të çelësave të nevojshëm për krijimin e nënshkrimit dixhital, zhvilluesi identifikohet përmes ofruesit OpenID, i cili konfirmon lidhjen e tij me projektin kryesor. Infrastruktura për cilësinë dixhitale është e ndërtuar nëpërmjet sistemit Sigstore dhe mjetit in-toto Attestation Framework.
Një nga avantazhet e certifikimit është mungesa e lidhjes me çelësat PGP të përhershëm - humbja ose kompromitimi i çelësit të mbyllur shkakton një besim të prishur ndaj nënshkrimeve të krijuara mbi të, ndërsa me certifikim, nënshkrimi formohet i lidhur me token që konfirmon autorizimet në momentin e vendosjes së paketës dhe lidhjen e paketës me depot kryesore të kodit. Për shembull, kur publikohet një paketë e përgatitur përmes GitHub Action, certifikimi përcakton lidhjen e verifikueshme dhe të konfirmuar midis skedarit të ngarkuar në PyPI, depot, procesit të punës dhe hashit të komitit mbi të cilin është formuar paketa.

Për ndjekjen e autenticitetit të çelësave dhe identifikimin e kompromitimeve të mundshme, për projektet që formojnë paketat dhe për vetë PyPI, përdoret një regjistër publik e qendruar, për të garantuar integritetin dhe mbrojtjen nga falsifikimi retroaktiv, në të cilin implikohet struktura e "pemës Merkle" (Merkle Tree, çdo degë verifikon të gjitha degët dhe nyjet e poshtme përmes hashimit në formën e pemës).
Shtesë, mund të theksohet identifikimi në katalogun PyPI i paketës malinj "fabrice", e cila me ndihmën e typosquatting (caktimi i emrave të ngjashëm, të ndryshuar me simbole të veçanta, për shembull, exampl në vend të example, djangoo në vend të django, pyhton në vend të python etj.) mashtrohej si një bibliotekë e njohur "fabric", e cila ka 201 milion shkarkime (7 milion shkarkime gjatë muajit të kaluar). Paketa malinje kishte mbetur e paditur që nga viti 2021 dhe deri tani ishte shkarkuar më shumë se 37 mijë herë.
Paketa "fabrice" përsëriste funksionalitetin bazë të bibliotekës origjinale dhe për më tepër përfshinte kod për identifikimin dhe dërgimin e çelësave për qasje në AWS (Amazon Web Services), instalimin e një backdoor dhe ekzekutimin e skenareve të caktuar. Aktivizimi i komponimeve malinje ndodhte në Linux dhe Windows. Në Linux, skedarët që lidheshin me aktivitetin malinj ngarkoheshin në katalogun ~/.local/bin/vscode.
Burimi: opennet.ru
