MOQ-Гейт или Закрытый-Открытый Код
🔥 BRKNG!!! 🔥
Один из пользователей Reddit написал следующий пост:
Я только что обновил Moq в одном из наших проектов и после сборки получил предупреждение о том, что я не установил приложение GitHub Sponsors.
После небольшого расследования выяснилось, что Moq, начиная с версии 4.20, включает в себя анализатор .NET, который сканирует вашу локальную конфигурацию git при сборке, получает ваш email и отправляет его в какой-то сервис в Azure, чтобы проверить, действительно ли вы спонсор.
Потом в GitHub проекта появилась новая ишью:
Похоже, начиная с версии 4.20 в проект добавлена зависимость SponsorLink. Это проект с закрытым кодом, представленный в виде dll с обфусцированным кодом (sic!), который, кажется, сканирует локальные данные (git config?) и отправляет хешированный адрес электронной почты текущего разработчика в облачный сервис. Сканирование предоставляется как инструмент анализатора .NET, который запускается во время сборки. Нет возможности его отключить.
Я могу понять причину этого, но, честно говоря, это довольно страшно с точки зрения конфиденциальности.
Насколько я понял, суть в следующем.
Спонсорство – это фича гитхаба по поддержке разработчиков проектов с открытым кодом. SponsorLink – отдельный пакет от разработчика Moq, работающий как анализатор кода в IDE и проверяющий при сборке проекта, являетесь ли вы спонсором используемого вами пакета с открытым кодом. Если нет, он выдаёт предупреждение компилятора с предложением стать спонсором и ссылкой на спонсорство. Если да, выдаётся благодарственное сообщение. При использовании в терминале или CI/CD, он не делает ничего, таким образом не мешая процессу.
Автор утверждает, что опросил знакомых разработчиков, и идею поддержали, однако лично у меня возникают вопросы по поводу того, так ли это надо. Если в теории за спонсорство анализатор будет «открывать» какие-то новые фишки в пакете (видимо, такая и была задумка на будущее). Впрочем, я отвлёкся.
Однако, как обычно, благими намерениями. Реализация этой проверки спонсорства, собственно, и вызвала бурление. Анализатор (без предупреждения) запускает фоновый процесс, который сканирует параметры вашего git репозитория, находит там email пользователя (по другим данным – все email адреса из истории проекта) и отправляет его по сети в облачный сервис для проверки спонсорства. Вот тут вопросов гораздо больше. В первую очередь это нарушает некоторые законы о защите персональных данных, ведь всё это происходит без согласия и даже без уведомления пользователя. Во-вторых, что там реально происходит, и действительно ли отправляется только email и туда ли, куда говорит автор, посмотреть нельзя, т.к. код самого SponsorLink закрыт. В-третьих, email в настройках git может быть корпоративным и не для публичного распространения. В-четвёртых, даже запретить пакету это делать нельзя.
В общем, получить такую интересную закрытую зависимость, просто обновив широко известный пакет «с открытым исходным кодом» - то ещё удовольствие. Автору справедливо накидали полную панамку… ишьюсов и репортов в NuGet, и проблемная версия Moq 4.20.1 была удалена из репозитория NuGet. Вместо неё вчера появилась версия 4.20.2, в которой заявлено, что ссылка на зависимость от SponsorLink была удалена.
Можете также посмотреть, как Ник Чапсас довольно смешно бомбит с этого.
Источник: https://www.reddit.com/r/dotnet/comments/15ljdcc/does_moq_in_its_latest_version_extract_and_send/