Documente online.
Zona de administrare documente. Fisierele tale
Am uitat parola x Creaza cont nou
 HomeExploreaza
upload
Upload




Безопасность UNIX

Rusa


UNIX



Режимы вып 535f520f ;олнения процессов

IPC Interposes Communication

"Прибор, защищаемый быстродействующим плавким предохранителем, сумеет защитить этот предохранитель, перегорев первым."

Unix Unix вступил в новую эру, эру распространяемой платформы. Это изменение легко датировать: это случилось, когда поставщики рабочих станций выделили свои компиляторы языка C из своего стандартного комплекта программного обеспечения для того, чтобы понизить цены для не разработчиков. Точная запись границ этого изменения слегка неясна, но в основном это произошло в 1990.

«Unix-haters handbook» Simson Garfinkel

MS DOS

UNIX возможно несанкционированное вмешательство одного пользователя в дела другого. Ведь все задачи вып 535f520f ;олняются одним процессором (даже в многопроцессорных системах невозможно закрепить персональной процессор за каждой задачей) и разделяют одну и ту же физическую память. Если не предпринять определенных мер, любой пользователь сможет произвольным образом вклиниваться в задачи другого со всеми вытекающими отсюда последствиями.

Невозможно написать защищенную операционную систему без соответствующей аппаратной поддержки со стороны процессора. Иначе, очередная вып 535f520f ;олняемая инструкция может нейтрализовать или блокировать программный защитный механизм. Первые версии UNIX

UNIX

UNIX . Процесс (в простейшем определении) это последовательность операций вып 535f520f ;олнения программы. Но кроме машинных инструкций еще существуют данные и стек, причем каждый процесс вып 535f520f ;олняется в собственном адресном пространстве. Поэтому, технически более правильно говорить о процессе, как экземпляре вып 535f520f ;олняемой программы.

UNIX . В адресном пространстве расположены: сегмент исполняемого кода (в терминологии UNIX text BSS IBM 7090, расшифровывающиеся как "block started by symbol" - блок, начинающийся с символа) и сегмента стека (STACK text BSS



text BBS Windows. Убедиться в этом можно, запустив утилиту dumpbin (входит в SDK Windows

dumpbin /SUMMARY C:\WINDOWS\SYSTEM\Netbios.dll

Microsoft (R) COFF Binary File Dumper Version 6.00.8168

Copyright (C) Microsoft Corp 1992-1998. All rights reserved.

Dump of file NETBIOS.DLL

File Type: DLL

Summary

1000 bss

1000 data

1000 edata

1000 idata

rdata

1000 reloc

1000 text

UNIX и . Для обеспечения безопасности каждым из режимов используется свой собственный стек. Возникает вопрос, - каким образом системная функция получает аргументы, если они остаются в стеке задачи?

UNIX . Инструкция, вызывающая прерывание, автоматически переводит процессор в привилегированный режим и передает управление подпрограмме обработки прерывания. Существует специальная таблица прерываний (доступная только ядру операционной системы) в которой индекс каждой ячейки численно равен номеру прерывания и содержит адрес, на который будет передано управление в случае возникновения данного прерывания. Более подробно о прерываниях можно прочитать в любой толковой книге по ассемблеру и технической документации процессора.

LINUX x System V LIUX System V

на предусмотренные ядром подпрограммы, а не произвольный адрес памяти. Однако стек ядра прикладному коду не доступен, и передать аргументы функции обычным путем невозможно. Тем не менее, ядру доступно пространство памяти всех задач и оно в состоянии «вытащить» требуемые параметры самостоятельно. Конкретная реализация зависит от выбранной аппаратной платформы и поэтому не будет рассмотрена. Достаточно понять - прикладные программы не могут пагубно воздействовать на ядро (конечно при отсутствии в нем ошибок реализации).

MS DOS UNIX . Современные процессоры при попытке пользовательского кода обратиться к порту, генерируют исключение, передавая управление операционной системе, предоставляя ей возможность самой расправиться со злоумышленником. В результате, доступ может быть отвергнут, а приложение, нарушившие субординацию - закрыто, или же ядро может эмулировать чтение (запись) в порт, не вып 535f520f ;олняя ее на самом деле.



UNIX . Многие системы оказались взломаны «благодаря» умению UNIX core dump UNIX . А по умолчанию, посредством дампа памяти, один процесс может получать доступ к адресному пространству другого процесса, по крайней мере, на чтение.

У Кена Томпсона есть автомобиль, который он помогал сконструировать. В отличие от большинства автомобилей, у него нет ни спидометра, ни указателя бензина, никаких из тех многочисленных лампочек, которые отравляют жизнь современному водителю. Взамен, если водитель делает ошибку, гигантский вопросительный знак загорается в центре приборной доски. "Опытный водитель", говорит Томпсон, "обычно узнает, что не так".

. Ведь система, в которой не существует никаких механизмов обмена данными между процессами, - никому не нужна. А если UNIX

UNIX (позаимствованного из операционной системы DTSS Dartmouth time sharing System процессы, и это сильно ограничивало возможные области применения (впрочем, существовали и так называемые, , доступные всем остальным процессам).

UNIX System V появился пакет IPC (interposes communication

В худшем положении оказываются разработчики ядра, вынужденные вып 535f520f ;олнять многочисленные и не всегда очевидные проверки. Например, область разделенной памяти, подключенная к адресному пространству одного из процессоров, может оказаться расположенной слишком близко к стеку. Если стек вырастет настолько, что пересечет границу разделяемой памяти, произойдет фатальная ошибка памяти, а на некоторых аппаратных платформах данные, заносимые в стек, игнорируют защиту от записи!

(debug UNIX и переписывании системной функции ptrace, заведующей отладкой.



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

UNIX вообще запрещено отлаживать setuid-программы (бедные, бедные разработчики!), иначе было бы возможно запустить, скажем, ту же программу login root UNIX

Windows

pid stupid

UNIX . Каждая запись ассоциирована с одним процессом и среди прочей информации содержит «магическое» число, называемое идентификатором процесса. Магическое - потому что интерпретировать его не может никто, кроме ядра. Идентификатор в зависимости от реализации может представлять собой индекс записи или одно из ее полей - прикладные приложения не имеют об этом никакого представления. Все что они могут - запомнить возращенное функцией fork

Точно так, процесс можно отлаживать и без его согласия - достаточно вспомнить о срыве стека. Это позволит от имени процесса вып 535f520f ;олнить ptrace, и. правда, если ошибки программы приводят к возможности срыва стека и вып 535f520f ;олнению любого кода, вряд ли это приложение кому-нибудь взбредет в голову отлаживать.

UNIX

"Мусульмане и христиане хоронят своих мертвых в земле в гробах, чтобы их защитить. Это плохо, это просто глупость, потому что, если мы не можем защитить жизнь, так как же мы сможем защитить смерть? Мы не можем защитить ничего, ничего нельзя защитить.

Жизнь уязвима, а вы пытаетесь сделать неуязвимой даже смерть. Хотите сохранить, спасти."



Intel 80x86

DMA




Document Info


Accesari: 1268
Apreciat: hand-up

Comenteaza documentul:

Nu esti inregistrat
Trebuie sa fii utilizator inregistrat pentru a putea comenta


Creaza cont nou

A fost util?

Daca documentul a fost util si crezi ca merita
sa adaugi un link catre el la tine in site


in pagina web a site-ului tau.




eCoduri.com - coduri postale, contabile, CAEN sau bancare

Politica de confidentialitate | Termenii si conditii de utilizare




Copyright © Contact (SCRIGROUP Int. 2025 )