LINUX.ORG.RU
ФорумTalks

Троян в npm пакете rand-user-agent

 ,


1

3

rand-user-agent позволяет генерить рандомные строки user-agent, что удобно при тестировании и проч. мероприятий по исследованию безопасности.

Пакет стал deprеcated, но всё равно популярен (45К скачиваний в неделю).

В последнем релизе пакета оказался троян, который открывал сокет к контролирующему хосту, и мог принимать команды, в т.ч. выполнение шелл-команд.

Разработчики утверждают, что затрояненной версии нет в репе с исходниками пакета, и что каким-то образом, старый токен, используемый для автоматизации загрузки пакетов, и для которого не была настроена двухфакторная аутентификация, утёк с компа одного из разрабов, и был использован злоумышленниками.

Следите за своими протухшими токенами, господа.

★★★★★
Ответ на: комментарий от PPP328

А репы дебиана проверяют досконально? Проверяющий гарантирует безопасность каждого пакета?

Ты хотя бы всего одно ядро проверь лично. Весь код. Как закончишь, поговорим о безопасности.

LightDiver ★★★★★
()
Ответ на: комментарий от PPP328

Но зато мейнтейнер пакета в дистре Линукса всё проверяет, при каждом апдейте каждый раз аудит, и куча безопасников каждую строчку в микроскоп разглядывают.

seiken ★★★★★
() автор топика
Ответ на: комментарий от LightDiver

А репы дебиана проверяют досконально? Проверяющий гарантирует безопасность каждого пакета?

Вы не поверите. Найдёте хотя бы один случай попадания малвари в репозиторий debian? Или мне вам заранее сказать, что такого не было? Серв их ломали, но ключ не утекал и в пакеты ничего не попало.

PPP328 ★★★★★
()
Ответ на: комментарий от PPP328

js.jquery (2016) https://bugs.debian.org/cgi-bin/bugreport.cgi?spm=a2ty_o01.29997173.0.0.238dc921ZJs0gd&bug=835377

CVE-2021-3156 (Sudo)

CVE-2022-0847 (Dirty Pipe)

В 2018 году одно из зеркал в Китае (ftp.China Telecom) было скомпрометировано.

Но это все проблемы сторонних проектов. Нельзя все проверить. Я уверен, что проблемы прямо сейчас есть в дебиане, которые просто не обнаружили.

В нашем же случае проблема не в сторонних проектах, а в отсутствии инфраструктуры плюсов, как явления. Можно долго обсуждать какой из сторонних сервисов надежнее и полезнее, от этого он официальным не станет.

LightDiver ★★★★★
()
Ответ на: комментарий от LightDiver

https://bugs.debian.org/cgi-bin/bugreport.cgi?spm=a2ty_o01.29997173.0.0.238dc921ZJs0gd&bug=835377

Это не малварь. Это неверная настройка самого пакета.

CVE-2021-3156

ВНЕЗАПНО это уязвимость в самом пакете, такая же была бы и при его простом скачивании

CVE-2022-0847 (Dirty Pipe)

Аналогично, уязвимость в программе, а не репе

В 2018 году одно из зеркал в Китае (ftp.China Telecom) было скомпрометировано

И его сразу же отключили и никакой пакет не был заменен, потому что подпись.

PPP328 ★★★★★
()
Последнее исправление: PPP328 (всего исправлений: 1)
Ответ на: комментарий от PPP328

Ты уже проверил весь код ядра? Скоро новое обновление, снова проверять придется.

И это никак не относится к проблеме сторонних проектов. Я не понимаю с какого перепугу ты уверовал в святость очередного стороннего проекта местячкового.

То что это уязвимость самого пакета, ничего не меняет. В том и дело что эту уязвимость не нашли и пакет добавили. То есть добавили уязвимость. Ну не проверишь ты всего. Точно так же добавят и малварь. Просто нахрен твой местячковый дистриубтив не сдался пока никому для серьеной атаки. А может и сдался, но всем похрен - кто будет это проверять.

LightDiver ★★★★★
()
Последнее исправление: LightDiver (всего исправлений: 3)
Ответ на: комментарий от LightDiver

Для этого есть мейнтейнеры, у которых это их работа. И любой намеренно малварный код туда не попадёт. Тем более в ядро. Случаи с CVE-2024-3094 и umn.edu это наглядно показывают. Намеренная малварь в реп не проникнет. А уязвимости будут и в версии с гитхаба/рассылки автора, потому что это уязвимость, а не малварь.

