Как общие библиотеки защищены от эксплуатации?

Я пытаюсь понять, как работают разделяемые / динамические библиотеки. Я думаю, что у меня есть общее представление, но мне трудно понять, как они защищены от подвигов.

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

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

Отсюда и моя путаница. Разве нельзя просто указать адрес, к которому нужно перейти, «угадав», чтобы вызвать закрытые методы в библиотеке и, возможно, получить расширенные привилегии?

Я ценю любую помощь в понимании этого лучше. Спасибо

0

Решение

Короче да. Программа, которая запускает процесс, владеет адресным пространством и может делать все что угодно. Если ваша библиотека имеет опасные взаимодействия с другим процессом с большим количеством привилегий, которые могут привести к эскалации, другому процессу нужна собственная защита. Ничто не мешает кому-либо вызывать приватные методы или статические функции в вашей библиотеке, и любой метод, который может это сделать, можно обойти.

1

Другие решения

Нельзя просто указать адрес, к которому нужно перейти, «угадав» в
Для того, чтобы вызвать частные методы

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

и возможно получить повышенные привилегии?

Нет. Библиотека, используемая процессом, не имеет больше привилегий, чем сам процесс.

1

Конечно, это возможно, но существуют механизмы, подобные ASLR, которые препятствуют любому методу «угадывания». Кроме того, существует пейджинг, который запрещает пользовательскому коду манипулировать и выполнять данные и код ядра, если вы говорите об повышении привилегий в рамках операционных систем.

-1

Люди, воспитанные в мирах евнухов и ветров, упустили возможность лучше спроектировать системы. Существуют системы, которые явно управляют разделяемыми библиотеками, чтобы сократить их использование. Такие общие библиотеки будут УСТАНОВЛЕНЫ системой. Фактически, та же самая установка будет использоваться для программ с повышенными привилегиями. Например, простая программа, такая как монитор процесса, для которой требуется доступ к данным ядра, может быть установлена ​​с привилегиями, которые пользователь не будет иметь самостоятельно.

-1
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector