Логотип Зефирнет

Разработчик JavaScript уничтожает собственные проекты на «уроке» цепочки поставок

Дата:

Вы, наверное, видели новости, даже если вы не уверены, что произошло.

Если вы не программист JavaScript и не полагались на один или оба из пары модулей, называемых faker.js и colors.js.

Если вы были пользователем любого из этих проектов и если вы склонны (или были!) склонны автоматически принимать любые обновления исходного кода без какой-либо проверки или тестирования кода…

… вы, вероятно, хорошо знаете, что именно произошло и как это повлияло на вас.

Атаки на цепочку поставок

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

Мы писали о дырах в безопасности, внезапно обнаруживающихся в многочисленных сообществах программистов, в том числе PHP программисты, питонисты, Ruby пользователей и NPM вентиляторы.

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

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

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

УЗНАТЬ БОЛЬШЕ ОБ АТАКАХ НА ЦЕПИ ПОСТАВОК

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


Неэтично, возможно, но иногда не криминально

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

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

И мы связались с историей «исследователя», который так хотел напомнить нам, как легко создавать коварные пакеты программного обеспечения, которые он намеренно загрузил. около 4000 из них в устойчивом всплеске «полезности».

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

… тем самым создавая огромное количество ненужной работы для других невинных добровольцев в сообществах Linux и Python соответственно.

Colors и Faker выходят из-под контроля

На этот раз основатель двух популярных модулей кодирования JavaScript, известных как colors.js и faker.js бросил в работу два немного разных гаечных ключа.

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

Например, когда мы сделали наш Log4Shell – Фильм Видео недавно мы добавили цветную черточку к выходным данным нашего смоделированного сервера LDAP, чтобы упростить отслеживание входящих запросов, используя управляющие последовательности ANSI в выходных данных терминала, чтобы добавить зеленые и красные метки для обозначения успехов и неудач:

Экономное использование зеленых и красных маркеров клемм для визуальной привлекательности и ясности.

к сожалению, для colors.js пользователей, основатель проекта, после того как не публиковал никаких обновлений с 2019 года, внезапно добавил новый код, чтобы взять номер выпуска из 1.4.0 к несколько необычному идентификатору версии 1.4.4-liberty-2.

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

/* remove this line after testing */
let am = require('../lib/custom/american');
am();
for (let i = 666; i < Infinity; i++) { if (i % 333) { // console.log('testing'.zalgo.rainbow) } console.log('testing testing testing testing testing testing testing'.zalgo)
}

Цикл в конце этого кода печатает текст testing testing ... testing снова и снова, после применения функции, называемой zalgo к нему.

Зальгоификация

Зальгоификация, если вы никогда о нем не слышали, — это способ сделать обычные римские буквы странными и бессмысленными, загромождая их диакритическими знаками, седильями, умляутами и другими так называемыми диакритические знаки - немного похоже на название вашей группы Motörhead вместо Motorhead, но не ограничиваясь добавлением одного дополнительного символа.

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

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

Но компьютеризированный наборщик просто попытается угодить, объединив все маркировки, которые вы запрашиваете, давая вашей группе Залгометалл стилизованное имя примерно так:

Диакритические знаки добавляются случайным образом и бессмысленно по всему тексту.

Мемориал Аарону Шварцу

обманщик пользователи столкнулись с другим типом обновлений, когда проект был фактически стерт с лица земли и заменен README запрос файла «Что на самом деле произошло с Аарон Шварц? "

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

Проект Faker подходит к концу. Обратите внимание на комментарий «endgame», отсутствие каких-либо файлов исходного кода,
и README, посвященный Аарону Шварцу.

Faker был удобным набором инструментов для разработчиков, который позволял легко генерировать большие объемы реалистичных, но выдуманных данных для обеспечения качества, таких как создание 100,000 XNUMX имен и адресов, которые вы могли добавить в свою базу данных пользователей во время разработки.

Поддельные данные — жизненно важный аспект предотвращения катастрофы с конфиденциальностью, пока вы все еще работаете с непроверенным, неполным кодом, потому что это означает, что вы не раскрываете подлинные конфиденциальные данные бездумным (и, возможно, незаконным) способом.

Автор Faker видимо пытался коммерциализировать проект в течение 2021 года, но безуспешно, поэтому похоже, что теперь он дал коду его coup de grace.

Этот план, по-видимому, ни к чему не привел, поскольку корпоративные пользователи получали небольшое финансирование.

Учитывая, что код выпускался в течение многих лет под лицензией MIT — что в основном означает, что любой может использовать его бесплатно, даже в коммерческих продуктах с закрытым исходным кодом, если они не утверждают, что создали его сами — есть ничего, что могло бы помешать существующим пользователям продолжить работу с предыдущей версией или любой версией до нее.

Они даже могут вносить свои собственные модификации и улучшения по своему желанию…

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

Кто-нибудь выиграет или мы все проиграем?

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

Разве не интересно, что люди без репутации думают, что репутация ничего не стоит?? Всем присутствующим здесь людям, говорящим: «Нам преподали ценный урок о доверии к свободному программному обеспечению»; понимаю это…

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

На чьей ты стороне в таком деле? Дайте нам знать в комментариях ниже…


Источник: https://nakedsecurity.sophos.com/2022/01/11/javascript-developer-destroys-own-projects-in-supply-chain-lesson/

Spot_img

Последняя разведка

Spot_img

Чат с нами

Всем привет! Могу я чем-нибудь помочь?