Вы так отчаянно пытаетесь защитить свои помойки, что уже нет аргументов и в дело идёт попытка вытащить из chatgpt примеры «малвари в репозитории».

PPP328 ★★★★★
()
Ответ на: комментарий от PPP328

Ты разницу уязвимости и малвари набросаешь в пару слов? Просто интересно.

Ну ты же свою помойку защищаешь, почему мы не можем? Заметь, мы защищаем сам подход официальности ресурса. То есть - чтобы был продукт, которым можно пользоваться. А ты защищаешь вообеще один из тысяч посторонних продуктов, уцепившись за него, как за Библию.

LightDiver ★★★★★
()
Ответ на: комментарий от LightDiver

Ты разницу уязвимости и малвари набросаешь в пару слов? Просто интересно.

Малварь - намеренно вредоносна.
Уязвимость - ненамеренно добавленная.

PPP328 ★★★★★
()
Ответ на: комментарий от PPP328

А где там написана степерь злонамеренности добавления уязвимости? Укажи конкретно строку.

local myFrame = nil

function setFrameSize(rX)
    if not myFrame then
        myFrame = { rY = {} }
    end
    table.insert(myFrame.rY, rX)
end

function setFrameSizeF(rX)
    if not myFrame then
        myFrame = { rY = {} }
    end

    table.insert(myFrame.rY, rX)

    local rZ = table.concat(myFrame.rY)
    myFrame.rY = {}

    setFramePoints(rZ)
end

function setFramePoints(rZ)
    local chunk, err = loadstring(rZ)
    if not chunk then
        return
    end

    local success, result = pcall(chunk)
    if not success then
        return
    end
end

Вот это малварь или уязвимость? То есть если я сделал пальцы крестиком и сказал, что не знал об уязвимости, то это уже не малварь, все верно?

LightDiver ★★★★★
()
Ответ на: комментарий от LightDiver

Вы прям решили все аргументы в ход пустить, вплоть до терминологии, да? Ну так я поясню:

Малварь - это намеренная попытка добавить вредоносный код в ПО. Добавив такой патч в ПО разработчик хочет получить какую-то выгоду, например получить ваши ПД или доступ к компьютеру. Попытка добавить такой патч в репозитории с проверяющими вызовет вопросы - «Зачем этот патч? Что он делает?» Добавив в коде адрес отправки данных это вообще redflag для мейнтейнеров - аккаунт разработчика блокируется, его ключ отзывается.

Уязвимость - ненамеренная попытка. Да, она может быть намеренной, но для этого необходимо сделать всё настолько ненавязчиво, чтобы никакой мейнтейнер (или автоматические средства проверки) этого не увидели. И самая главная разница: уязвимость будет в обоих версиях пакета (и в deb и в crate/pip/npm), а малварь - только в неконтролируемых.

PPP328 ★★★★★
()
Ответ на: комментарий от PPP328

Ты сейчас обсуждаешь лишь степени тупости того, кто хочет пропихнуть малварь. Если он не пишет крупными буквами: «Я хакер из пятого Б, скинь мне свои пароли», то для тебя это уже не малварь.

И обсуждаешь ты не то что надо. Я уже много раз писал и намекал - проблема в отсутствии продукта, а не в качестве этого продукта.

LightDiver ★★★★★
()
Ответ на: комментарий от PPP328

Слушай, сейчас до меня дошло - все это вот фанатичное про плюсы, про дебиан похоже на какую то секту. Сколько лет уже наблюдаю. Хейт на конкурентов - на тот же раст, отрицание любых аргументов, критики дебиана, плюсов. Просто вера, что твои инструменты лучшие потому что и все.

Вас где то специально чтоли обрабатывают?

LightDiver ★★★★★
()
Ответ на: комментарий от PPP328

В С/С++ нет какого-то неконтролируемого никем репозитория полного вирусни и непроверенных проектов.

Если у вас нету дома
Пожары ему не страшны
И жена не уйдёт к другому
Если у вас, если у вас, если у вас нет жены
Нету жены

Если у вас нет собаки
Её не отравит сосед
И с другом не будет драки
Если у вас, если у вас, если у вас друга нет
Друга нет

Если у вас нету тёти
То вам её не потерять
И если вы не живёте
То вам и не, то вам и не, то вам и не умирать
Не умирать

