Ezhe.ru архив

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Китай попал в "цифровой тупик"



Здравствуйте!

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