Page 3 of 5

Re: Удаление 58 сис. функции из ядра.

Posted: Fri Oct 08, 2010 6:47 pm
by Serge
У меня Убунта, обновляя Груб, регулярно переписывает MBR после чего отваливается WinXP. Причём Груб стоит на другом физическом диске и не понятно почему он лезет в чужой MBR. Это в системе, которую разрабатывает и тестирует куча народу при поддержке небедных корпораций. Пока нет "защиты от дурака" лучше не торопиться.

Re: Удаление 58 сис. функции из ядра.

Posted: Fri Oct 08, 2010 7:28 pm
by Mario
diamond wrote:Значит, будем и дальше жить без возможности форматирования дисков, с кучей огромных дыр в безопасности и гордым сознанием, что зато не даём пользователю выстрелить себе в ногу одной конкретной пулей. Идиотизм, ну ладно, не буду вам мешать.
Куча огромных дыр безопасности не касается уничтожения данных пользователя. Они не настолько фатальны, как эта.

Здесь не конкретно против твоего мнения кто-то выступает. Я не отрицаю, что нужна эта функция, но без защиты нельзя пользователю давать отстрелить ногу. Самая ценная вещь это данные и их надо максимально обезопасить. А у себя на компьютере каждый лично волен выбирать - создать "мега брешь" поскольку он разработчик и разбирается или перестраховаться и не делать этого, или удалить сразу после использования - потому что такая возможность требуется не настолько уж часто.

Ты же, как и любой другой разработчик, запросто собираешь систему сам, так чего такой протест вдруг?
Я понимаю для того чтобы осознать, что может натворить такая "брешь" надо как минимум потерять данные. Однако лучше если такого не произойдет совсем - это большая неприятность потеря данных. Я их пока возился с кодом ФС Колибри в ядре терял 2-3 раза. Да, я выкручивался потом и восстанавливал почти все данные, но я то знал что надо делать - я же ставил эксперименты. А пользователь это обычный человек - он не разбирается в тонкостях.

Re: Удаление 58 сис. функции из ядра.

Posted: Sat Oct 09, 2010 10:22 am
by Nasarus
Кстати, на реальной машине программа (тот же Format-ировщик, например) может заменить обычное ядро, тем, которое имеет прямой доступ к диску, прописать себя первой в autorun.dat перезагрузить его [ядро] с помощью api ядра и делать то, что захочет.

Re: Удаление 58 сис. функции из ядра.

Posted: Sat Oct 09, 2010 11:55 am
by Nasarus
Товарищи, это пиздец! Какая к чёрту безопасность... Опишу по порядку.
Есть такая сисфункция 18.9. Она позволяет перезагружать ядро без перезагрузки самого компьютера. До недавнего времени, я считал это большой фичой и не знал, какую большую опасность она представляет... Я запустил КоОС на реальном компьютере, удалил файл /sys/kernel.mnt, открыл hex-редактор, ввёл "CD19". "CD" - это опкод прерывания (int), 0x19 - номер прерывания. int 19h - это прерывание которое вызывает биос, после проведения POST (самотестирования при включении компа). После этого я сохранил "CD19" в файл "/sys/kernel.mnt". И запустил END из основного меню, выбрав при этом "Перезагрузить ядро". И неудивительно, что после этого экран погас и запустилась Кубунту (компьютер не перезагружался). Что это значит? Это значит, что любая программа может заменить kernel.mnt на бинарный файл, исходный код которого будет выглядеть так:

Code: Select all

use16
org 0x7c00
;тут код, который может делать абсолютно всё (форматировать жесткие диски, устанавливать защищенный режим, и т.д.)
А дальше Любая Программа запускает сисфункцию 18.9 (eax=18, ebx=9, ecx=4) и всё! Вместо горячо любимого BlueScreen'а мы можем увидеть какую-нибудь херню или прощаться с гигабайтами нужной информации на наших жестаках.