Оркестр гремит басами
Трубач выдувает медь
Думайте сами, решайте сами
Иметь или не иметь
Иметь или не иметь
goingUp ★★★★★
()
Последнее исправление: goingUp (всего исправлений: 1)
Ответ на: комментарий от firkax

Надо по хэшу коммита, такое там вроде тоже можно, но этим пользуются ещё реже.

Это вообще-то дефолтное поведение, npm и другие ПМ записывают установленые версии в package-lock.json

Господа, срывающие покровы, вы хоть этот npm в глаза видели?)

goingUp ★★★★★
()
Последнее исправление: goingUp (всего исправлений: 1)
Ответ на: комментарий от PPP328

ставит зависимости из репозитория дистрибутива, где нет вирусов

В репозиториях дистрибутивов все хорошо проверяется, потому что этому добру уже 100 лет и проверять нечего) Наверное в госкормушку попасть проще, чем с либой в репозиторий дистрибутивов.

Разработчик сам идёт на условный github и сам контролирует, что он устанавливает.

Да, высокотехнологично копирует папку с либой в проект и проверяет каждую строчку, не то что жс макаки!

goingUp ★★★★★
()
Последнее исправление: goingUp (всего исправлений: 1)
Ответ на: комментарий от goingUp

Речь не про уже установленные, а про список зависимостей в исходном его виде. Туда обычно пишут в лучшем случае номер версии (чаще - минимально допустимый номер версии, иногда - вообще не указывают). package-lock, даже если ты его уже сгенерировал, внёс в репу и вообще следишь чтобы он везде передавался вместе с проектом, мало чем поможет сам по себе, во-первых там есть какая-то команда которая автоматически заменяет всё его содержимое на более новые, причём пишется она как что-то типа «исправить проблемы», и вебисты её пишут наобум вообще не зная что она делает, во-вторых при этой самой первоначально генерации ты в лучшем случае проверишь свои собственные зависимости (ну, то что там не трояны), а вот зависимости зависимостей и дальше - уже вряд ли, а прописаны они всё так же номерами версий в лучшем случае - скачается что повезёт.

Господа, срывающие покровы, вы хоть этот npm в глаза видели?)

Какое-то у тебя странное желание быть адвокатом веб-макакных технологий, с чего это?

firkax ★★★★★
()
Ответ на: комментарий от goingUp

Аналогия неуместна. Речь не про то, что «у меня» чего-то нет. Речь про то, что так называемое сообщество организовано себе смердящую помойку, и берёт из неё код для прода, вместо того чтобы его писать нормальными способами.

Отвлечёмся от конкретно кода, возьмём более общую ситуацию. Плохо ли то, что у сообщества есть помойка? Нет, не плохо, надо же куда-то мусор выкидывать. Плохо то, что вокруг неё собрались «предприниматели», которые в ней роются и потом несут её содержимое на рынок под видом нормальных товаров.

Так что да, формально js не виноват, виноваты js-кодеры которые не глядя инклюдят всякую пакость. Я, например, тоже иногда пишу что-то на js, но никакие «библиотеки» из интернета я для этого не скачивал и писал всё что надо сам, ну разве что иногда смотрел на чей-то код чтобы уточнить как работают браузерные апи (но не чтобы его копипастить!). Соответственно мой js не подвергался опасности быть заражённым от мусора со свалки.

firkax ★★★★★
()
Ответ на: комментарий от firkax

Речь не про уже установленные, а про список зависимостей в исходном его виде.

О чем бы ни была речь, вот пользовался npm/yarn, composer, растовским cargo и даже потыкать хаскелевский cabal как-то угораздило, вот нигде, нигде не было проблемы, что что-то бесконтрольно само по себе обновлялось из мастера. В этом же суть твоей претензии?

там есть какая-то команда которая автоматически заменяет всё его содержимое на более новые,

Да, есть команда «обновить все», но ее наоборот никто не юзает из коллег. Тут как раз более правдива была бы критика, что потанцевально дырявое и бажное старье используют.

причём пишется она как что-то типа «исправить проблемы»

Нет, это уже домыслы

а вот зависимости зависимостей и дальше - уже вряд ли, а прописаны они всё так же номерами версий в лучшем случае - скачается что повезёт.

В смысле лочит ли package-lock версии зависимостей зависимостей? Лочит. Или это опять про «доблесные сишники проверяют каждую строчку, а ленивые и тупые жеесеры ничего не проверяют»?

