Научная статья на тему 'Как, используя диверсионный анализ ТРИЗ, найти критическую уязвимость, грозящую безопасности SAP Hana'

Как, используя диверсионный анализ ТРИЗ, найти критическую уязвимость, грозящую безопасности SAP Hana Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
1002
433
i Надоели баннеры? Вы всегда можете отключить рекламу.
i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Как, используя диверсионный анализ ТРИЗ, найти критическую уязвимость, грозящую безопасности SAP Hana»

Д. И. Буслов, И. Н. Холкин

КАК, ИСПОЛЬЗУЯ ДИВЕРСИОННЫЙ АНАЛИЗ ТРИЗ, НАЙТИ КРИТИЧЕСКУЮ УЯЗВИМОСТЬ, ГРОЗЯЩУЮ БЕЗОПАСНОСТИ SAP HANA

Дмитрий Игоревич Буслов

Руководитель центра компетенции SAP HANA, БДО Юникон Бизнес Солюшнс.

Закончил Московский авиационный институт (кафедра прикладной информатики).

Один из редакторов SAP Professional Journal Россия.

Игорь Николаевич Холкин

Мастер ТРИЗ, консультант БДО Юникон Бизнес Солюшнс.

Научные интересы в области ТРИЗ — Directed Evolution, SLCA.

Д. И. Буслов, И. Н. Холкин. Как, используя диверсионный анализ ТРИЗ, найти критическую уязвимость, грозящую безопасности SAP HANA

45

ВВЕДЕНИЕ В МЕТОД

Суть и назначение метода

Диверсионный анализ (иначе — Инверсионный Метод) — это один из разделов ТРИЗ1, направленный на выявление и предотвращение вредных явлений в системах различного генезиса — технических, информационных, организационных [6].

Суть метода заключается в том, чтобы снять психологический барьер при выявлении причин вреда путем инвертирования задачи — замены вопроса: «Как найти причину вреда в системе?» на обратный (инвертированный) вопрос: «Как создать вред в системе?» Фактически речь идет о том, чтобы мыслить как «диверсант» и спроектировать «системную диверсию», взломать систему, найдя в ней узкие места — отсюда первое название метода.

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

• для поиска причин вредных явлений;

• для прогнозирования возможных вредных явлений.

Соответственно, используются два специализированных подхода:

1. Инверсионный Анализ, предназначенный для целенаправленного выявления рисков и определения скрытых механизмов отказов, уязвимостей, сбоев, брака, аварийных ситуаций и других негативных явлений [9, 3].

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

в будущем; он особенно эффективен при генерации прогнозных гипотез и сценариев, упрощая при этом оценку присутствующих в них рисков [10, 4].

Описываемый здесь случай решался с помощью Инверсионного Анализа.

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

Во-вторых, традиционные методы анализа и поиска вредных явлений предполагают получить прямой ответ на вопрос: «Как произошло вредное событие?» Учитывая психологическое противодействие таким вопросам, в большинстве случаев нужный ответ не будет получен. Необходимо для начала инвертировать задачу.

1 ТРИЗ — методология сильного инженерного мышления, ориентированная на целенаправленную, системную выработку инновационных идей (решение технических проблем) при совершенствовании систем различной природы. ТРИЗ — аббревиатура от ее исторического названия: Теория Решения Изобретательских Задач. Автор — Г. С. Альтшуллер. [1, 2, 8].

46

SAP HANA

Технологическая платформа для решения современных бизнес-задач

Состав метода

В данной статье мы используем следующие основные стадии Инверсионного Метода:

1. Инвертирование задачи.

2. Формулирование «диверсионных гипотез».

3. Выявление «диверсионных ресурсов».

4. Тестирование «диверсионных гипотез».

В более сложных ситуациях может быть использован гораздо более широкий набор инструментов анализа, подробно изложенный в [9, 3, 10, 4].

Стадия 1. Инвертирование задачи

Принцип инвертирования состоит в том, чтобы вместо того, чтобы размышлять:

«Как такое вредное явление могло бы случиться?», инвертировать задачу в активный практический вопрос: «Как обеспечить данный вредный результат?» Иными словами: «Как совершить диверсию?»

Такая формулировка обеспечивает три существенных преимущества:

1. Намерение действовать и решательная способность человека возрастают. Труднее пытаться разгадать нечто непонятное, и гораздо легче (притом интересней) стремиться к получению ясного результата.

2. В инвертированной формулировке вредное явление превращается в нейтральный физический эффект. Пожар становится возгоранием (химической реакцией), неприятный звук — осцилляцией, налипание вредного осадка — адгезией. Такого рода формулировки уже не воспринимаются как оценочные, они становятся объективными, обозначают физические явления как таковые.

3. Возможность «обращения вреда в пользу». Многие эффекты, вредные в одной области деятельности, успешно используются в другой. Например, типично «нехорошее» явление — взрыв — имеет разнообразные полезные применения в ИТ:

• Внедрение информационных систем «взрывом» (единовременный отказ от всех старых систем).

• Нагрузочное тестирование системы.

• Crash-test.

