Артем Голубин: Бинарные колеса Python и атаки на цепочку поставок
Python известен быстрыми пакетами, несмотря на то, что сам по себе является медленным языком.
Самые быстрые пакеты Python написаны на компилируемых языках, таких как C, C++ или Rust,
при этом Python выступает лишь в роли связующего звена.Пользователи Python обычно даже не замечают этого, поскольку PyPI (индекс пакетов Python) предоставляет
предварительно скомпилированные бинарные файлы.
Они называются "wheels" (колеса), и когда вы запускаете pip install, он предпочитает их исходным дистрибутивам.
Например, каждый выпуск моих пакетов поставляется до 90 различных "wheels".
Вам нужен отдельный бинарный "wheel" для каждой комбинации версии Python, платформы и архитектуры.
Обычный дистрибутив содержит только исходный код.Без "wheels" Python распространение было бы намного сложнее. Когда "wheels" недоступны,
пользователь должен компилировать код при установке пакета.
Это требует наличия правильного компилятора и системных зависимостей.Поскольку я провел немало времени, анализируя вредоносные пакеты на PyPI, это заставило меня задуматься о "wheels".
pip install, он предпочитает их исходным дистрибутивам. Например, каждый выпуск моих пакетов поставляется до 90 различных "wheels". Вам нужен отдельный бинарный "wheel" для каждой комбинации версии Python, платформы и архитектуры. Обычный дистрибутив содержит только исходный код.Без "wheels" Python распространение было бы намного сложнее. Когда "wheels" недоступны, пользователь должен компилировать код при установке пакета. Это требует наличия правильного компилятора и системных зависимостей.Поскольку я провел немало времени, анализируя вредоносные пакеты на PyPI, это заставило меня задуматься о "wheels".