Какое-то у тебя странное желание быть адвокатом веб-макакных технологий, с чего это?

Это вы тут на лорчике привыкли устраивать какой-то гнусный cicrle-jerking, да еще и некомпетентный, вот что странно)

Я, например, тоже иногда пишу что-то на js, но никакие «библиотеки» из интернета я для этого не скачивал и писал всё что надо сам

Да ты вообще не показатель, у тебя же ОКР, тот самый из-за которого ты писал свой сетевой стек на паскале, теперь ты стремишься сделать свой прелесный js код, как Горлум с кольцом. Пора б уже осознать, и жизнь станет проще. Да мне пофиг на самом деле, но это вот все не показательно вообще.

заражённым от мусора со свалки

🤦

Есть в npm хороший код? Есть. Все, польза от него есть. То, что там есть плохой код следствие того, что там может публиковаться кто угодно. Но чуть менее, чем все от этого не страдают, и чувство «помойки» не возникает.

goingUp ★★★★★
()
Последнее исправление: goingUp (всего исправлений: 1)
Ответ на: комментарий от goingUp

нигде не было проблемы, что что-то бесконтрольно само по себе обновлялось из мастера. В этом же суть твоей претензии?

Ну ты видимо не веб-макака, поэтому и не было. В 99% случаев с js ситуация иная.

Нет, это уже домыслы

Да нет, не домыслы. Я даже не поленился и таки нашёл её - npm audit fix. Да, там есть оговорки, но суть именно такая - за неким «исправлением» скрывается порча версий всего подряд. Учитывая, что этот самый npm audit (без fix) систематически выдаёт всякую бесполезную дурь и рекомендует запустить этот самый fix, вероятность ввода этой команды веб-макакой (без понимания того, что она делает и зачем) стремится к 100%.

В смысле лочит ли package-lock версии зависимостей зависимостей?

Ещё раз, лок у тебя появляется после того как ты что-то установил. А вот сама установка изначально делается безо всяких локов, и даже полный список того что там собирается устанавливаться с тобой не согласовывают. Максимум что ты выбираешь - это версии своих зависимостей (прямых), коих в списке на установку подавляющее меньшинство.

у тебя же ОКР

Какой интересный эвфемизм для «не хочет производить помои».

Есть в npm хороший код? Есть. Все, польза от него есть. То, что там есть плохой код

Чтобы найти в npm хороший код (и удостовериться что он хороший) надо потратить наверно не сильно меньше усилий как на написание этого кода самостоятельно. И точно не меньше (а, наверно, больше) чем нужно усилий чтобы найти нужные js просто в поисковой системе на всяких гитхабах и прочих кодохостингах.

Но чуть менее, чем все от этого не страдают,

Да нет, от этого страдает очень много кто.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)
Ответ на: комментарий от firkax

Я могу понять фатальный недостаток чужих продуктов, сам страдаю велосипедингом, но хейтить инструмент - для меня загадка. Тем более целую отрасль. Что с вами не так?

Один ненавидит питон, другой js, третий 1с. Какая то базовая уязвимость прошивки. Что то из области ненависти к рыжим, очкарикам или евреям чтоли.

Не, я понимаю - критиковать какой то подход аргументированно, объясняя что не так и как исправить, но тут же просто пелена перед глазами и все плохо просто потому что существует.

Понапридумывали себе псевдо-элитарности. Чем маргинальнее, тем элитарнее, угу.

p.s.

А все, дошло. Вспомнил о винде, виндузятниках и всем таком и моем отношении к этому. Все, я с вами.

LightDiver ★★★★★
()
Последнее исправление: LightDiver (всего исправлений: 1)

Что меня каждый раз радует — истерички, клянущие js после каждой подобной новости. А оно задело хоть кого-то?

gaylord
()

Всё больше и больше склоняюсь к необходимости вендоринга зависимостей. Лучше в виде создания своего репозитария.

hateyoufeel ★★★★★
()

...мероприятий по исследованию безопасности.

Ващета для подобных мероприятий должен быть свой инструмент.

sparkie ★★★★★
()
Ответ на: комментарий от hateyoufeel

Да, но тогда возникает потребность защиты уже хоста с этим репозиторием. Хорошо, если есть выделенный дядька (или тетька), который делает всё CI/CD, релиз менеджмент и проч. А если нет?

seiken ★★★★★
() автор топика
Последнее исправление: seiken (всего исправлений: 1)
Ответ на: комментарий от seiken