При этом информационное поле для поиска «вредных советов» становится гораздо более обширным, поскольку «вредное» в одной ИТ-компании явление вполне может быть использовано на пользу в другой ИТ-компании, которая не будет скрывать информацию об этом достижении.

Итак, инвертируем задачу — переводим ее в «диверсионную» формулировку.

Стадия 2. Формулирование гипотез

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

Д. И. Буслов, И. Н. Холкин. Как, используя диверсионный анализ ТРИЗ, найти критическую уязвимость, грозящую безопасности SAP HANA

47

1. Изобрести способ получить нужный вредный результат (эффект).

2. Выявить все известные процессы, способные обеспечить требуемый вредный эффект.

3. Собрать информацию о методах полезного применения указанного вредного эффекта в информационных технологиях.

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

Стадия 3. Выявление ресурсов

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

Например, для возникновения пожара необходим возгораемый материал, кислородная среда и искра. Если хоть один из компонентов отсутствует, пожар не состоится. Это означает, что для самопроизвольного развития аварии все необходимые компоненты вредного механизма уже должны присутствовать в системе или ее ближайшем окружении. Если все они имеются (в этом случае мы называем их ресурсами), компоненты вступят во взаимодействие и произведут соответствующий результат — вредное явление. Авария (отказ, сбой, крах системы) не сможет не произойти, это будет всего лишь вопрос времени.

Стадия 4. Тестирование «диверсионной гипотезы»

После того как диверсионные ресурсы обнаружены, надо проверить механизм их действия в рамках принятой на стадии 2 «диверсионной гипотезы».

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

Результаты тестирования очень важны для успеха Инверсионного Анализа: если тестировщики допустили ошибки или небрежность, весь анализ может быть отвергнут. Поэтому процедуры тестирования должны быть простыми и понятными.

Стадия 5. Устранение вредного явления

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

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

48

SAP HANA

Технологическая платформа для решения современных бизнес-задач

ПРАКТИКА: ВЫЯВЛЕНИЕ ОПАСНОЙ УЯЗВИМОСТИ В SAP HANA

Итак, была поставлена экспериментальная задача: найти возможную уязвимость в SAP HANA. После применения к этой задаче Инверсионного Метода были получены результаты, описанные ниже.

Стадия 1. Инвертирование задачи для HANA

Вместо прямой задачи — найти возможные уязвимые места в SAP HANA — была сформулирована обратная, инвертированная задача: как взломать SAP HANA. Более развернуто — была поставлена задача придумать «диверсию» с целью нанести максимальный вред системе, не прибегая к внешним воздействиям вроде хакерских методов и внедрения вредоносного кода, а используя только имеющиеся в системе стандартные возможности (ресурсы).

Стадия 2. Формулирование «диверсионной гипотезы» для HANA

Была сформулирована гипотеза, как именно можно получить нужный (вредный!) результат, чтобы взломать HANA. При этом использовался способ: «выявить известные процессы, способные обеспечить требуемый вредный эффект».

Для этого нужно, как минимум, получить системный доступ через пароль пользователя SYSTEM, а как максимум — получить полный доступ к правам системного пользователя HANA (обычно это hdbadm). Это пользователь, который имеет доступ в Linux и под которым запускаются все системные процессы в HANA.

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

Стадия 3. Выявление «диверсионных ресурсов» в HANA

Теперь необходимо выявить ресурсы для реализации «диверсии» через получение доступа к правам системного пользователя HANA, после чего можно легко обрушить систему любым удобным способом:

• Удалить/изменить данные

• Заблокировать всем пользователям доступ к системе

• Нагрузить систему бесполезной работой под пользователем с наивысшим приоритетом

• Внести изменения в конфигурацию системы.

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

В HANA такими точками могут быть:

• XS-сервер (виртуальная машина JavaScript SpiderMonkey);

Д. И. Буслов, И. Н. Холкин. Как, используя диверсионный анализ ТРИЗ, найти критическую уязвимость, грозящую безопасности SAP HANA

49

• script-server — отдельный сервис, отвечающий за готовые библиотеки, написанные на C, причем закрытые для редактирования;

• тестовые движки, еще не включенные в релизы, но уже обеспечивающие возможность использования — например, graph_engine и т.д.

Всё это потенциальные точки, в которых возможен дальнейший поиск. Для целей эксперимента мы остановимся на первом: XS — SAP HANA Extended Application Services. Сервер приложения, который непосредственно связан с БД, может использовать shared memory в случае установки в embedded mode. Из XS на текущий момент, посредством веб-приложения, может осуществляться практически вся разработка в HANA.

Локализовав «диверсионный ресурс» в целом, на следующем шаге переходим к его конкретизации и детализации — выявлению уязвимостей XS-сервера.

Искать узкие места XS со стороны клиентской части довольно трудно. Эта тема уже поднималась множество раз, здесь используются стандартные алгоритмы, шифрование и т.д. Это сложный путь. Искать уязвимые точки необходимо именно на стороне серверной части, где стоит исследовать источник виртуальной машины, то есть SpiderMonkey. Зайдя на developer.mozilla.com, рассмотрим исходные коды и возможности виртуальной машины.

Там имеется именно то, что нам нужно — это JS-ctypes, см. рисунок 1.

Js-ctypes обеспечивает возможность расширять код, написанный на C или C++. Значит, можно вызывать стандартные библиотеки.

Таким образом, уязвимое место обнаружено. Теперь необходимо проверить возможность его использования для «диверсии» — то есть протестировать «диверсионную гипотезу».

Стадия 4. Тестирование «диверсионной гипотезы» в HANA

Найти механизм управления системой, используя библиотеки C/C++, не составляет труда. Для этого достаточно подключить libc.so. Непосредственно в нашей «песочнице» эта библиотека называется libc.so.6. Там есть возможность выполнить функцию system ().

*■ <У Щ Модна Сафаааап [US] |hnpay/W»tlopgгл**-**»^J,~-J |ЬМм ^

яр г,™. OG) moillla-

а MDN JOMfS ' V*e PUUTQflU * TOOLS «М05 CWNCCT q

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

bWKJAGESO EIXT *

js-ctypes

Мм vpKrten and йййТ4йП4йЛм <4ll baft and fsrti is ruth* ude wnwi'nnC.d** support tihribu^ScWOt fat Tull suj^ett ВД * ttnjitdntryl'pr m multi рЦ ютчгч of Fk*Sb*.

ШКЦ-фра ft (ftW fGifc TIMf 4, (Tfptf rS JW UWlOW ГО №>■ ИДОКЛЦЛ (V*J f«ir

Рисунок 1

50

SAP HANA

Технологическая платформа для решения современных бизнес-задач

■ 2 var a=ctyp€$;

^ 3) var b-1;

Evaluate expression

a Л- e Eval Result: [object object]

; ■“ ф d9faun_ibi:[object Object]

{- ф proto: [object Object] i- Ф #W(0ll_<bi [object Object]

! - 4* whapl_ebl [object Object] t- л. Functions

Рисунок 2

Теперь остается только проверить, есть ли ctypes в XS. Результат показан на рисунке 2. Как видно на рисунке, объект есть, и он доступен. Это говорит о том, что использование библиотеки возможно.

Теперь добавим простой код:

var libc = ctypes.open (“libc.so.6”);

var system = libc.declare (“system”,

ctypes.default_abi,

ctypes.int,

ctypes.char.ptr

);

rat = system (“echo $USER > /usr/local/testdir/9.txt”); libc.close ();

Вернув rat, можно увидеть, что вернул 0!!! А значит, в файле 9.txt в этот момент находится системный пользователь операционной системы HANA.

Тест пройден, «диверсионная гипотеза» работает! Ведь, используя этого пользователя и собственные команды, возможно практически всё. По сути — можно совершать любые действия с HANA, которые доступны администратору. И если предположить, что в какое-то из приложений была осознанно введена ошибка, допускающая SQL-инъекции, то потом, даже располагая только браузером в продуктивной системе, можно получить полный доступ к любым действиям — в том числе для любой реальной диверсии в системе. Остается только сообщить о данной проблеме разработчикам системы — устранить ее уже не составит труда.

ЗАКЛЮЧЕНИЕ

Материал по выявленной в SAP HANA проблеме был передан в SAP AG для принятия мер. На данном примере можно убедиться, что Инверсионный Метод ТРИЗ хорошо работа-

Д. И. Буслов, И. Н. Холкин. Как, используя диверсионный анализ ТРИЗ, найти критическую уязвимость, грозящую безопасности SAP HANA

51

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

ЛИТЕРАТУРА

1. Альтшуллер Г. С. Творчество как точная наука. 2-е изд. Петрозаводск: Скандинавия, 2004.

2. Альтшуллер Г. С., Злотин Б. Л., Зусман А. В., Филатов В. И. Поиск новых идей.

От озарения к технологии. Кишинев: Картя Молдовеняскэ, 1989.

3. Вишнепольски С. Как выявлять причины вреда и устранять риски. Инверсионный метод риск-анализа. iBooks Edition. Max E-Publishing, 2013. 131 p.

4. Вишнепольски С. Как прогнозировать и предотвращать потенциальные риски. Инверсионный метод. iBooks Edition. Max E-Publishing, 2013. 70 p.

5. Документация по виртуальной машине JavaScript SpiderMonkey [Электронный документ]. https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey

6. Kaplan S., Visnepolschi S., Zlotin B., Zusman A. New tools for failure & risk analysis.

An Introduction to Anticipatory Failure Determination (AFD) and The Theory of Scenario Structuring. Ideation International Inc., 1999.

7. SAP HANA Platform SPS 08 (Version: 1.1-2014-08-21) .

8. Using TRIZ. Cambridge University Press, 2005. 256 p.

9. Visnepolschi S. How to Overcome Persistent Failures. Inversion Method. Kindle Edition. Max E-Publishing, 2013.

10. Visnepolschi S. How to Predict and Prevent Potential Risks. Inversion Method. Kindle Edition. Max E-Publishing, 2013.

i Надоели баннеры? Вы всегда можете отключить рекламу.