Re: Удаление 58 сис. функции из ядра.

Posted: Sat Oct 09, 2010 11:58 am
by SoUrcerer
Для изебжания подобного и придумано разделение прав...

Re: Удаление 58 сис. функции из ядра.

Posted: Sat Oct 09, 2010 3:19 pm
by Nasarus
Может стоит пока запретить перезапуск ядра? Организация прав доступа так быстро не делается.

Re: Удаление 58 сис. функции из ядра.

Posted: Sat Oct 09, 2010 3:26 pm
by Mario
Вообще-то проблема только быстрым перезапуском не ограничивается. Деструктивный код может перезаписать ядро и сохранить образ рамдиска, единственная вещь которая частично компенсирует это - ядро не знает откуда оно запущено. Это знает только пользователь.

Re: Удаление 58 сис. функции из ядра.

Posted: Sat Oct 09, 2010 3:39 pm
by Nasarus
Ну просто это не так опасно, как в случае быстрого перезапуска, хотя тоже рискованно.

Re: Удаление 58 сис. функции из ядра.

Posted: Sat Oct 09, 2010 3:46 pm
by Nasarus
Тогда есть предложение: всё-таки запретить перезапись или удаление kernel.mnt

Re: Удаление 58 сис. функции из ядра.

Posted: Sat Oct 09, 2010 4:03 pm
by Mario
Это тоже половинчатое решение, к тому же костыль страшный. Права надо делать.

Re: Удаление 58 сис. функции из ядра.

Posted: Sat Oct 09, 2010 4:13 pm
by Nasarus
Ога, а пока будем делать права, какой-нибудь далпаёп напишет вирус...

Re: Удаление 58 сис. функции из ядра.

Posted: Sat Oct 09, 2010 4:19 pm
by SoUrcerer
Пока что чтобы поймать в Колибри вирус, его нужно своими руками запихать в дистрибутив. Разумеется, установивший себе вирус - сам себе злобный буратино.

Re: Удаление 58 сис. функции из ядра.

Posted: Sat Oct 09, 2010 4:30 pm
by Nasarus
Ну зачем пихать в дистрибутив? Функция 70.7 (запуск программы) распростаняется на все диски, а не только на/rd/1/.

Re: Удаление 58 сис. функции из ядра.

Posted: Sat Oct 09, 2010 6:39 pm
by Mario
Пока что вирус должен быть запущен самим пользователем изначально - других путей проникновения нет. Впрочем согласно опыту Виндовс именно этот путь является самым эффективным, ибо пользователи делают все бездумно.

Re: Удаление 58 сис. функции из ядра.

Posted: Sat Oct 09, 2010 9:36 pm
by diamond
Mario wrote:Вообще-то проблема только быстрым перезапуском не ограничивается. Деструктивный код может перезаписать ядро и сохранить образ рамдиска, единственная вещь которая частично компенсирует это - ядро не знает откуда оно запущено. Это знает только пользователь.
Гы-гы-гы. Перезагрузку системы пользователь наверняка заметит. А основные проблемы далеко не с этим - сейчас программа может без особых проблем поиметь систему в сколь угодно извращённой форме даже без перезагрузки системы и даже без загрузки драйвера.
Вот, например, в аттаче программа, которая без всяких перезагрузок и без всяких драйверов забивает первый сектор диска /hd0 CC'шками (внимание! проверять только на жёстких дисках, которых не жалко! например, в эмуляторах, предварительно отсоединив рабочий диск и создав временный! и не говорите потом, что я не предупреждал!). Поскольку таймауты выверять лень и слишком сильно издеваться над системой тоже лень, при физическом отсутствии ATA-диска на Primary Master может подвесить систему наглухо на несколько секунд (но это устранимая особенность реализации); при наличии устройства отрабатывает мгновенно и тут же завершается, пользователь не имеет шансов понять, что произошло.

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