Egy sebezhetőséget fedeztek fel a RubyGems.org webhelyen, amely lehetővé tette a csomagok cseréjét

Nemrégiben bejelentették, hogy egy kritikus sebezhetőséget azonosítottak a RubyGems.org csomagtárban (a sebezhetőség már katalogizált CVE-2022-29176 számon van), amely megfelelő engedély nélkül lehetővé teszi mások csomagjainak lecserélését a tárházban egy legitim csomag visszavonásának (yank) kezdeményezésével, és egy másik, azonos nevű és verziószámú fájl feltöltésével a helyére.

Megemlítik, hogy a sebezhetőséget a "yank" műveletkezelő hibája okozza , amely a kötőjel utáni névrészt platformnévként kezeli, lehetővé téve a külső csomagok eltávolításának kezdeményezését, amelyek a név kötőjelig terjedő részében egyeznek.

Különösen a "yank" műveletkezelő kódjában a 'find_by!(full_name: "#{rubygem.name}-#{slug}")' hívást használták a csomagok keresésére, míg a "slug" paramétert adták át a csomag tulajdonosának az eltávolítandó verzió meghatározására.

A "rails-html" csomag tulajdonosa megadhatta volna a "sanitizer-1.2.3" parancsot az "1.2.3" verzió helyett, ami miatt a művelet a "rails-html-sanitizer-1.2.3" fájlra vonatkozna. csomag ″ ​​valaki mástól. »

Tegnap közzétették a Rubygems.org biztonsági figyelmeztetését.

A figyelmeztetés egy olyan hibára vonatkozott, amely lehetővé tette a rosszindulatú felhasználók számára, hogy bizonyos drágaköveket bányászjanak, és különböző fájlokat töltsenek fel azonos névvel, verziószámmal és különböző platformon.

Vessünk egy mélyebb pillantást, hogy meglássuk, mi hibázott az extrakciós folyamat során. Mint ürügy, képzeljünk el egy olyan forgatókönyvet, amelyben létrehozunk egy „rails-html” nevű gyöngyszemet azzal a szándékkal, hogy jogosulatlan hozzáférést szerezzünk a széles körben használt „rails-html-sanitizer” gyöngyszemhez.

Megemlítik, hogy három feltételnek kell teljesülnie ahhoz, hogy sikeresen kihasználhassuk ezt a sebezhetőséget:

  • A támadást csak azokon a csomagokon lehet végrehajtani, amelyek nevében van kötőjel.
  • A támadónak képesnek kell lennie arra, hogy elhelyezzen egy drágakőcsomagot a név egy részével egészen a kötőjelig. Például, ha a támadás a "rails-html-sanitizer" csomag ellen irányul, a támadónak el kell helyeznie a saját "rails-html" csomagját a tárolóba.
  • A megtámadott csomagot az elmúlt 30 napban kellett létrehozni, vagy 100 napig nem frissítették.

A problémát egy biztonsági kutató azonosította a HackerOne fejvadászprogramjának részeként, amelynek célja a jól ismert nyílt forráskódú projektek biztonsági hibáinak felkutatása volt.

A problémát május 5-én javították a RubyGems.org oldalon , és a fejlesztők szerint az elmúlt 18 hónap naplóiban még nem találtak a sebezhetőség kihasználására utaló nyomokat. Eddig azonban csak felületes ellenőrzést végeztek, és a jövőben egy alaposabb ellenőrzést terveznek.

Jelenleg úgy gondoljuk, hogy ezt a biztonsági rést nem használták ki.

A RubyGems.org e-mailt küld minden drágakőtulajdonosnak, amikor egy drágakő verziót kiadnak vagy eltávolítanak. Nem kaptunk semmilyen támogatási e-mailt drágakőtulajdonosoktól, amelyek arra utalnának, hogy drágakőjüket engedély nélkül bányászták.

Az elmúlt 18 hónap során végzett drágakő-változások ellenőrzése nem talált példát a biztonsági rés rosszindulatú használatára. A kizsákmányolás esetleges felhasználásának további vizsgálata során a RubyGems történetében nem találtak olyan példát, hogy ezt a kihasználást egy drágakő átvételére használták volna engedély nélkül. Nem tudjuk garantálni, hogy soha nem történt meg, de nem tűnik valószínűnek.

A projektek ellenőrzéséhez javasoljuk, hogy elemezze a műveletek előzményeit a Gemfile.lock fájlban. A rosszindulatú tevékenység az azonos nevű és verziójú változtatások vagy platformmódosítások jelenlétében fejeződik ki (például amikor egy xxx-1.2.3 csomag 1.2.3 frissítve a következőre: xxx-XNUMX-xxx).

A rejtett csomagok megszemélyesítésének megakadályozására folyamatos integrációs rendszerekben vagy projektek közzétételekor a fejlesztőknek azt javasoljuk, hogy a Bundlert a "--frozen" vagy "--deployment" opciókkal használják a függőségek megerősítéséhez.

Végül, ha többet szeretnél megtudni erről , a részleteket az alábbi linken találod.


Hozzáadás előnyben részesített forrásként a Google-ben