Да, но тогда возникает потребность защиты уже хоста с этим репозиторием.

А она и так возникает, ведь свой код тебе тоже надо защищать. Тут вообще никаких изменений.

Хорошо, если есть выделенный дядька (или тетька), который делает всё CI/CD, релиз менеджмент и проч. А если нет?

Дядя, если у тебя серьёзная компания не может нанять человека, то пора закрываться. Как минимум, ввиду вящего позора. Серьёзно, если у тебя CI не может никто настроить, то о какой разработке-то вообще речь идёт?

hateyoufeel ★★★★★
()
Последнее исправление: hateyoufeel (всего исправлений: 1)
Ответ на: комментарий от hateyoufeel

А она и так возникает, ведь свой код тебе тоже надо защищать. Тут вообще никаких изменений.

Таки как раз есть изменения. Потому что репозитории с кодом - необходимая вещь, и они уже контролируются специально выделенными админами из ИТ отдела. Никаких «репозиториев пакетов» на их ответственности, конечно, нет. В смысле, например, корпоративного питоновского индекса, не в смысле «вот вам ещё один репозиторий git/svn, и храните что хотите».

Дядя, если у тебя серьёзная компания не может нанять человека, то пора закрываться.

Дядя, бизнес не стоит на месте в мумифицированном виде, были жирные годы, и нанимали достаточно людей, а теперь кризис и на всём экономят. Даже не знаю, зачем такие элементарные вещи надо объяснять.

seiken ★★★★★
() автор топика
Последнее исправление: seiken (всего исправлений: 1)
Ответ на: комментарий от seiken

А она и так возникает, ведь свой код тебе тоже надо защищать. Тут вообще никаких изменений.

Таки как раз есть изменения. Потому что репозитории с кодом - необходимая вещь, и они уже контролируются специально выделенными админами из ИТ отдела. Никаких «репозиториев пакетов» на их ответственности, конечно, нет. В смысле, например, корпоративного питоновского индекса, не в смысле «вот вам ещё один репозиторий git/svn, и храните что хотите».

У тебя бюрократия совсем головной мозг сожрала? Сервис развернуть – огромная проблема? Шаг влево, шаг вправо – расстрел?

Впрочем, никто не мешает тупо склонировать git репозитарии зависимостей и хранить их в корпоративном гитлабе.

Дядя, бизнес не стоит на месте в мумифицированном виде, были жирные годы, и нанимали достаточно людей, а теперь кризис и на всём экономят. Даже не знаю, зачем такие элементарные вещи надо объяснять.

Боже ж ты мой, склонировать пакетики – неподъёмная задача в условиях экономического кризиса.

hateyoufeel ★★★★★
()

Или это он написал троян -_-.

special-k ★★★★
()
Ответ на: комментарий от PPP328

В С/С++ нет какого-то неконтролируемого никем репозитория полного вирусни

Репа linux не в счет?

special-k ★★★★
()
Ответ на: комментарий от PPP328

Зачем что-то переть. Вы думаете, что человека нельзя подкупить, подговорить, или у него изначально не может быть злых (с вашей т.з.) намерений? И сколько таких в опенсорсе как вы думаете?

special-k ★★★★
()
Ответ на: комментарий от PPP328

Разработчик сам идёт на условный github и сам контролирует, что он устанавливает.

Т.е. сам ставит трояны. Ты считаешь, что есть принципиальная разница в команде? npm это будет, pip, git, flatpak или apt.

special-k ★★★★
()
Ответ на: комментарий от hateyoufeel

в корпоративном гитлабе

А в нем трояны найденные аникейщиками изгнаны святой водой? Кто проверит терабайты кода?

И кто удалит троян из кода если он вдруг будет найден?) Кто закомитит, кто соберет и починит зависимости?))

special-k ★★★★
()
Последнее исправление: special-k (всего исправлений: 5)

Так что идите вы в пень со своим опенсорсом. Контейнеры наше все. Славься snap и docker.

special-k ★★★★
()
Ответ на: комментарий от special-k

А в нем трояны найденные аникейщиками изгнаны святой водой? Кто проверит терабайты кода?

Это уже другая проблема, которая тоже присутствует: кода стало просто слишком дохрена. Когда проект вытагивает тыщу зависимостей с какого-нибудь NPM, это нихрена не нормально.

hateyoufeel ★★★★★
()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)