Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Стало много попыток найти библиотеки #7

Closed
mikhailnov opened this issue Oct 30, 2019 · 4 comments
Closed

Comments

@mikhailnov
Copy link

mikhailnov commented Oct 30, 2019

С новым патчем, когда его переделали на статическую линковку, в strace -f стало видно очень много попыток найти библиотеки:

user@pay2:/tmp$ cat chromium.log | grep -i /opt/cprocsp
532   open("/opt/cprocsp/lib/amd64/libssp.so", O_RDONLY|O_CLOEXEC <unfinished ...>
532   open("/opt/cprocsp/lib/amd64/libssp.so", O_RDONLY|O_CLOEXEC <unfinished ...>
532   open("/opt/cprocsp/lib/amd64/libssp.so", O_RDONLY|O_CLOEXEC <unfinished ...>
534   open("/opt/cprocsp/lib/amd64/libcapi20.so", O_RDONLY|O_CLOEXEC <unfinished ...>
562   open("/opt/cprocsp/lib/amd64/libcapi20.so", O_RDONLY|O_CLOEXEC <unfinished ...>
533   open("/opt/cprocsp/lib/amd64/libcapi20.so", O_RDONLY|O_CLOEXEC <unfinished ...>
532   open("/opt/cprocsp/lib/amd64/libssp.so", O_RDONLY|O_CLOEXEC <unfinished ...>
532   open("/opt/cprocsp/lib/amd64/libssp.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (Нет такого файла или каталога)
534   open("/opt/cprocsp/lib/amd64/libcapi20.so", O_RDONLY|O_CLOEXEC <unfinished ...>
532   open("/opt/cprocsp/lib/amd64/libssp.so", O_RDONLY|O_CLOEXEC <unfinished ...>
532   open("/opt/cprocsp/lib/amd64/libssp.so", O_RDONLY|O_CLOEXEC <unfinished ...>
533   open("/opt/cprocsp/lib/amd64/libcapi20.so", O_RDONLY|O_CLOEXEC <unfinished ...>
532   open("/opt/cprocsp/lib/amd64/libssp.so", O_RDONLY|O_CLOEXEC <unfinished ...>
533   open("/opt/cprocsp/lib/amd64/libcapi20.so", O_RDONLY|O_CLOEXEC <unfinished ...>
532   open("/opt/cprocsp/lib/amd64/libssp.so", O_RDONLY|O_CLOEXEC <unfinished ...>
532   open("/opt/cprocsp/lib/amd64/libssp.so", O_RDONLY|O_CLOEXEC <unfinished ...>
562   open("/opt/cprocsp/lib/amd64/libcapi20.so", O_RDONLY|O_CLOEXEC <unfinished ...>
562   open("/opt/cprocsp/lib/amd64/libcapi20.so", O_RDONLY|O_CLOEXEC <unfinished ...>
532   open("/opt/cprocsp/lib/amd64/libssp.so", O_RDONLY|O_CLOEXEC <unfinished ...>
532   open("/opt/cprocsp/lib/amd64/libssp.so", O_RDONLY|O_CLOEXEC <unfinished ...>
533   open("/opt/cprocsp/lib/amd64/libcapi20.so", O_RDONLY|O_CLOEXEC <unfinished ...>
533   open("/opt/cprocsp/lib/amd64/libcapi20.so", O_RDONLY|O_CLOEXEC <unfinished ...>
534   open("/opt/cprocsp/lib/amd64/libcapi20.so", O_RDONLY|O_CLOEXEC <unfinished ...>
532   open("/opt/cprocsp/lib/amd64/libssp.so", O_RDONLY|O_CLOEXEC <unfinished ...>
533   open("/opt/cprocsp/lib/amd64/libcapi20.so", O_RDONLY|O_CLOEXEC <unfinished ...>
534   open("/opt/cprocsp/lib/amd64/libcapi20.so", O_RDONLY|O_CLOEXEC <unfinished ...>
532   open("/opt/cprocsp/lib/amd64/libssp.so", O_RDONLY|O_CLOEXEC <unfinished ...>
534   open("/opt/cprocsp/lib/amd64/libcapi20.so", O_RDONLY|O_CLOEXEC <unfinished ...>
562   open("/opt/cprocsp/lib/amd64/libcapi20.so", O_RDONLY|O_CLOEXEC <unfinished ...>
532   open("/opt/cprocsp/lib/amd64/libssp.so", O_RDONLY|O_CLOEXEC <unfinished ...>
532   open("/opt/cprocsp/lib/amd64/libssp.so", O_RDONLY|O_CLOEXEC <unfinished ...>
562   open("/opt/cprocsp/lib/amd64/libcapi20.so", O_RDONLY|O_CLOEXEC <unfinished ...>
532   open("/opt/cprocsp/lib/amd64/libssp.so", O_RDONLY|O_CLOEXEC <unfinished ...>
532   open("/opt/cprocsp/lib/amd64/libssp.so", O_RDONLY|O_CLOEXEC <unfinished ...>
532   open("/opt/cprocsp/lib/amd64/libssp.so", O_RDONLY|O_CLOEXEC <unfinished ...>
532   open("/opt/cprocsp/lib/amd64/libssp.so", O_RDONLY|O_CLOEXEC <unfinished ...>
532   open("/opt/cprocsp/lib/amd64/libssp.so", O_RDONLY|O_CLOEXEC <unfinished ...>
534   open("/opt/cprocsp/lib/amd64/libcapi20.so", O_RDONLY|O_CLOEXEC <unfinished ...>
533   open("/opt/cprocsp/lib/amd64/libcapi20.so", O_RDONLY|O_CLOEXEC <unfinished ...>
532   open("/opt/cprocsp/lib/amd64/libssp.so", O_RDONLY|O_CLOEXEC <unfinished ...>
532   open("/opt/cprocsp/lib/amd64/libssp.so", O_RDONLY|O_CLOEXEC <unfinished ...>
532   open("/opt/cprocsp/lib/amd64/libssp.so", O_RDONLY|O_CLOEXEC <unfinished ...>
532   open("/opt/cprocsp/lib/amd64/libssp.so", O_RDONLY|O_CLOEXEC <unfinished ...>
532   open("/opt/cprocsp/lib/amd64/libssp.so", O_RDONLY|O_CLOEXEC <unfinished ...>
534   open("/opt/cprocsp/lib/amd64/libcapi20.so", O_RDONLY|O_CLOEXEC <unfinished ...>
533   open("/opt/cprocsp/lib/amd64/libcapi20.so", O_RDONLY|O_CLOEXEC <unfinished ...>
533   open("/opt/cprocsp/lib/amd64/libcapi20.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (Нет такого файла или каталога)
532   open("/opt/cprocsp/lib/amd64/libssp.so", O_RDONLY|O_CLOEXEC <unfinished ...>
532   open("/opt/cprocsp/lib/amd64/libssp.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (Нет такого файла или каталога)
532   open("/opt/cprocsp/lib/amd64/libssp.so", O_RDONLY|O_CLOEXEC <unfinished ...>
533   open("/opt/cprocsp/lib/amd64/libcapi20.so", O_RDONLY|O_CLOEXEC <unfinished ...>
533   open("/opt/cprocsp/lib/amd64/libcapi20.so", O_RDONLY|O_CLOEXEC <unfinished ...>
533   open("/opt/cprocsp/lib/amd64/libcapi20.so", O_RDONLY|O_CLOEXEC <unfinished ...>
532   open("/opt/cprocsp/lib/amd64/libssp.so", O_RDONLY|O_CLOEXEC <unfinished ...>
532   open("/opt/cprocsp/lib/amd64/libssp.so", O_RDONLY|O_CLOEXEC <unfinished ...>
533   open("/opt/cprocsp/lib/amd64/libcapi20.so", O_RDONLY|O_CLOEXEC <unfinished ...>
532   open("/opt/cprocsp/lib/amd64/libssp.so", O_RDONLY|O_CLOEXEC <unfinished ...>
533   open("/opt/cprocsp/lib/amd64/libcapi20.so", O_RDONLY|O_CLOEXEC <unfinished ...>
532   open("/opt/cprocsp/lib/amd64/libssp.so", O_RDONLY|O_CLOEXEC <unfinished ...>
532   open("/opt/cprocsp/lib/amd64/libssp.so", O_RDONLY|O_CLOEXEC <unfinished ...>
532   open("/opt/cprocsp/lib/amd64/libssp.so", O_RDONLY|O_CLOEXEC <unfinished ...>
534   open("/opt/cprocsp/lib/amd64/libcapi20.so", O_RDONLY|O_CLOEXEC <unfinished ...>
532   open("/opt/cprocsp/lib/amd64/libssp.so", O_RDONLY|O_CLOEXEC <unfinished ...>
532   open("/opt/cprocsp/lib/amd64/libssp.so", O_RDONLY|O_CLOEXEC <unfinished ...>
532   open("/opt/cprocsp/lib/amd64/libssp.so", O_RDONLY|O_CLOEXEC <unfinished ...>
532   open("/opt/cprocsp/lib/amd64/libssp.so", O_RDONLY|O_CLOEXEC <unfinished ...>
562   open("/opt/cprocsp/lib/amd64/libcapi20.so", O_RDONLY|O_CLOEXEC <unfinished ...>
532   open("/opt/cprocsp/lib/amd64/libssp.so", O_RDONLY|O_CLOEXEC <unfinished ...>
533   open("/opt/cprocsp/lib/amd64/libcapi20.so", O_RDONLY|O_CLOEXEC <unfinished ...>
533   open("/opt/cprocsp/lib/amd64/libcapi20.so", O_RDONLY|O_CLOEXEC <unfinished ...>
532   open("/opt/cprocsp/lib/amd64/libssp.so", O_RDONLY|O_CLOEXEC <unfinished ...>
532   open("/opt/cprocsp/lib/amd64/libssp.so", O_RDONLY|O_CLOEXEC <unfinished ...>
532   open("/opt/cprocsp/lib/amd64/libssp.so", O_RDONLY|O_CLOEXEC <unfinished ...>
533   open("/opt/cprocsp/lib/amd64/libcapi20.so", O_RDONLY|O_CLOEXEC <unfinished ...>
532   open("/opt/cprocsp/lib/amd64/libssp.so", O_RDONLY|O_CLOEXEC <unfinished ...>
533   open("/opt/cprocsp/lib/amd64/libcapi20.so", O_RDONLY|O_CLOEXEC <unfinished ...>
532   open("/opt/cprocsp/lib/amd64/libssp.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (Нет такого файла или каталога)
533   open("/opt/cprocsp/lib/amd64/libcapi20.so", O_RDONLY|O_CLOEXEC <unfinished ...>
532   open("/opt/cprocsp/lib/amd64/libssp.so", O_RDONLY|O_CLOEXEC <unfinished ...>
533   open("/opt/cprocsp/lib/amd64/libcapi20.so", O_RDONLY|O_CLOEXEC <unfinished ...>
532   open("/opt/cprocsp/lib/amd64/libssp.so", O_RDONLY|O_CLOEXEC <unfinished ...>
534   open("/opt/cprocsp/lib/amd64/libcapi20.so", O_RDONLY|O_CLOEXEC <unfinished ...>
532   open("/opt/cprocsp/lib/amd64/libssp.so", O_RDONLY|O_CLOEXEC <unfinished ...>
532   open("/opt/cprocsp/lib/amd64/libssp.so", O_RDONLY|O_CLOEXEC <unfinished ...>
532   open("/opt/cprocsp/lib/amd64/libssp.so", O_RDONLY|O_CLOEXEC <unfinished ...>
534   open("/opt/cprocsp/lib/amd64/libcapi20.so", O_RDONLY|O_CLOEXEC <unfinished ...>
532   open("/opt/cprocsp/lib/amd64/libssp.so", O_RDONLY|O_CLOEXEC <unfinished ...>
532   open("/opt/cprocsp/lib/amd64/libssp.so", O_RDONLY|O_CLOEXEC <unfinished ...>
533   open("/opt/cprocsp/lib/amd64/libcapi20.so", O_RDONLY|O_CLOEXEC <unfinished ...>
532   open("/opt/cprocsp/lib/amd64/libssp.so", O_RDONLY|O_CLOEXEC <unfinished ...>
532   open("/opt/cprocsp/lib/amd64/libssp.so", O_RDONLY|O_CLOEXEC <unfinished ...>
533   open("/opt/cprocsp/lib/amd64/libcapi20.so", O_RDONLY|O_CLOEXEC <unfinished ...>
532   open("/opt/cprocsp/lib/amd64/libssp.so", O_RDONLY|O_CLOEXEC <unfinished ...>
533   open("/opt/cprocsp/lib/amd64/libcapi20.so", O_RDONLY|O_CLOEXEC <unfinished ...>
532   open("/opt/cprocsp/lib/amd64/libssp.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (Нет такого файла или каталога)
532   open("/opt/cprocsp/lib/amd64/libssp.so", O_RDONLY|O_CLOEXEC <unfinished ...>
532   open("/opt/cprocsp/lib/amd64/libssp.so", O_RDONLY|O_CLOEXEC <unfinished ...>
532   open("/opt/cprocsp/lib/amd64/libssp.so", O_RDONLY|O_CLOEXEC <unfinished ...>
532   open("/opt/cprocsp/lib/amd64/libssp.so", O_RDONLY|O_CLOEXEC <unfinished ...>
534   open("/opt/cprocsp/lib/amd64/libcapi20.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (Нет такого файла или каталога)
532   open("/opt/cprocsp/lib/amd64/libssp.so", O_RDONLY|O_CLOEXEC <unfinished ...>
562   open("/opt/cprocsp/lib/amd64/libcapi20.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (Нет такого файла или каталога)
532   open("/opt/cprocsp/lib/amd64/libssp.so", O_RDONLY|O_CLOEXEC <unfinished ...>
532   open("/opt/cprocsp/lib/amd64/libssp.so", O_RDONLY|O_CLOEXEC <unfinished ...>
532   open("/opt/cprocsp/lib/amd64/libssp.so", O_RDONLY|O_CLOEXEC <unfinished ...>
532   open("/opt/cprocsp/lib/amd64/libssp.so", O_RDONLY|O_CLOEXEC <unfinished ...>
user@pay2:/tmp$ 

При этом Криптопро не установлен.

со старым патчем было вот так:

user@rosa-2016 ~ $ strace -f chromium-browser 2>&1 | grep gostssl
[pid   138] open("/usr/lib64/chromium-browser/gostssl.so", O_RDONLY|O_CLOEXEC <unfinished ...>
[pid   138] open("/lib64/tls/x86_64/gostssl.so", O_RDONLY|O_CLOEXEC <unfinished ...>
[pid   138] open("/lib64/tls/gostssl.so", O_RDONLY|O_CLOEXEC <unfinished ...>
[pid   138] open("/lib64/x86_64/gostssl.so", O_RDONLY|O_CLOEXEC <unfinished ...>
[pid   138] open("/lib64/gostssl.so", O_RDONLY|O_CLOEXEC <unfinished ...>
[pid   138] open("/usr/lib64/tls/x86_64/gostssl.so", O_RDONLY|O_CLOEXEC <unfinished ...>
[pid   138] open("/usr/lib64/tls/gostssl.so", O_RDONLY|O_CLOEXEC <unfinished ...>
[pid   138] open("/usr/lib64/x86_64/gostssl.so", O_RDONLY|O_CLOEXEC <unfinished ...>
[pid   138] open("/usr/lib64/gostssl.so", O_RDONLY|O_CLOEXEC <unfinished ...>

А если gostssl.so присутствует в системе, но Криптопро нет, то вот так было:

user@rosa-2016 ~ $ strace -f chromium-browser 2>&1 | grep gostssl
[pid   337] open("/usr/lib64/chromium-browser/gostssl.so", O_RDONLY|O_CLOEXEC <unfinished ...>
user@rosa-2016 ~ $
user@rosa-2016 ~ $ strace -f chromium-browser 2>&1 | grep /opt/cprocsp
user@rosa-2016 ~ $ 

Это все самосборный Хромиум (https://abf.io/import/chromium-browser-stable), а не готовые бинарники отсюда. Я его собирал еще со старым патчем до рефакторинга и исходил из того, что если у пользователя нет криптопро, то ничего страшного, не помешает. С новым патчем в принципе все так же, но смущает множество попыток найти библиотеки. Код не смотрел, не вникал, почему так происходит.

@deemru
Copy link
Owner

deemru commented Oct 30, 2019

Принято, да, как-то подзабыли, что без КриптоПро тоже надо чисто работать. Исправим.

@mikhailnov
Copy link
Author

Отлично, спасибо! А в чем был смысл перехода на новую схему линковки, можно в кратце, если не секрет?

@deemru
Copy link
Owner

deemru commented Oct 30, 2019

Не секрет.

Chromium постоянно движется в сторону закручивания гаек от уязвимостей, вирусам больно, но сторонним библиотекам и приложениям от этого тоже жить с каждой версией всё сложнее.

Вот например классная история с антивирусом: https://www.cryptopro.ru/forum2/default.aspx?g=posts&m=107684#post107684

Итого, начиная с 77 версии на Windows была запрещена любая загрузка библиотек не из системного каталога ОС, что просто нивелировало наш подход с динамической загрузкой.

Было решено перебраться в общий с Chromium-ом бинарник, здесь хоть как-то можно жить.

На остальных системах вектор тот же, например на MacOS уже начали экспериментальное тестирование ограничений системных вызовов предопределённым заранее набором: https://chromium.googlesource.com/chromium/src.git/+/f46f318737e0c51ef280dd89106d37ce253c1ade%5E%21/#F10

@deemru
Copy link
Owner

deemru commented Nov 13, 2019

@deemru deemru closed this as completed Nov 13, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants