OberonCore
https://forum.oberoncore.ru/

Защита операционных систем построенных на технологии Oberon
https://forum.oberoncore.ru/viewtopic.php?f=6&t=161
Страница 1 из 1

Автор:  FromOGU [ Понедельник, 17 Апрель, 2006 15:07 ]
Заголовок сообщения:  Защита операционных систем построенных на технологии Oberon

Расскажите пожалуйста. Слышал, что там нет уровней привилегированности кода?

Автор:  Vlad [ Вторник, 18 Апрель, 2006 11:20 ]
Заголовок сообщения:  Re: Защита операционных систем построенных на технологии Obe

FromOGU писал(а):
Расскажите пожалуйста. Слышал, что там нет уровней привилегированности кода?


Уровней нет. Как и многопользовательности. Вся защита возложена на компилятор (который легко обмануть с помощью SYSTEM).

Автор:  Илья Ермаков [ Вторник, 18 Апрель, 2006 12:45 ]
Заголовок сообщения: 

Цитата:
Вся защита возложена на компилятор


Фактически так. Это проблема, проблема, которую потребуется решать при переходе к массовому использованию Оберон-систем. Просто изначально ставилась цель надежности в плане защиты от сбоев в специальных системах, а не защиты от вирусов и т.п. Согласитесь, во встроенную систему никто не станет вставлять дискету с вирусом :-)

О путях решения говорили уже и в соседней ветке. Определенный опыт накоплен в Java-технологиях, Microsoft тоже в NET Web Applications как-то ведь это решает (как - честно, еще не интересовался). А самый прямой путь, имхо - интеграция такой защиты в новые процессоры.

Автор:  Info21 [ Среда, 19 Апрель, 2006 09:45 ]
Заголовок сообщения:  Re: Защита операционных систем построенных на технологии Obe

Vlad писал(а):
Вся защита возложена на компилятор (который легко обмануть с помощью SYSTEM).


Во-первых, есть еще и загрузчик. Научить его проверять наличие импорта SYSTEM -- как двумя пальцами за ухом почесать.

Во-вторых, точно так же легко проверять наличие слова SYSTEM в тексте модуля, подаваемого на вход компилятору.

Автор:  Vlad [ Среда, 19 Апрель, 2006 10:01 ]
Заголовок сообщения:  Re: Защита операционных систем построенных на технологии Obe

info21 писал(а):
Во-первых, есть еще и загрузчик. Научить его проверять наличие импорта SYSTEM -- как двумя пальцами за ухом почесать.


А толку, если SYSTEM может быть использован индиректно через дырявый системный модуль? Не говоря уже о том, что сам загрузчик обмануть ничего не стоит - грузится уже скомпилированный машинный код.

Автор:  Илья Ермаков [ Среда, 19 Апрель, 2006 12:32 ]
Заголовок сообщения: 

Цитата:
импорта SYSTEM


Так вроде SYSTEM как таковой и не импортируется. Это слово используется только как флаг для компилятора. А в конечном модуле остается только машинный код, порожденный для директив SYSTEM'а. И отличить небезопасный код от безопасного - это ого как непросто.

Автор:  Сергей Губанов [ Среда, 19 Апрель, 2006 14:09 ]
Заголовок сообщения: 

Илья Ермаков писал(а):
Это слово используется только как флаг для компилятора.
Вот-вот...

Я пытался с помощью полей Kernel.Module.imports / Kernel.Module.nofimps получить список импорта - чего-то не понял результатов: для некоторых модулей результаты правильные, а для некоторых - нет. Определённо есть корреляция между присутствием в массиве Kernel.Module.imports значений NIL и импортом псевдомодулей. Хотя в обратную сторону, это не верно: если модуль импортировал псевдомодули, то не факт увидеть их или NIL в массиве Kernel.Module.imports. :?

Вобщем, если следующий код не печатает NIL-ы, то это еще не гарантирует того, что модуль на самом деле не импортирует псевдомодули:
Код:
MODULE TestSafeCheck;

   IMPORT Kernel, Log, Meta;

   PROCEDURE Check (IN name: ARRAY OF CHAR);
      VAR m: Kernel.Module; i: INTEGER;
   BEGIN m := Kernel.ThisMod(name);
      IF m = NIL THEN Log.String("Модуль " + name + " не найден"); Log.Ln
      ELSE
         IF m.nofimps <= 0 THEN
            Log.String("Модуль " + name + " ничего не импортирует"); Log.Ln
         ELSE
            Log.String(name + ": ");
            FOR i := 0 TO m.nofimps - 1 DO
               IF m.imports[i] # NIL THEN
                  Log.String(m.imports[i].name$); Log.String("; ");
               ELSE
                  Log.String("NIL"); Log.String("; ");
               END
            END;
            Log.Ln
         END
      END
   END Check;
   
   PROCEDURE Do*;
   BEGIN
      Check("Kernel");
      Check("Meta");
      Check("TestSafeCheck");
   END Do;

END TestSafeCheck.

После выполнения TestSafeCheck.Do у меня печатается вот что:
Цитата:
Kernel: NIL; NIL; NIL; NIL; National;
Meta: Kernel; National;
TestSafeCheck: Kernel; Log; Meta;

Почему-то про модуль Meta "замалчивается" о том, что он тоже импортирует псевдомодуль, а про Kernel говорится как буд-то он импортирует всего 5 модулей (на самом деле 7).

Автор:  CheshireCat [ Понедельник, 28 Август, 2006 07:41 ]
Заголовок сообщения: 

problem s bezopasnostyu imho v Oberone NET.
prosto kak pologeno
1) programmy dolgny idti tolko v ishodnikah.
2) kompilirovat i ustanavlivat kod v sistemu dolgen odin chelovek, TOLKO otvetstvennoe za normalnuyu rabotu sistemy lico, tolko administrator.
Pri sobludenii etih dvuh trebovaniy vse ok.
A bez nih problemy budut v LUBOY operacionke))

...plus Oberona v tom chto prikladnye programmy v nem tesnee integrirovany s sistemoy i znachit sodergat menshe ballastnogo
interfeisnogo koda. menshe po razmeru - legche proveryat.
plus kompilyator pomogaet...

Автор:  Vlad [ Понедельник, 28 Август, 2006 13:29 ]
Заголовок сообщения: 

[quote="CheshireCat"]problem s bezopasnostyu imho v Oberone NET.
prosto kak pologeno
1) programmy dolgny idti tolko v ishodnikah.
2) kompilirovat i ustanavlivat kod v sistemu dolgen odin chelovek, TOLKO otvetstvennoe za normalnuyu rabotu sistemy lico, tolko administrator.
Pri sobludenii etih dvuh trebovaniy vse ok.
[quote]

3) В прикладном коде не будет SYSTEM. Совсем. В системном коде его будет минимальное количество, он будет вылизан и он не будет безконтрольно модифицироваться.

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/