LINUX.ORG.RU

Самопроизвольное изменение исполняемого файла

 ,


0

4

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

На моем debian 11 происходит что-то странное: после нескольких месяцев благополучия начал падать chromium; то вкладки падают, то - сам упадет. Файрволл установлен (ufw); chkrootkit & rkhunter ничего не находят; файловая система исправна.

#debsums -s -c указывает на то, что изменен файл /usr/lib/chromium/chromium. Переустанавливаю chromium, debsums говорит, что теперь все нормально. Запускаю chromium - работает стабильно и шустро (насколько это в принципе возможно на старом железе). Хватает на несколько часов или до перезагрузки; затем, все - по новой.

Ставлю запрет на изменение файла # chmod a=rx /usr/lib/chromium/chromium - не спасает. Хотя, команда stat говорит, что ни у кого нет права на изменение файла.

Это взлом?



Последнее исправление: matushkin (всего исправлений: 1)
Ответ на: комментарий от matushkin

То есть debsums пишет что файл изменён, ты сразу же делаешь ему md5sum и результат совпадает с /var/lib/dpkg/info/chromium.md5sums ?

Сделай debsums -x (без -c -s) он тогда будет писать какая именно сумма там должна быть и какая посчитана.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 2)
Ответ на: комментарий от matushkin

Вчера установил обновления (какие-то либы). Потом гонял браузер часов, эдак, пять (в основном, смотрел ролики на Ютубе).

$ chromium --enable-logging=stderr --v=1 > log.txt 2>&1

Получился файл размером 2,2 GB. Поискал в нем строчки со словом «error», получил 15 725 совпадений. Попробую

--enable-logging=stderr > log.txt.
matushkin
() автор топика
Ответ на: комментарий от firkax

Падение! Контрольная сумма изменена.

root@serfer:/home/serfer# debsums -x
debsums: changed file /usr/lib/chromium/chromium (observed:7a4b11ffb039c47eeeac36277861f488 expected:c727fb7ffbe972e333fc5cf6e72799dc) (from chromium package)
^C
root@serfer:/home/serfer# md5sum /usr/lib/chromium/chromium
7a4b11ffb039c47eeeac36277861f488  /usr/lib/chromium/chromium

