Ezhe.ru архив
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Китай попал в "цифровой тупик"
- To: ezh@ezhe.ru
- Subject: Re: Китай попал в "цифровой тупик"
- From: "Alexander Venedioukhin (via EZHE)" <ezh@ezhe.ru>
- Date: Tue, 25 Jan 2022 14:42:05 +0300
- Reply-to: "Alexander Venedioukhin \(via EZHE\)" <ezh@m.1d.pw>
Здравствуйте!
On Mon, 2022-01-24 at 22:49 +0000, Konstantin Boyandin wrote:
> Показательный пример - саботаж, который можно устроить через софт с
> открытым кодом:
>
> https://www.bleepingcomputer.com/news/security/dev-corrupts-npm-libs-
> colors-and-faker-breaking-thousands-of-apps/
>
> Что уж тогда говорить о проприетарном, что невозможно даже
> теоретически исследовать на предмет закладок.
Да, доказать _отсутствие_ закладок невозможно в общем случае, вне
зависимости от типа лицензии кода или от организационного подхода к
разработке (типа, "проверенная компания с представительством"). С точки
зрения теории - что машинные коды, что запись на C - всё одинаково, а
задача упирается в алгоритмическую неразрешимость. Конечно, нужно
учитывать, что практические программные системы обычно весьма далеки от
теоретических пределов, поэтому что-то найти можно, как и что-то
доказать, с практическими ограничениями, для конкретной простой
программы (однако, это вряд ли кому-то сейчас нужно - почти все заняты
"контейнерами с гитхабами"). Ещё и мешает тот факт, что из
неразрешимости теоретической задачи обнаружения закладок - следует
гарантированная разрешимость практической задачи создания отрицаемой
закладки, то есть, закладки, которую легко преподнести как ошибку в
программе.
Соответственно, проанализировать-то код можно, тем более, если
исходники открыты. Однако для того, чтобы хоть как-то воспользоваться
результатами анализа исходников, потребуется тот или иной доверенный
механизм компиляции - эффективные методы анализа "безопасности" кода
подразумевают, что проверяется ещё и результат работы компилятора,
представленный в машинных кодах для данной платформы. И тут, опять же,
закладку в машинном коде можно так "заобфусцировать", что анализатор
впадёт в ступор: например, известно, что на x86 можно всякий алгоритм
реализовать в варианте, содержащем только инструкции MOV (загрузка
данных в регистры и память) и, возможно, пару JMP/JLE (передача
управления по адресу), чтобы зайти и выйти.
Понятно, что в реальности этим всем анализом вообще мало кто
заморачивается - разговоров в прессе куча, но не о том. А между тем,
тут вот как раз кроется одна из серьёзных проблем проприетарного кода,
когда пакет поставляется уже в "машинном виде": разработчик наверняка
использовал кучу чужих библиотек, но вряд ли проводил не только аудит
этих библиотек, но и аудит собственного кода, а даже если и проводил
(что случается, например, для систем криптографической защиты
информации), то конечный клиент всё равно никак не может проверить ни
качество аудита, ни результат.
--
С уважением,
Александр Венедюхин
https://dxdt.ru/
Оценить письмо Reputatio: http://ezhe.ru/reputatio/3df44f7253
Home |
Main Index |
Thread Index