Организация Rust Foundation предупредила разработчиков о выявлении фшинг-атаки против пользователей репозитория crates.io. Атака напоминает наблюдаемые последние месяцев попытки компрометации учётных записей в сервисах NPM, PyPI и Mozill AMO для последующей публикации релизов, содержащих вредоносный код. Сведений об успешном захвате учётных данных в ходе атаки пока нет...Подробнее: https://www.opennet.dev/opennews/art.shtml?num=63875
централизованное хранилище кода - это удобно
Децентрализованные точно такие же
Всё же не совсем. Тут игра идёт на доверие к центральному авторитету, уважаемой компании, всяким там "foundation", за которыми даже без фишингов неизвестно кто стоит. В децентрализованной системе доверие в почти целиком зижится на карме конкретной личности, производящей продукт, а если и система доступа вообще децентрализованна (каждый сам хранит свои ключи публикации и нет паролей к чему-либо), то тут и фишить особо нечего.
Есть такая пословица неизвестного происхождения: if you want to go fast, go alone, if you want to go far, go together. Подумай как-нибудь что она на самом деле обозначает.
Вместе на дистанции, - эффективно.
> Тут игра идёт на доверие к центральному авторитету,
> уважаемой компании, всяким там "foundation",Про какой foundation идет речь? Про Linux Foundation?
Которые владеют центральной репой, готовят эталонные ядра и централизовано распространяют их?> В децентрализованной системе доверие в почти целиком зижится на
> карме конкретной личности,Жын Тян передает привет)))
Жын Тян пытался заразить централизованный репозиторий (дистрибутив(ы)) через централизованный инит)))
Тут игра идёт на то, что вафёлы будут невнимательны к отправителю письма. Ну и судя по скринам - так и есть.А тут плевать на централизацию или децентрализацию, если сам юзер туп как пробка)
Люди с мозгами под такое создают отдельную почту с вайтлистом для входящей корреспонденции. Но откуда им взяться в дуракоцентрированном хайповом языке?)
Ждём, когда создатели почтовых клиентов и веб-интерфейсов почты начнут не "красивенько скрывать" отправителя, а всячески выделять.
Отдельный привет гуглам, где и урл в браузере украсят, так что мама родная не узнает, и в их веб почте отправителя красивенько покажут, что хрен поймёшь кто это...Но, кажется, 50% клюнувших не помогло бы если бы даже всё это не скрывалось бы..
--- Отдельный привет гуглам, где...Да ладно... просто гулерасты возомнили себя агентами спецслужб, работающими под прикрытием и торгующими информацией... Пользуйтесь рекомендациями гугле... и другими такими же. А миллиарды бюджетные или не бюджетные, какая разница через кого это всё отмывается и как, где там и какие договорённости и между кем, да и почему это всё не называется сговором? Коммерческая тайна брендированных монополий? Реклама двигатель прогресса? Нет, слив инфы и тотальный контроль над сетью... Безопасность, конфиденциальность? От кого и для кого? Интерфейс для удобства пользователей? Законы какие-то там типа ещё и международные? Для кого поисковики сделаны и кем, типа там ещё какая-то электроннная почта и всё такое? Гуглерасты и другие не раскрывают ваши данные? А чё там с сертефикатами безопасности всякими разными и т.н. легитимизаторами? Браузинг это не прогулка в парке... Стандарты, протоколы, рекомендации-обязательства использования всего этого... Зачем люди покупают компьютеры, смартфоны и всё такое? Кто там частную собственность пользует, чью, где и как, а на основании каких законов или это всё односторонним лицсоглашением назывется между тремя сторонами, а может пятью и десятью называется? Где там цензура запрещена и зачем? ... А что такое вообще частная жизнь? Как корпорасты прячутся от окружающих, а к окружающим лезут везде? ...?
Да ну? Есть, скажем, контора, в которой работает сколько-то рыл. В конторе сервак, специально выделенный под git репозиторий.
1) у каждого рыла есть учетная запись на сервере конторы, соответственно, хомяк, почта, .ssh и прочее.
2) доступ на сервер только по ssh и только по ssh-ключу, парольный доступ закрыт.
Ну и как можно компрометировать такое хранилище? Только DDOS'ить.
> Фшинг-атака на разработчиков пакетов на языке RustМы этого ожидали!
Да, а сведений об успешной атаке всё нет. Может всё-таки Rust-программисты умнее js-ников?
> Может всё-таки Rust-программисты умнее js-ников?Нет, не может. Просто у одних ЯП компилируется в бинарный код, у других нет. В остальном разницы никакой, оба не умеют обращаться с памятью поэтому одни пользуются js, другие растом.
Отлично сказано! Тут вот любят гнать на сишников, типа они пишут дырени - но умалчивают что сишник знает как оно там все работает, и да, в основном си прогеры умеют работать с памятью, просто тех кто умеет, их не видно не слышно.
А те самые растовики, что жсники - понятия не имеют о низкоуровневых вещах, им это вообще без надобности - компилятор же все сам разрулит, думать то зачем?
Вон еще чатгопота есть, думать вообще не надо.
> Отлично сказано! Тут вот любят гнать на сишников, типа они пишут дырени - но умалчивают что сишник знает как оно там все работает, и да, в основном си прогеры умеют работать с памятью, просто тех кто умеет, их не видно не слышно.Сишники не знают как оно там все работает. Во много потому, что сишный стандарт настолько сложный и противоречивый, что большая часть сишников его никогда не читала.
> А те самые растовики, что жсники - понятия не имеют о низкоуровневых вещах, им это вообще без надобности - компилятор же все сам разрулит, думать то зачем?
Чем отличается
uint8_t *buf = malloc(128);
от
let mut buf = Vec::with_capacity(128);
Разница-то где? Средний сишник понятия не имеет что там внутри у malloc().
> uint8_t *buf = malloc(128);аж передёрнуло
как они там вообще живут непонятно
> сишный стандарт настолько сложный и противоречивый, что большая часть сишников его никогда не читала.Да какой там читать, "открытый" сишный стандарт раздают только за денёжку, большая часть сишников его в глаза никогда не видела. Холопам в лучшем случае дают только черновики полистать.
> Разница-то где? Средний сишник понятия не имеет что там внутри у malloc().Это не то что средний сишник, а даже начинающий знает, знает что там под капотом mmap(), а когда-то был sbrk(). И даже начинающий сишник знает как работает mmap(), и как sbrk() сдвигает указатель на стек. Да и блин, сишник просто откроет исходники glibc (если в линуксе) и посмотрит как оно там сделано.
> Это не то что средний сишник, а даже начинающий знает, знает что там под капотом mmap(), а когда-то был sbrk(). И даже начинающий сишник знает как работает mmap(), и как sbrk() сдвигает указатель на стек. Да и блин, сишник просто откроет исходники glibc (если в линуксе) и посмотрит как оно там сделано.Там под капотом per-thread arena-аллокатор на 12k строк. Но хорошая попытка.
там под капотом jemalloc, у которого per-thread arena-аллокатор, у которого под капотом mmap().
> там под капотом jemalloc, у которого per-thread arena-аллокаторНет, там под капотом нет jemalloc. Там их собственный ptmalloc2. Чем больше ты пишешь, тем больше ты подверждаешь мой тезис что сишники понятия не имею что там на аллокации памяти происходит.
> у которого под капотом mmap()
Это примерно как сказать "у него под капотом syscall". Вся сложность аллокатора начинается после того, как ты сделал mmap. Весь развесистный линуксовый slab-аллокатор в данной ситуации напрочь бесполезен, потому что ходить каждый раз в mmap() за новой памятью (особенно когда мы говорим про мелкие объекты вроде структур деревьев, структур для запросов и т.д.) очень дорого.
> Нет, там под капотом нет jemallocХз почему у тебя там нет jemalloc, у меня вот есть.
> Весь развесистный линуксовый slab-аллокатор в данной ситуации напрочь бесполезен
У меня не линукс, и даже не glibc
>> Нет, там под капотом нет jemalloc
> Хз почему у тебя там нет jemalloc, у меня вот есть.Разговор перестает иметь хоть какой-то смысл. jemalloc ещё сложнее и никто, кроме тех, кто читал сорцы, не знает, что там происходит.
>> Весь развесистный линуксовый slab-аллокатор в данной ситуации напрочь бесполезен
> У меня не линукс, и даже не glibcЭто все ещё подтверждает мой тезис что сишники понятия не имеют что происходит на аллокации. В том числе потому что аллокатор отличается от окружения к окружению.
Ну вот я сишник и понятия не имею как работает аллокатор в винде, потому что не пользуюсь ей. И линуксом не пользуюсь. А вот в ОС, которой пользуюсь, знаю как он работает.
> Ну вот я сишник и понятия не имею как работает аллокатор в
> винде, потому что не пользуюсь ей. И линуксом не пользуюсь.
> А вот в ОС, которой пользуюсь, знаю как он работает.Ты там что-то про mmap() вроде писал?
$ cat test.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>#define NR_POINTERS 4096
#define NR_BYTES 128int main(void)
{
char *pointers[NR_POINTERS];for (size_t n = 0; n < 100; ++n) {
puts("allocation start");
fflush(stdout);for (size_t i = 0; i < NR_POINTERS; ++i) {
pointers[i] = malloc(NR_BYTES);
memset(pointers[i], 'x', NR_BYTES);
}puts("allocation end");
fflush(stdout);for (size_t i = 0; i < NR_POINTERS; ++i)
free(pointers[i]);}
return 0;
}
$ strace -c ./test
% time seconds usecs/call calls errors syscall
------ ----------- ----------- --------- --------- ----------------
72.72 0.002335 4 503 brk
20.06 0.000644 3 200 write
2.93 0.000094 11 8 mmap
0.97 0.000031 10 3 mprotect
0.69 0.000022 22 1 munmap
0.56 0.000018 6 3 fstat
0.31 0.000010 5 2 close
0.31 0.000010 5 2 pread64
0.28 0.000009 4 2 openat
0.19 0.000006 6 1 read
0.19 0.000006 6 1 prlimit64
0.19 0.000006 6 1 getrandom
0.16 0.000005 5 1 arch_prctl
0.16 0.000005 5 1 set_tid_address
0.16 0.000005 5 1 set_robust_list
0.16 0.000005 5 1 rseq
0.00 0.000000 0 1 1 access
0.00 0.000000 0 1 execve
------ ----------- ----------- --------- --------- ----------------
100.00 0.003211 4 733 1 totalОй-ой, аллокатор почему-то делает brk(). Где же mmap()?
> Ой-ой, аллокатор почему-то делает brk(). Где же mmap()?Ты не поверишь, но зависит от размера выделяемого блока
https://stackoverflow.com/questions/55768549/in-malloc-why-u...
> Ты не поверишь, но зависит от размера выделяемого блокаПоверю. Но тут люди утверждали что ваще прекрасно знают что там внизу работает. Выяснилось что нет, не знают.
"Средний сишник понятия не имеет что там внутри у malloc()."
А ему и знать не нужно, поскольку malloc() -- это часть языка. Такая же, как открывающая и закрывающая фигурные скобки. Только за соответствием скобок компилятор следит, а соответствие malloc-free возлагается на программиста, поскольку С -- язык компилируемый и модульный.
Тем не менее, знает, раз умеет пользоваться памятью, выделяемой из кучи.
> "Средний сишник понятия не имеет что там внутри у malloc()."
> А ему и знать не нужно, поскольку malloc() -- это часть языка.
> Такая же, как открывающая и закрывающая фигурные скобки. Только за соответствием
> скобок компилятор следит, а соответствие malloc-free возлагается на программиста, поскольку
> С -- язык компилируемый и модульный.
> Тем не менее, знает, раз умеет пользоваться памятью, выделяемой из кучи.Писали что средний сишник очень классный, все знает, а растовый программист тупой и на компилятор и стандартную библиотеку полагается, не зная что там внутри. А теперь ты пишешь что оба полагаются. И как тогда чувствовать превосходство?
> malloc() -- это часть языкаКак же ты меня позабавил сейчас, спасибо
Наконец взялись за этих павлинов. Теперь посмотрим как с них перья сейчас полетят в разные стороны.
> Наконец взялись за этих павлиновЭто еще цветочки, а ягодки впереди. 😏
> Наконец взялись за этих павлинов. Теперь посмотрим как с них перья сейчас полетят в разные стороны.А о каких "павлинах" речь? В Microsoft и других компаниях, топящих за Раст, вполне закономерно не юзают crates.io (и прочие публичные помойки для других языков) - у них своя локальная инфраструктура развернута.
откуда информация, что MS не использует публичные репозитории пакетов?
Microsoft взялась за раст потому, что ее по факту вышибли из комитета 9899. А вышибли потому, что она пыталась вставлять палки в колеса во время работы со стандартом 2011, пытаясь препятствовать сближению libc с POSIX, а также пропихивая туда свои "безопасные" функции для работы со строками, у которых интерфейс специально был сделан таким, чтобы заменить классические функции на "безопасные" используя sed, было невозможно.
До сих пор их С-компилятор не поддерживает в полной мере даже стандарт 1999 года.
Пока что единственная атака, которая лишь по счастливой случайности не попала в дистрибутивы -- атака на сишный xz. Атаки на JS, Python и Rust заканчивались взломом какой-то библиотеки раскрашивания CLI, которую находили через неделю, чинили, и никаких серьезных последствий в итоге не было.
> Пока что единственная атака, которая лишь по счастливой случайности
> не попала в дистрибутивы -- атака на сишный xz.Она единственная только потому что там спалились атакующие.
А когда в ядро попадает код, который дарит рута, потому что "забыли" проверить на null, это разумеется никакая не атака, а просто баг)))
> Она единственная только потому что там спалились атакующие.Так они всегда палятся. Просто здесь они спалились уже на финишной прямой.
> А когда в ядро попадает код, который дарит рута, потому что "забыли" проверить на null, это разумеется никакая не атака, а просто баг)))
А если пруфы что атака? Алсо для этого туда Rust несут, чтобы не забывали проверять, но опеннетчиким это тоже почему-то не нравится.
Вот. IT-шники с мозгами ловятся на эту муть. А вы WhatsApp отрубаете, т.к. какие-то бабушки поймались.
> Вот. IT-шники с мозгами ловятся на эту муть. А вы WhatsApp отрубаете,
> т.к. какие-то бабушки поймались.Пока ты веришь что это из-за бабушек тебя модно обманывать как угодно и на только мошенникам.
Пока ты веришь, что способен знать Настоящую Истинную Правду, скрываемую властями, тебя можно обманывать как угодно и на только мошенникам.
> Пока ты веришь, что способен знать Настоящую Истинную Правду, скрываемую властями, тебя
> можно обманывать как угодно и на только мошенникам.Так её никто не скрывает, лол.
К чему стадам дары свободы?
Их должно резать или стричь.
Наследство их из рода в роды
Ярмо с гремушками да бич.
> Ярмо с гремушками да бич.Гремушки не можно уже - GPS трекер в ошейнике. Да еще и за свой счет!
IT-шники с мозгами не считают Rust мутью. А вот те, кого природа обделила - да, считают.
Поэтому 95% алгоритмов шифрования, реализованные, на Rust или не работают, или позволяют получения доступа к закрытому ключу, или требуют 16 ГБ ОЗУ для обычного SSL шифрования ключом размером 4096 бит?
Вацап следовало бы запретить изначально просто потому, что у него нет клиента под линукс.
NPM и Crates.io ещё посоревнуются за первенство ;)
> NPM и Crates.io ещё посоревнуются за первенство ;)Отличное соревнование,пока что NPM обгоняет Crates.
Но победитель все еще kernel.org.
Взлом которого не замечали ДЖВА ГОДА ¯\_(ツ)_/¯
Соревнование по количеству проектов, за которые выдавали подставные.
Что-то только не появилось на kernel.org: 1inux, lunix, lenux и т.д.
> NPM и Crates.io ещё посоревнуются за первенство ;)И тут они замечают что pipi обощел их уже на целый круг. Вот это поворот!
NPM он пока ещё не обошёл, но запасаемся попкорном.
Ожидаемо. И неудивительно. Не понимаю, чему здесь радуются Воины Борьбы Супротив Раста. Ведь эта атака показывает только то, что Раст становится таким же популярным, как JS, Python.
не путай популярность с хайпом
Если взглянуть на количество загрузок библиотек с crates.io, увидишь сам, что я ничего не путаю.
Если увидеть количество загрузок с Pytnon или NPM, или Go, то каждый из них в сотни раз обходит загрузи библиотек с Rust.
> Раст становится таким же популярным, как JS, Python.Раст становится просто таким же, как JS и Python.
У Python, хотя бы, комьюнити не токсичное, в отличие от Раста.
> У Python, хотя бы, комьюнити не токсичное, в отличие от Раста.У Python нет единого сообщества. Ни у одного языка нет, кроме языка, где сообщество в один IRC канал умещается.
> У Python, хотя бы, комьюнити не токсичное, в отличие от Раста.Легион утят доказывающих что их картонные макеты самые самые и на этом можно чуть не ядра ос писать а остальное не нужно - готовы с этим утверждением конкретно поспорить.
Надо было что-то ляпнуть, да? Rust никогда таким не станет, просто потому, что это принципиально другой язык программирования.
> Rust никогда таким не станет, просто потому, что это принципиально другой язык программирования.Как Кумир или Роботрон.
Какая связь между crates.io и GitHub? Через прокси воровали учётные данные ведь к Github'у, а не к crates.io
Кексперты тригерятся на млоао Rust, в детали им слишком сложно вникать.
> атакующие могли перехватить передаваемые параметры входа
> и двухфакторной аутентификации.И тут вдруг оказалось что майкрософт много делал мозг окружающим - и это мешает всем кроме, собственно, атакующих. Типикал майкрософт.
сайты надо писать на безопасных языках, чтобы нельзя было перехватить.
А я на go пишу кросплатформенную логику. Он компилируется и в jar и в dll библиотеку и все остальные платформы и архитектуры.Забудьте про этот раст! Пишите на Golang!
> А я на go пишу кросплатформенную логику. Он компилируется и в jar
> и в dll библиотеку и все остальные платформы и архитектуры.
> Забудьте про этот раст! Пишите на Golang!Штука с неотключаемым GC - хрусту не конкурент, даже чисто теоретически. Фуксики ударно переписывающие дрова с go на rust подтвердят. Видите ли драйвер FAT32 с аппетитами как ZFS - не очень ценный актив оказался. И план по захвату мира застрял на паре фоторамок. А потом тиму децимировали - так что хэппи энда в этой истории, увы, не будет.
На Golang можно отключить GC. Всё что нужно сделать это задать GOGC=off.