Исследователи GitGuardian опубликовали результаты анализа конфиденциальных данных, забытых разработчиками в коде, размещённом в репозитории Python-пакетов PyPI (Python Package Index). После изучения более 9.5 млн файлов и 5 млн релизов пакетов, связанных с 450 тысячами проектов, было выявлено 56866 фактов утечки конфиденциальных данных. Если учитывать только уникальные данные, без дублирования в разных релизах, число выявленных утечек составило 3938, а число проектов, в которых присутствует хотя бы одна утечка - 2922...Подробнее: https://www.opennet.me/opennews/art.shtml?num=60169
Там есть про то, кто убил Кенеди? Если нет - никакие это не секреты, просто пароли.
доподлинно известно, что его убил не Ли Харви Освальд, а инопланетяне с планеты Нибиру
"Ну офигеть!" - кричали гости...
Никогда такого небыло!
Ну как говорится в лучших традициях PyPI и Cargo :)
А что было в Cargo?
он перепутал с npm
Любая подобная репа будет помойкой, можно не тратить усилия и не устраивать тут перекличку.
Но и cargo потенциально не безопасен. Люди ждут, что пакеты пишут профессионалы, что на загруженный код можно положиться. В реальности их пишут кто попало...
Но и любой репозиторий потенциально небезопасен.
Если ты добавишь в зависимость/выкачаешь либу не с офф. аккаунта, а напр. с мутного форка - то у тебя есть все шансы получить троян.
Напр. https://www.opennet.me/opennews/art.shtml?num=57596А если ты внимательный, то что мешает быть таким же при выборе зависимостей для питона/раста/с++?
Троян вполне можно получить и с офф.аккаунта
Троян можно написать самому
"Люди ждут, что пакеты пишут профессионалы, что на загруженный код можно положиться." - ну это проблема хэлловорлдщиков и любителей спагетти. Профессионалы прежде чем использовать чужой код тестят его. Либо делают полный аудит.
так код этих... опускаторов - работал. Тесты пройдены, прафисианал в деле.> Либо делают полный аудит.
то есть тратят вдесятеро больше времени чем если бы просто написали то же самое с нуля?
И где же водятся такие профиси@налы? В твоем маня-мирке?
Увы, люди используют чужой код чтобы не делать работу которую за них уже кто-то сделал. Потому что это физически невозможно, для начала. Как и всю остальную цивилизацию вокруг себя воссоздать на пустом месте. А раз цивилизация не вся тобой начиная с песка построена - в ней возможны атаки на supply chain с любой стороны.
да и не только тесты. Говорят, тайпскрипт очень хорошо воспринимает сторонние пакеты...
Порой проще свой код написать, чем ковырять и делать полный аудит чужого. Да и работодатель не оценит ковыряние в чужом коде.
Ну потестил - заработало, нужная фича появилась. Что ещё ?
Для большого и относительно-сложного проекта( даже приложение что отлично работает на яблоке, андройде, винде, яблоке-настольном и линухе ) - невозможно перетрясти каждый пакет или для каждого запилить свой аналог
Вообще-то, возможно запилить, но редко в любой конторе сидят мастера по работе с каждой нативщиной, смежно разбирающиеся в кроссплатформенных делах чтобы собственноручно запилить каждую версию конкретного модуля
А, там же ещё работа с железом/графикой... ну тоже бывает. Но не так часто бывают такие посоны, как хотелось бы. Особенно за умеренную зп. Очень умеренную. Щоб у конторы бюджеты не треснули за первые 2 недели
Мелочёвку проще написать самому, что бы точно работало как ожидаешь.
А что крупнее, то поключить проверенные сторонние библиотеки, но если они есть.А профессионалы гарантируют, что ПО взятое у них, будет работать правильно.
А за работу, даже того же самого, но собранного самостоятельно из тех же исходников, уже никто не отвечает.Как пример, если взять например на Гитхабе, какое то бегемотистое ПО на Си, и подобных языках, то оно и соберется и заработает. Вероятность что что то не получится, пренебрежимо мала.
А если попытаться запустить что то, тянущее зависимости из репозитарив в стиле "выгребная яма", то не факт что вообще ПО запустится. А если что постарее попытаться запустить, то мат на ровном месте без причины будет обеспечен. Так, в примере, до зловредов даже не дошли.
ps: Справедливости ради, в любых исходниках, в том числе на Си и подобных языках, скачанном из всяких Гитхабов, и подобных, злонамеренный функционал встречается, и не представляет что то редкое, из рада вон выходящее.
Только из репозиториев библиотек оно распространяется сильно быстрее.
А в SD он используется? Этот ПаПай
ServiceDesk?
Стандартное отклонение — от англ. standard deviation.
Обычно это пишут в нижнем регистре.
Stable Diffusion
пакетная база большая... из них больше половины явно мусорное. кем это фильтруется - не понятно
pypi и npmjs сборники мусора который нельзя удалять. там полно (никому не) нужных пакетов
Хорошо, что в Golang такого нет!
> npmjs сборники мусора который нельзя удалятьПомещаешь пакет как уязвимый, и когда останется меньше 100 пользователей - удаляешь.
> когда останется меньше 100Никогда. Как висело зависимостью в 1000 не менее брошенных пакетов, так и будет висеть.
Ну, да, мусорные пакеты, которые никто не поддерживает и вряд ли кто-то использует так и будут в зависимостях. Но тебе-то какое дело? Ими никто не пользуется.
Кто сказал, что в хламореповнике ими никто не пользуется?
Там ещё 100500 чуть менее брошенных зависимостей, которым лень обновлять хлам.
В итоге все тянут этот залежалый хлам с дырами и в ус не дуют.
В этом и проблема автоматизированных хламовников.
Если посмотреть на код, который загружают скрипты, то станет понятно, что это для Windows систем и создания ботнетов, можете узбагоится красноглазики.
генерируется мусор а виндузятникам пофигу обычно что там крутится
ну не нужен пока никому неуловимый джо. Майнинг снова вышел из моды а больше ни для чего подкроватные серверы вообще не годны.Падаждтити, придумают и для них какую-нибудь вредную деятельность, вон токенов для AI понатырили, пусть он и придумает. Тогда и на крacноглазой улице наступит щастье.
Т.е. на 5 млн пакетов нашли всего восемь вредноносных?
И... из-за чего шум тогда?
Чукча, очевидно, не читатель
Это перекликается со старым анекдотом:У одного мужика все лето крали арбузы,
ему все это надоело и он поставил табличку:
"Один арбуз отравлен!"
На другой день приходит, смотрит все арбузы целые,
а рядом стоит табличка :"Теперь их два!"Тебе приятно играть в лотерею, где выигрыш - это твой проигрыш? Ты любишь играть в русскую рулетку, пусть даже с такой маленькой вероятностью?
Обычным людям это неприятно, если они хотят просто получить хороший результат работы, а не пощекотать себе нервы, не поиграть в негативную лотерею. От того и шум.
> Если учитывать только уникальные данные, без дублирования в разных релизах, число выявленных утечек составило 3938, а число проектов, в которых присутствует хотя бы одна утечка - 2922.Причина потерять веру в нечто, похожее на IT. А, Python?.. Тормозящая туфта. Поделом
P.S. Отдельная благодарность автору статьи. Стиль почти безупречен!
ну зачем ты так вот сразу-то?Интегрированный в пакеты вредоносный код был специфичен для платформы Windows и позволял подключаться к внешнему управляющему серверу, запускать произвольные команды на компьютере разработчика, находить и отправлять на внешний сервер конфиденциальную информацию, такую как ключи доступа, а также передавать произвольные файлы с системы. Кроме того, вредоносный код мог выполнять функции кейлоггера, перехватывать вводимые в Chrome пароли, создавать скриншоты, записывать звук и даже управлять web-камерой.
на питоне же ж! (скорее всего, конечно, нихрена, и либу притащили бинарную, но обертка-то точно ж на питоне)
Тут тебе и удаленное управление, и security audit, и даже вебкам стриминг - и все в одном пакете!
Попробовал бы вот ты так на своем хваленом си!
Понятно, что Python убог, но списывать на «либы» всё — такое себе. Новость не о том, не,
Ничего особо не мешает сделать похожее и под линукс
трудозатраты мешают. Там выше уже писалось же - майнинг снова вышел из моды, на подкроватных серверах местных специалистов ничего уже не намайнишь, а больше толку от них нет.Поэтому неуловимый джо никому снова и не сдался, а не потому что что-то мешало.
Надо на Mojo переходить.
Хламокодинг всегда был и будет хламокодингом, пора уже привыкнуть.
Бечь-то куды, куды бечь скажите?!Рейс на Марс видимо отменяется - там опять будет управление на ведроиде, пусть этот X сам на таком летит.
Куды деваться-то?!
Куды бечь - скрыто в никнейме. Не моём. Именно туда, подальше от хламокодинга.
Уныло глядит на требования к водителю автобуса в одной не вконец еще е6анувшейся стране: "а поводи-ка ты легковушку - не по методу 'права отлежались', а покажи-ка справку из страховой о полной безаварийности - лет этак за пять. Потом профессиональный медосмотр, и, если пройдешь... можешь поучиться у нас - всего-то где-то 300000 ржубликов примерно, пол-годика. А там и экзамен. В процессе только язык подтяни чуток - нет, нам совсем не A1 надо, давай хотя бы B2"Вздыхает, уходит учить питон.
На свой ресторанчик с пиццей-на-вынос, увы, не накопил.
Ну и радуйся жизни. А то потом помирать, а отдавать свой ресторан какому-нибудь тунеядцу, который для его подъёма палец о палец не ударил, обидно.А питон...
Для своей скриптухи учить нетрудно.
А работать в компаниях...
Ниша у него сложная. Какой-нибудь Machine Learning учить придётся. Не всем это понравится, не все смогут осилить, да и честно говоря именно решения на питоновских библиотеках сейчас отбирают работу и снижают зарплаты у айтишников.Да и опенсорс подкидывает сюрпризы.
https://stackoverflow.com/questions/64525121/sift-surf-modul...Вот так строишь своё решение на готовой библиотеке, а потом репу чешешь, что делать.
Имхо, уже пора изучать просто инструменты для AI, а не как их разрабатывать.
К здравомыслию, не?
Чем больше синтаксического сахара в яп, тем больше проблем и узких мест))))
Как известно, C - это ассемблер, щедро политый сахарным сиропом.
Нет
Тут приходится выбиоать: либо ничем не политый и софта на нём 3.5 штуки, либо достаточно политый и софта на нём достаточно.
Вендузятников-любителей обфускации не жалко, зря они заложили pyobf-пакеты.
Не иначе через зависимости зловреды устанавливаются. Когда глубина зависимостей большая, им есть где разгуляться.
Предполагаю, что через какое-то время демократия закончиться и кто-то начнет думать о том как нести за всю эту помойку ответственность.Какие возможны варианты:
1) Собирать взнос с разработчиков на проведение ревью кода и обратную связь от сторожил репозиториев и экспертов. Будет как у Apple размещение кода стоить скажем $100, а как следствие проблемы с оплатой и шум относительно закрытой платформы.
2) Предоставлять доступ только юр. лицам, но тут еще сложнее, так как непонятно как проверить трансграничные компании. Программный продукт компании в Австралии в репозитории Великобритании. Нужно создавать международное авторское право и развивать этот вопрос.
3) Предоставить сообществу так же голосовать и ревьюить код репозиториев и на основе суммарного мнения составлять какие-то суждения.
В любом случае демократии в репозиториях кажется начинает наступать переломный момент когда нечистые на руку люди начинают публиковать зловердный код.
Сегодня нам нужено признать, что кроме программистов фанатиков, компаний заинтересованных в рекламе появился еще один класс программистов (хотя вероятно он и раньше всегда был) этаких вредителей делающих разные пакости.
Зачем? Так оно копейки стоит, а это в этот хлам вкладываться придётся.
Собственно на этом месте хламокодинг обычно и умирает вместе с езычком. Их не один уже был.
> Сегодня нам нужено признать, что кроме программистов фанатиков, компаний заинтересованных в рекламе появился еще один класс программистов (хотя вероятно он и раньше всегда был) этаких вредителей делающих разные пакости.К какому классу отнести компании, пихающие телеметрию и бэкдоры в бинарники средств разработки с целью их подстановки во все генерируемые с их помощью проекты?
> В любом случае демократии в репозиториях кажется начинает наступать переломный момент когда нечистые на руку люди начинают публиковать зловердный код.Так всегда было. Это извечная борьба. Если ты не закроешь дверь, то найдётся кто-то кто тебя обворует в любом обществе.
> В любом случае демократии в репозиториях кажется начинает наступать переломный момент когда нечистые на руку люди начинают публиковать зловердный код.Зачем вы ляпаете слова, смысл которых не знаете? Когда любой можно опубликовать что угодно - это не имеет никакого отношения к демократии. Никакого коллективного принятия решений и равного воздействия участников на результат тут нет. Собственно, тут скорее квази-анархия (квази - потому что власть там на самом деле есть, просто она преимущественно самоустранилась от принятия таких решений, про которые идёт речь).
никогда не понимал, зачем это, когда есть пакетный менеджер ОС
Ось может любой создать, даже я свой дистриб собираю. Пакетный менеджер должен быть как альтернатива, а не как основной инструмент. Проблема в том что зависимостей ну очень много.
эээ. изначальный набор слов я вообще не понял, к чему. последний бред тоже не понял: пакетный менеджер как раз и нужен для работы с кучей зависимостей
Для распространения софта. У других могут быть другие дистрибутивы или операционные системы, а разработчики не будут собирать под все существующи плтаформы. Ты скажешь, что это задача дистров? Но как быть проектам, которые разрабатываются скажем не на деб пакетах, а ты хочешь поставить его себе? Про это проект меинтейнеры даже краем уха не слыашли. И вот тебе вместо того, чтобы сделать pip install -r requrements.txt (лучше poetry install) придется самому выискивать пакеты своего дистра (а зачастую даже собирать) нужные версии всех зависимостей. Поверь мне, ты это не хочешь.Есть еще одно решение это проблемы - собирать все статически в бинарь. Так поступает go и много софта на С++, которые тащат все зависимоти в репе.
> придется самому выискивать пакеты своего дистра (а зачастую даже собирать) нужные версии всех зависимостейИменно так и делается. Благо в мире C зависимости обычно позадачные, а не построчные типа лефтпада.
Не от хорошей жизни. Вот дать нормальные модули в язык, унифицированную систему сборки, так сразу будут и маленькие модули делать, пример этому cargo.
Ну, вот что ни хипстерский шит, то обычно да, с маленькими модулями и хламокодингом.Из исключений - жаба, но там немножко по-другому устроено.
> Ну, вот что ни хипстерский шит, то обычно да, с маленькими модулями
> и хламокодингом.Кстати, если говорить про js, то ранее, до распространения npm и модулей commonjs и esm (последний из которых стандарт языка) библиотеки были тоже большими, например, yui или google closure, которые подключил и у тебя почти все есть. Этакие аналоги буста.
Отравили репозиторий Python? Это системная проблема. Без репозиториев, которые стали весьма опасными, как язык широкого применения, а не только скрипты на замену bash, Python не имеет смысла. Хотя ... как интерфейс к С/С++ может пригодиться. Благодаря армии программистов, поддавшихся на как бы рекламу и типа рейтинги. Хотя нужен ли интерфейс к C/C++ ... Он и сам хорош.
приматы после просмотра двух роликов по машинному обучению считают себя спецами в неком ИИ и бегут запускать питонячьи скрипты у себя на невидии.другие обезьянки после посмотра двух роликов по формошлёпству на джанго и считают себя программистами или даже "разработчиками" и бегут говнокодить
третьи шимпанзе после пяти лет эникеем в офисе с заменой чернил в принтерах находят другую работу и говнокодят на питоне
вот из-за этих трёх категорий людей всё так плохо, там в принципе некому программировать
Всегда так было. Просто язык популярен и это побочный эффект. До этого популярен был пхп и курсы по нему; тогда выход был приседать со штангой теории категорий или писать динамические опердени на эрланге.
Как я понимаю, проблема заключается в том, что многие "разработчики", которые пользуются этими пакетами, не в состоянии понять их исходный код. Особенно с учётом того, что этот код, преимущественно, вовсе не на Python, а на C/C++.
Может и в состоянии, но там по цепочке (дедка за репку, бабка за дедку, внучка за бабку,...) наверное мегабайты кода вытягиваются, замахаешься всё проверять. Подключаешь одну библиотеку, а она использует еще 10, каждая из которых еще 10...
Не утрируйте. Таких базовых библиотек, которые все тянут за собой, пару десятков. То есть, не смотря на то, что сама цепочка зависимостей одной пакета может содержать десяток пакетов, то суммарно для сотни пакетов используемых в одном проекте такие вторичные зависимости составят всего два-три десятка пакетов.
Угу, разворачивал я одно такое поделие, ну, потребовалось - по принципу "развернул и пусть сами с ним бибикаются". По цепочке вытянулось пакетов 150. Один из которых внезапно захотел конкретную версию жабогадюки постарее...
Короче всё это ныне сидит на отдельной виртуалке в чруте и имеет состояние поддержки "работает - не трожь" ныне.
> не в состоянии понять их исходный кодНе в желании скорее. Поставили, работает и ладно. А то, что там дичь какая-нибудь прилетает, они даже не смотрят.
Желание зависит, в том числе, и от квалификации. Разработчику с опытом кодирования на C/C++ потребуется на порядок меньше времени и усилий на аудит кода пакета, написанного на C/C++, чем разработчику не знакомого с C/C++. А так как подавляющее большинство использующих Python не знают кроме него ни одного другого языка, отсюда и последствия. При разработке на C/C++ количество библиотек и классов используется не меньше, но количество намеренной дичи в них - на порядок меньше.
В этом плане очень удобно перехлёстываются C, C++, Java, .NET/C#, PHP и ещё несколько языков. Зная один - ты вполне прочитаешь и другой.
А вот у езычков со своим вычурным синтаксисом (всякие пито-расты) с этим конкретная проблема, да.
>подавляющее большинство использующих Python не знают кроме него ни одного другого языкаЧёт какие-то фантазии, не пересекающиеся с реальностью, бротышка. Или у тебя большинство -- это те, кого учили одному питону в школе? Меня вот тоже одному бейсику в школе учили, и это не значит, что я его хоть немного знаю (правда, даже клепал скрипты на вбс однажды, который никакого отношения к тому бейсику не имеет).
Полагаю, что большинство у него - это те, кто "по курсам в интернетиках". И таки он может быть вполне себе даже прав (но нужны пруфы, конечно, которых наверняка не будет).
Понятно, что моя выборка нерепрезентативна, но, судя по количеству задач в Jira на перенос алгоритмов, уже реализованных на Python, на C/C++ с оформлением пакета для Python, создается именно такое впечатление. Причины переноса в 99% - оптимизация с глубоким параллелизмом.
Так что в холдинге, где я работаю, подавляющее большинство программистов на Python не способны перенести свой код в C/C++.
> Желание зависит, в том числе, и от квалификации. Разработчику с опытом кодирования
> на C/C++ потребуется на порядок меньше времени и усилий на аудит
> кода пакета, написанного на C/C++, чем разработчику не знакомого с C/C++.
> А так как подавляющее большинство использующих Python не знают кроме него
> ни одного другого языка, отсюда и последствия. При разработке на C/C++
> количество библиотек и классов используется не меньше, но количество намеренной дичи
> в них - на порядок меньше.Ну вот, например, какой-нибудь numpy или pandas использует овердовига людей. Вряд ли они в код заглядывают. Но ведь делают же что надо. Вообще я считаю, что у пакетов должен быть рейтинг и если в нем находят уязвимость, то рейтинг должен снижаться.
Интересно, сколько такого же спрятано в растовском карго?
По идее меньше:
Во-первых, самого по себе кода там меньше понаписано.
Во-вторых, код там больше в виде относительно небольших модулей (а не жирных пакетищ), которые в теории и просмотреть можно, перед заюзыванием.
В-третьих, количество "писак по курсам с ютупа" на расте заметно меньше, чем питонистов.
и т.д.
Но всё это не важно, т.к. ты тебе совершенно на саомм деле не интересно, а написал ты просто чтобы набросить на вентилятор.
Они бы ещё на DepositFiles вирусы искали...