The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Атака на зависимости позволила выполнить код на серверах PayPal, Micrоsoft, Apple, Netflix, Uber и ещё 30 компаний, opennews (?), 10-Фев-21, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


32. "Атака на зависимости позволила выполнить код на серверах Pay..."  +3 +/
Сообщение от Аноним (5), 10-Фев-21, 12:09 
Да, это проблема и не только cargo, но и всего раста, потому что все используют cargo. В общем, недостатки - это продолжение достоинств. Хотелось бы, чтобы появилась полноценная возможность опираться в пакетах (крейтах) только на то, что идет с самим дистрибутивом линукса, не компрометируя себя связями с единственным иностранным внешним репозиторием. Обычно всем пофиг на это, но есть области программирования, где совсем не пофиг. Короче, исходная тема новости лишний говорит, что бесплатного сыра [в мышеловке] не бывает.
Ответить | Правка | Наверх | Cообщить модератору

37. "Атака на зависимости позволила выполнить код на серверах Pay..."  +1 +/
Сообщение от Siborgium (ok), 10-Фев-21, 12:28 
cargo умеет работать с git-репозиториями и локальными пакетами.
Ответить | Правка | Наверх | Cообщить модератору

39. "Атака на зависимости позволила выполнить код на серверах Pay..."  –2 +/
Сообщение от Dzen Python (ok), 10-Фев-21, 12:53 
И?
На локальные пакеты он сможет сослаться в уже скомпилированном состоянии?
А на локальные системные либы при сборке?
Или для этого все равно нужно тянуть обертки с крейтс?
Просто интересно
Ответить | Правка | Наверх | Cообщить модератору

68. "Атака на зависимости позволила выполнить код на серверах Pay..."  +1 +/
Сообщение от Аноним (68), 10-Фев-21, 13:38 
В уже скомпилированном состоянии он будет содержать крейты в себе.

Раст все растовые (в т.ч. удаленные крейты) зависимости вкомпиливает статически. В нем нет динамической линковки, поскольку нет стабильно ABI https://github.com/rust-lang/rfcs/issues/600 . Динамическая линковка доступна только при FFI (с либами, написанными на других языках)

Лично мне это нравится благодаря достигаемой скорости исполнения при использовании LTO. Понимаю тех, у кого места на диске мало. Или кому нужно множество связанных раст-процессов запускать.

Ответить | Правка | Наверх | Cообщить модератору

79. "Атака на зависимости позволила выполнить код на серверах Pay..."  –2 +/
Сообщение от Аноним (8), 10-Фев-21, 13:58 
> В нем нет динамической линковки, поскольку нет стабильно ABI

Карл, а что делали растаманы 15 лет?!

Ответить | Правка | Наверх | Cообщить модератору

90. "Атака на зависимости позволила выполнить код на серверах Pay..."  –2 +/
Сообщение от Ordu (ok), 10-Фев-21, 14:30 
Ничего не делали, я уже говорил в соседнем топике. Раскручивали язык, чтобы взять приз "most loved language" на stackoverflow.
Ответить | Правка | Наверх | Cообщить модератору

186. "Атака на зависимости позволила выполнить код на серверах Pay..."  –3 +/
Сообщение от Аноним (-), 12-Фев-21, 03:43 
> доступна только при FFI (с либами, написанными на других языках)

Да у них и сам яп бесполезен без сишно-сиплюсплюсного LLVM'а. Это не мешаер растаманам быковать на си и плюсы, в таких мелочах "системные" вебмакаки не парятся :)

Ответить | Правка | К родителю #68 | Наверх | Cообщить модератору

78. "Атака на зависимости позволила выполнить код на серверах Pay..."  +2 +/
Сообщение от cheater (?), 10-Фев-21, 13:57 
> На локальные пакеты он сможет сослаться в уже скомпилированном состоянии?

Вопрос некорректен, тк скомпилированный бинарник на расте - это обычный ELF или PE32 или какой там бинарный формат на целевой платформе. Он может динамически линковаться с системными .so файлами, а также с растовыми .so (динамическими библиотеками с растовым ABI а не C ABI). См. https://users.rust-lang.org/t/what-is-the-difference-between...


> А на локальные системные либы при сборке?

Да, см. https://doc.rust-lang.org/reference/items/external-blocks.ht...

Ответить | Правка | К родителю #39 | Наверх | Cообщить модератору

41. "Атака на зависимости позволила выполнить код на серверах Pay..."  +3 +/
Сообщение от Аноним (5), 10-Фев-21, 12:54 
Мне интереснее, а можно ли при сборке приложения с помощью cargo использовать только то, что идет с дистрибутивом, вообще, не залезая в интернет (например, если это запрещено или даже, если нет интернета)?
Ответить | Правка | К родителю #37 | Наверх | Cообщить модератору

70. "Атака на зависимости позволила выполнить код на серверах Pay..."  +1 +/
Сообщение от Аноним (68), 10-Фев-21, 13:43 
Позволен git, путь, и crates.io. Можно создать свой https://github.com/rust-lang/crates.io если вы совсем большие, и указать в проекте адрес на него.
Ответить | Правка | Наверх | Cообщить модератору

72. "Атака на зависимости позволила выполнить код на серверах Pay..."  –1 +/
Сообщение от Аноним (68), 10-Фев-21, 13:45 
Называется это (crates.io) registry https://doc.rust-lang.org/cargo/reference/registries.html
Ответить | Правка | Наверх | Cообщить модератору

119. "Атака на зависимости позволила выполнить код на серверах Pay..."  +1 +/
Сообщение от Аноним (119), 10-Фев-21, 17:14 
написал вместо того что бы сказать нет.
Ответить | Правка | К родителю #70 | Наверх | Cообщить модератору

128. "Атака на зависимости позволила выполнить код на серверах Pay..."  +1 +/
Сообщение от Аноним (-), 10-Фев-21, 17:56 
Это unsafe и не позволяет делать запланированное устаревание
Ответить | Правка | К родителю #41 | Наверх | Cообщить модератору

134. "Атака на зависимости позволила выполнить код на серверах Pay..."  +1 +/
Сообщение от cheater (?), 10-Фев-21, 18:25 
> Мне интереснее, а можно ли при сборке приложения с помощью cargo использовать
> только то, что идет с дистрибутивом, вообще, не залезая в интернет
> (например, если это запрещено или даже, если нет интернета)?

Вопрос не очень понятен (99.999... процентов пакетов в расте имеют внешние зависимости от других пакетов, эти зависимости же надо откуда-то брать), но возможно вам нужно одно из следующего:

(1) команда "cargo vendor" (только с версии 1.37) выкачивает рекурсивно все зависимости пакета и включает их в пакет, что делает его пригодным для распространения оффлайн

(2) можно поднять локальное зеркало crates.io, уже сказали, или скомандовать cargo брать конкретные отдельные зависимости не из инета а из локальной директории

(3) можно запускать cargo с ключом --offline, запретив ему лезть в сеть

(4) cargo всегда только один раз выкачивает и собирает зависимости, далее инет ему не нужен пока не произведён бамп версии где-нибудь в дереве зависимостей.

Ответить | Правка | К родителю #41 | Наверх | Cообщить модератору

146. "Атака на зависимости позволила выполнить код на серверах Pay..."  –1 +/
Сообщение от Аноним (5), 10-Фев-21, 19:53 
Даже если сделать "cargo vendor", то изначально все равно крейты попадут в локальное хранилище (подкаталог проекта) из ненадежного сайта crates.io, т.е. такие крейты не будут вызывать доверия. Я же предпочел бы, чтобы крейты брались из дистрибутива линукса. Точнее, мне самому это не так важно, а важно то, что такое требование могут выставить потенциальные заказчики - к гадалке не ходи!
Ответить | Правка | Наверх | Cообщить модератору

149. "Атака на зависимости позволила выполнить код на серверах Pay..."  +1 +/
Сообщение от Аноним (149), 10-Фев-21, 20:29 
Да, уважающие себя дистрибутивы, вроде Дебиана и Федоры так и делают, поэтому в них и полно всяких devel-пакетов с крейтами Rust и модулями Go

Вот так, например, в дебиане выглядит утилита на расте, исходники которой одновременно идут в пакет-крейт
https://packages.debian.org/source/buster/rust-exa

Ответить | Правка | К родителю #41 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру