У залежнасцях да npm-пакета з усталёўшчыкам PureScript выяўлены шкоднасныя змены

У залежнасцях да npm-пакета з усталёўшчыкам PureScript выяўлены шкоднасны код, які выяўляецца пры спробе ўсталёўкі пакета purescript. Шкодны код убудаваны праз залежнасці load-from-cwd-or-npm и rate-map. Характэрна, што суправаджэннем пакетаў з дадзенымі залежнасцямі займаецца першапачатковы аўтар npm-пакета з усталёўнікам PureScript, які да нядаўніх часоў займаўся суправаджэннем дадзенага npm-пакета, але каля месяца назад пакет перайшоў да іншых суправаджаючых.

Праблему выявіў адзін з новых мэйтэйнераў пакета, якому правы на суправаджэнне былі перададзены пасля шматлікіх рознагалоссяў і непрыемных абмеркаванняў з першапачатковым аўтарам npm-пакета purescript. Новыя мэйнтэйнеры адказваюць за кампілятар PureScript і настойвалі, што NPM-пакет з яго ўсталёўшчыкам павінен абслугоўвацца тымі ж суправаджаючымі, а не старонняй асобай. Аўтар npm-пакета з усталёўшчыкам PureScript доўга не згаджаўся, але затым саступіў і перадаў доступ да рэпазітара. Пры гэтым некаторыя залежнасці засталіся пад ягоным кіраваннем.

На мінулым тыдні быў выпушчаны рэліз кампілятара PureScript 0.13.2 і
новымі суправаджаючымі было падрыхтавана адпаведнае абнаўленне npm-пакета з усталёўшчыкам, у залежнасцях да якога быў выяўлены шкоднасны код. Зрушаны з пасады суправаджаючага аўтар npm-пакета з усталёўшчыкам PureScript заявіў, што яго ўліковы запіс была скампраметаваная невядомымі атакавалымі. Тым не менш, у бягучым выглядзе дзеянні шкоднаснага кода абмяжоўваліся толькі сабатажам усталёўкі пакета, які стаў першай версіяй ад новых суправаджаючых. Шкоднасныя дзеянні зводзіліся да зацыклявання з высновай памылкі пры спробе ўсталяваць пакет камандай "npm i -g purescript" без выканання відавочнай шкоднаснай актыўнасці.

Былі выяўлены дзве атакі. Праз некалькі гадзін пасля афіцыйнага выхаду новай версіі npm-пакета purescript кімсьці была сфарміравана новая версія залежнасці load-from-cwd-or-npm 3.0.2, змены ў якой прывялі да таго, што выклік loadFromCwdOrNpm() замест спісу неабходных для ўсталявання бінарных файлаў вяртаў паток Праходзіць праз, які люструе ўваходныя запыты ў якасці выходных значэнняў.

Праз 4 дні, пасля таго як распрацоўшчыкі разабраліся ў крыніцы збояў і рыхтаваліся выпусціць абнаўленне для выключэння load-from-cwd-or-npm з залежнасцяў, зламыснікамі было выпушчана яшчэ адно абнаўленне load-from-cwd-or-npm 3.0.4, у якім шкоднасны код быў прыбраны. Тым не менш, амаль адразу было выпушчана абнаўленне іншай залежнасці rate-map 1.0.3, у якой было дададзена выпраўленне, блакавальнае callback-выклік для загрузкі. Г.зн. у абодвух выпадках змены ў новых версіях load-from-cwd-or-npm і rate-map насілі характар ​​??яўнай дыверсіі. Больш таго, у шкоднасным кодзе мелася праверка, якая актывавала збойныя дзеянні толькі пры ўсталёўцы выпуску ад новых суправаджаючых і ніяк не выяўлялася пры ўсталёўцы старых версій.

Распрацоўнікі вырашылі праблему выпускам абнаўлення, у якім праблемныя залежнасці былі выдаленыя. Для таго каб выключыць ссяданне скампраметаванага кода на сістэмах карыстачоў пасля спробы ўсталёўкі праблемнай версіі PureScript рэкамендуецца выдаліць змесціва каталогаў node_modules і файлаў package-lock.json, пасля чаго выставіць у якасці ніжняга ліміту версію purescript 0.13.2.

Крыніца: opennet.ru

Дадаць каментар