После перезагрузки (время создания и изменения - прежние (нормальные). И контрольная сумма - прежняя:

root@serfer:/home/serfer# stat /usr/lib/chromium/chromium
  Файл: /usr/lib/chromium/chromium
  Размер: 217059512 	Блоков: 423960     Блок В/В: 4096   обычный файл
Устройство: 802h/2050d	Инода: 1835064     Ссылки: 1
Доступ: (0755/-rwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Доступ:        2024-05-11 11:13:58.911823508 +0500
Модифицирован: 2024-01-17 01:35:05.000000000 +0500
Изменён:       2024-05-07 00:20:12.752951494 +0500
Создан:        2024-05-07 00:19:52.316880603 +0500
root@serfer:/home/serfer# md5sum /usr/lib/chromium/chromium
c727fb7ffbe972e333fc5cf6e72799dc  /usr/lib/chromium/chromium


root@serfer:/home/serfer# cat var/lib/dpkg/info/chromium.md5sums 
c727fb7ffbe972e333fc5cf6e72799dc  usr/lib/chromium/chromium

Все вернулось к хорошему.

Запустил из консоли без логирования (и без падения):

serfer@serfer:~$ chromium
[2446:2446:0511/140847.123693:ERROR:policy_logger.cc(156)] :components/enterprise/browser/controller/chrome_browser_cloud_management_controller.cc(161) Cloud management controller initialization aborted as CBCM is not enabled. Please use the `--enable-chrome-browser-cloud-management` command line flag to enable it if you are not using the official Google Chrome build.
Warning: Vulkan 1.1 or Vulkan 1.0 with KHR_Maintenance2 required.
 - While initializing adapter (backend=BackendType::Vulkan)
    at InitializeImpl (../../third_party/dawn/src/dawn/native/vulkan/PhysicalDeviceVk.cpp:166)
    at Initialize (../../third_party/dawn/src/dawn/native/PhysicalDevice.cpp:48)

Warning: Failed to load libEGL.so
    at DiscoverPhysicalDevices (../../third_party/dawn/src/dawn/native/opengl/BackendGL.cpp:74)

[2495:2551:0511/143721.858477:ERROR:ssl_client_socket_impl.cc(975)] handshake failed; returned -1, SSL error code 1, net_error -100

Оперативки мало. SWAP используется почти всегда.

matushkin
() автор топика
Ответ на: комментарий от matushkin

То есть перезагрузка всё чинит без переустановок?

Попробуй тогда еще, когда это опять случится:

(сделав в начале debsums -x и запомнив контрольную сумму)

echo 1 > /proc/sys/vm/drop_caches

(от рута, выключив хром перед этим)

и пересчитай контрольную сумму (без ребута).

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 4)
Ответ на: комментарий от matushkin

После перезагрузки (время создания и изменения - прежние (нормальные). И контрольная сумма - прежняя

Возможно, что-то с кешем самого накопителя? Хотя, тогда бы и другие глюки были… Странно… 🤔

QsUPt7S ★★
()
Ответ на: комментарий от vbr

Три дня chromium не падает. А до этого, помимо прочего, возникали ошибки сегментирования, при попытке запустить apt или synaptic. Какие у меня были настройки:
В /etc/sysctl.conf была раскомментирована строка kernel.sysrq=438 (чтобы можно было более или менее корректно перезагружаться в случае зависания системы).
В Gnome3 –> настройки –> пользователи я настроил автоматический вход (без введения пароля). Может быть, при этом я разрешил доступ по сети без пароля?
В «Паролях и ключах» обнулил пароль (связку ключей - я не знаю …) для chromium.

После этого (не сразу) и начались проблемы. Вернул эти настройки к … заводским - все проблемы исчезли после первой же перезагрузки.
Насколько я понял, это была попытка взлома; а не проблемы с винчестером.

matushkin
() автор топика

Не знаю, насколько мой случай похож на ваш. Некоторое время назад тоже столкнулся с зависанием хромиума. Скопировал профиль в укромное место и зашел в чистый. Зависания прекратились. Потом перенёс настройки из старого профиля. С тех пор работает без проблем

utanho ★★★★★
()
Ответ на: комментарий от firkax

Винчестер прежний. Единственное, что я сделал: откатил неполезные изменения.
Мне кажется, воспроизвести мою ситуацию не составит труда (если, кто интересуется): сделайте изменения, о которых я говорил выше. Набирайте в поисковике браузера какие-нибудь нелепые вопросы (для форумчан это будет не просто) по Linux на русском языке. Походите по сайтам, где есть ответы на эти вопросы (это не обязательно форумы). Через месяц - два проявятся «симптомы».

matushkin
() автор топика

А рутовый диск держать в режиме только для чтения уже не модно?

Настроить цепочку Integrity.

0. Расшифровка «аппаратным ключом платформы» уникального для каждого компа «корневого ключа платформы».
1. Проверка публичным «корневым ключом платыормы» UEFI перед его загрузкой и испоьнением.
2. Проверка ВАШИМ публичным ключом с UEFI ядра grub core.img которое включает: необходимые модули крыптографии для расшифровки /boot, публичный ключ grub, модули grub для проверки подписей и переменные окружения grub.
3. Верификация публичным ключом grub всех подгружаемых по требованию модулей, настроек grub.
4. Верификация публичным ключом grub ядра OS с публичными ключами IMA/EVM и инитрд.
5. Верификация ядром публичными ключами IMA/EVM процесса #1 init и ВСЕХ остальных исполняемых в системе файлов, библиотек, настроек и неизменяемых данных.

Если присутствие или отсутствие Secure Boot кому мешает это не освобождает от необходимости настройки GRUB и IME/EVM.

diff -aRN /chrome/orig /chrome/vir и отослать зловреда в https://www.virustotal.com

anonymous
()
Ответ на: комментарий от matushkin

Да, действительно, теперь он включен сразу. Правда, в текущих версиях подтест длится всего пять минут вместо сорока пяти минут, как в древних версиях с синим фоном, и это не настраивается. Ну, тут уже ничего не поделаешь. Разве что тестировать дольше.

i-rinat ★★★★★
()
Ответ на: комментарий от matushkin

А до этого, помимо прочего, возникали ошибки сегментирования, при попытке запустить apt или synaptic

Ну тогда о чём вообще можно говорить?

Проверяй целостность всех файлов (а не только браузера), проверяй харды и память, гоняй стресс-тесты.

Насколько я понял, это была попытка взлома

Взлома кого, кем и как? И как ты это «понял»?

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от matushkin

После перезагрузки (время создания и изменения - прежние (нормальные). И контрольная сумма - прежняя

SWAP используется почти всегда

Если это SATA накопитель, попробуй поменять кабель. Или переключить его в другой разъём. Или и то и другое одновременно.

Имеет смысл в цикле читать файл в обход кеша dd iflag=direct и проверять контрольную сумму. Возможно сбоит накопитель или контроллер. Ещё стоит попробовать вставить между итерациями цикла ожидание в несколько секунд, чтобы накопитель успел уйти в сон. Возможно, ошибки возникают во время выхода из сна.

i-rinat ★★★★★
()

Была похожая хрень, hdd.

weak sector, кажется так называется, зануление диска вроде исправило, но взял новый, от греха.

Попробуй badblocks.

sr11
()
Ответ на: комментарий от intelfx

Взлома кого, кем и как? И как ты это «понял»?

«можно лишь восхищаться тем, насколько тонка та сопля, на которой повисла вся эта наша безопасная безопасность» Отдельный аспект ситуации с внедрением бэкдора в xz

Чтобы было всем понятно надо Integrity Самопроизвольное изменение исполняемого файла (комментарий) или хотя бы AIDE поставить. А еще логи учета процессов и аудита нормальные настроить.

Ах о чем это я здесь.

В общем неизменность и замкнутость исполняемых файлов - основное требование безопасности. И это есть минимум. Уровень «C1»

anonymous
()
Ответ на: комментарий от anonymous

Ток тут взломом и не пахнет, а пахнет сдыхающим винтом, который когда чуть нагреется в процессе работы начинает мусор отдавать вместо данных. Потом остынет чуток и всё нормально делается пока он снова не нагреется.

anonymous
()
Ответ на: комментарий от matushkin

не SATA. IDE

У IDE могут быть аналогичные проблемы с кабелем. Замена кабеля всё ещё имеет смысл. Достать их, правда, сейчас посложнее будет.

i-rinat ★★★★★
()
Последнее исправление: i-rinat (всего исправлений: 1)
Ответ на: комментарий от i-rinat

Можно самому без проблем организовать. Разъёмы и шлейфы продаются отдельно. Там без пайки. Шлейф отрезается нужной длины, а разъём накалываются на кабель и защёлкивается фиксатором. Если ехать, а не шашечки, то вполне себе вариант. Только нужно с распиновкой свериться - там какие-то контакты должны быть замкнуты между собой а в каком-то из проводов должен быть разрыв.

u5er ★★
()