Size: a a a

2021 February 09

GD

George Drak in #UWDC2021
источник

GD

George Drak in #UWDC2021
Исследователь рассказал как он смог запустить свой код на серверах большого количества компаний
источник

GD

George Drak in #UWDC2021
Основная идея - размещение пакетов для различных языков программирования в публичных репозиториях с именами, которые совпадают с приватными пакеты, использующимися внутри компании
источник

GD

George Drak in #UWDC2021
Типа вы у себя в закрытом проекте делаете npm i my-company-package, который должен поставиться из приватного фида, но кто-то залил пакет с таким же названием на npmjs и вуаля, вы получили чужой пакет
источник

GD

George Drak in #UWDC2021
Причем имена таких пакетов иногда нужно угадать, а иногда можно просто подсмотреть, так как тот же packages.json, как показывает исследование автора, довольно часто включается в итоговые артефакты
источник

GD

George Drak in #UWDC2021
Azure Artifacts уже анонсировали изменения для защиты от подобных атак - https://devblogs.microsoft.com/devops/changes-to-azure-artifact-upstream-behavior/
источник

GD

George Drak in #UWDC2021
Скорее всего за ними последуют и другие провайдеры репозиториев
источник

GD

George Drak in #UWDC2021
Хотя решать проблему скорее всего стоит на уровне пакетных менеджеров
источник

PE

Peter Evsikov in #UWDC2021
Я может не правильно понял, но в том же package.json что бы поставить   Не приватный пакет надо указать полный путь на репозиторий этого пакета, разве нет?
источник

PE

Peter Evsikov in #UWDC2021
Тоже самое когда форкаешь публичный пакет, допиливаешь под себя и указываешь репозиторий откуда ставить этот пакет
источник

GD

George Drak in #UWDC2021
Ну почему, чтобы поставить публичный пакет из npmjs ты просто укажешь его имя - jQuery, к примеру
источник

GD

George Drak in #UWDC2021
Тоже самое с приватным пакетом из приватного фида, если фид добавлен в источники
источник

PE

Peter Evsikov in #UWDC2021
Ну если это публичный пакет, то да, а если не публичный? Если не публичный, то он должен знать откуда ему тянуть его, тоесть должен иметь источник
источник

GD

George Drak in #UWDC2021
В компаниях часто используют свои фиды для этого. Ставят artfactory, или подключают myget, github packages и тд. Добавляют их как доп. источник пакетов
источник

GD

George Drak in #UWDC2021
источник

PE

Peter Evsikov in #UWDC2021
Я так понимаю проблема в приоритетах? Что он чекает сначала публичные, а потом уже частные?
источник

GD

George Drak in #UWDC2021
Ага
источник

PE

Peter Evsikov in #UWDC2021
George Drak
В компаниях часто используют свои фиды для этого. Ставят artfactory, или подключают myget, github packages и тд. Добавляют их как доп. источник пакетов
Да, я знаю, как-то очень давно работал с этим, организовывали микрорепы под переиспользуемые компоненты и делали типа такого


@companyname/componentname: ^1.1.1
источник

GD

George Drak in #UWDC2021
Там что чудесно, npm позволяет выполнить произвольный код при установке пакета. То есть даже запускать или собирать приложение не потребуется
источник

PE

Peter Evsikov in #UWDC2021
George Drak
Там что чудесно, npm позволяет выполнить произвольный код при установке пакета. То есть даже запускать или собирать приложение не потребуется
А у yarn такая же беда?
источник