Новости мира информационной безопасности. Расследование и реагирование на инциденты. Кибербезопасность.

Новости информационной безопасности




Новые ИБ-решения недели: 21 августа 2018 года

Краткий обзор новых решений в области информационной безопасности.

Компания RunSafe Security выпустила проприетарную технологию Alkemist для уменьшения уязвимостей и предотвращения выполнения вредоносного ПО. Alkemist использует развертываемую программную технологию самозащиты приложений Runtime application self-protection (RASP) для предотвращения распространения эксплоитов на устройства в сети.

Упростить виртуализацию сетевых функций (VNF) для сервис-провайдеров поможет F5 . С помощью данного решения организации могут легко управлять жизненным циклом сервисов VNF и разблокировать масштабы и автоматизацию для новых виртуализированных сетей. F5 подойдет для мобильных операторов и провайдеров, заинтересованных в построении инфраструктуры на базе ПО в рамках совершенствования своих сетей.

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

Компания SnapLogic добавила в свой продукт SnapLogic Enterprise Integration Cloud новые возможности для DevOps и автоматизации, в том числе интеграцию с GitHub и поддержку Mesosphere для автоматизации элементов непрерывной интеграции и непрерывной доставки.

Компания Trend Micro выпустила новый продукт для защиты корпоративных и домашних телекоммуникационных сетей. Virtual Network Function Suite – это виртуализированный набор сетевых функций, устанавливаемый в сети оператора для фильтрования URL-адресов, управления приложениями, предотвращения проникновения и защиты IoT-устройств. С Virtual Network Function Suite провайдеры теперь могут предлагать своим корпоративным и домашним клиентам защиту их устройств «Интернета вещей».

Ixia CloudLens позволяет визуализировать весь трафик виртуальных рабочих процессов в приватных облачных средах. Ixia CloudLens с новым Cloud Sensor vTap представляет собой решение для визуализации трафика виртуальных сетей в средах, к которым у администратора нет доступа, а также для виртуального захвата, фильтрования и перенаправления копии сетевого трафика непосредственно на другие инструменты или на сетевой пакетный брокер.

Компания Veeam Software выпустила новый Veeam Backup для Microsoft Office 365 v2. В новой версии появилось более 50 новых функций, которые позволят защитить вложения в Office 365, обеспечив быструю и эффективную защиту и восстановление данных, а также выполнение требований законодательства и нормативов.

«МегаФон» обновил свое решение по защите от DDoS-атак для корпоративных клиентов и государственных заказчиков. Платформа защиты от DDoS-атак на технологиях Arbor Networks позволяет противодействовать распределенным атакам на инфраструктуру, начиная подавлять их уже через 5-15 секунд после обнаружения.

Дата: 2018-08-21 06:07:53

Источник: http://www.securitylab.ru/news/495192.php



Подросток из Мельбурна слил с сервера Apple 90 Гбайт данных

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

В ходе атак злоумышленник выкрал около 90 Гбайт данных. Чтобы похвастаться своими «успехами» и подразнить IT-специалистов компании, он поместил похищенные файлы в папку с названием hacky hack hack. Служба безопасности Apple заметила вторжение и обратилась за помощью к ФБР, а правоохранители связались с Австралийской федеральной полицией.

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

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

Не только любители испытывают на прочность IT-инфраструктуру Apple. Недавно стало известно об атаке одной из версий шифровальщика WannaCry на поставщика компании. Нападение привело к выходу из строя нескольких заводов крупнейшего производителя полупроводников TSMC (Taiwan Semiconductor Manufacturing Company).

Более удачливым оказался Иезекииль Перейра (Ezequiel Pereira), подросток из Уругвая. За случайно обнаруженный в сервисе Google баг компания наградила его призом в $10 тысяч. Один из внутренних сайтов — yaqs.googleplex.com — позволял получить неавторизованный доступ к сведениям об инфраструктуре IT-гиганта. Школьник осознал ценность своей находки благодаря надписи Google Confidential в нижнем колонтитуле страницы.

Дата: 2018-08-21 06:00:30

Источник: https://threatpost.ru/teenager-from-melbourne-hacked-apple-server/27807/



Хакеры атакуют банки с помощью файлов Microsoft Publisher

Интересным аспектом кампании является использование ботнета Necurs.

Исследователи безопасности из компании Trustwave обнаружили новую вредоносную кампанию, в ходе которой злоумышленники атакуют банки трояном для удаленного доступа FlawedAmmyy. Отличительной особенностью данной кампании является необычное использование файлов Microsoft Office Publisher для инфицирования систем жертвы.

Эксперты заметили аномальный всплеск количества электронных писем с вложениями в формате .pub и темой «Совет по платежам». Письма были отправлены на принадлежащие различным банкам домены.

В спамовых сообщениях содержатся URL, при переходе по которым загружается троян для удаленного доступа FlawedAmmyy. Еще одним интересным аспектом кампании является использование ботнета Necurs.

«Данная кампания была необычной в плане использования .pub-файлов. Похоже, что рассылка осуществлялась с помощью ботнета Necurs, ответственного за массовое распространение вредоносных программ в прошлом», - следует из отчета.

Когда жертвы открывают файл .pub, им предлагается «Включить макросы», более ранние версии Microsoft Publisher могут отображать инструкции «Включить редактирование» и «Включить контент».

При открытии редактора Visual Basic (редактор VBA) в Microsoft Publisher и нажатии «ThisDocument» в Project Explorer VBScript запускает архив, содержащий троян.

«Сценарий макроса запускается с помощью функции Document_Open (). Когда файл открывается, скрипт будет обращаться к URL-адресу и выполнять загруженный файл», - отметили специалисты.

Дата: 2018-08-21 05:07:47

Источник: http://www.securitylab.ru/news/495191.php



Daily Blog #458: Object IDs

Hello Reader,
        In Hideaki Ihara's blog post on the port139 blog,  he talks about a subsystem that has been around for quite some time the Distributed Link Tracking System which allowed for lnk files and other shell item structures to survive a file being renamed or moved prior to the inclusion of the MFT Reference numbers in Windows 7. This means that there are at least two methods within a LNK file now that will allow it to point to the correct file even if it has been renamed or moved since it was last opened.

Hideaki is pointing our that when a file is opened and a shell item is created for it that an Object ID should be created for it as an attribute. While I agree this is true I would also look for the creation of the LNK file itself and then what jumplist got updated to determine what application opened the file. Especially since not every file opened will get an Object ID as stated in the limitations section of the Microsoft documentation.

In summary a Object ID won't be set even if a file is opened when:

  1. The file is being opened from a removable drive 
  2. The file is being opened from a FAT drive
  3. The file is being opened from a newly formatted NTFS volume and it the system hasn't rebooted
  4. The file is being opened from a newly attached fixed disk with NTFS and the system hasn't been rebooted

I think we should do more testing with this but in all the above scenarios the shell item system would still record these accesses and the USN journal would show the lnk files and jump lists being updated. I like where Hideaki is going I just want to make sure people are aware of whats possible. 

Дата: 2018-08-21 01:47:32

Источник: http://www.hecfblog.com/2018/08/daily-blog-458-object-ids.html



PMapper - A Tool For Quickly Evaluating IAM Permissions In AWS

PMapper_1_example_output.png

A project to speed up the process of reviewing an AWS account's IAM configuration.

Purpose

The goal of the AWS IAM auth system is to apply and enforce access controls on actions and resources in AWS. This tool helps identify if the policies in place will accomplish the intents of the account's owners.

AWS already has tooling in place to check if policies attached to a resource will permit an action. This tool builds on that functionality to identify other potential paths for a user to get access to a resource. This means checking for access to other users, roles, and services as ways to pivot.


How to Use
  1. Download this repository and install its dependencies with pip install -r requirements.txt .
  2. Ensure you have graphviz installed on your host.
  3. Setup an IAM user in your AWS account with a policy that grants the necessary permission to run this tool (see the file mapper-policy.json for an example). The ReadOnlyAccess managed policy works for this purpose. Grab the access keys created for this user.
  4. In the AWS CLI, set up a profile for that IAM user with the command: aws configure --profile <profile_name> where <profile_name> is a unique name.
  5. Run the command python pmapper.py --profile <profile_name> graph to begin pulling data about your account down to your computer.

Graphing
Principal Mapper has a graph subcommand, which does the heavy work of going through each principal in an account and finding any other principals it can access. The results are stored at ~/.principalmap and used by other subcommands.

Querying
Principal Mapper has a query subcommand that runs a user-defined query. The queries can check if one or more principals can do a given action with a given resource. The supported queries are:

"can <Principal> do <Action> [with <Resource>]"
"who can do <Action> [with <Resource>]"
"preset <preset_query_name> <preset_query_args>"
The first form checks if a principal, or any other principal accessible to it, could perform an action with a resource (default wildcard). The second form enumerates all principals that are able to perform an action with a resource.
Note the quotes around the full query, that's so the argument parser knows to take the whole string.
Note that <Principal> can either be the full ARN of a principal or the last part of that ARN (user/... or role/...).

Presets
The existing preset is priv_esc or change_perms, which have the same function. They describe which principals have the ability to change their own permissions. If a principal is able to change their own perms, then it effectively has unlimited perms.

Visualizing
The visualize subcommand produces a DOT and SVG file that represent the nodes and edges that were graphed.
To create the DOT and SVG files, run the command: python pmapper.py visualize
Currently the output is a directed graph, which collates all the edges with the same source and destination nodes. It does not draw edges where the source is an admin. Nodes for admins are colored blue. Nodes for users with the ability to access admins are colored red (potential priv-esc risk).

Sample Output

Pulling a graph

[email protected]:~/Documents/projects/Skywalker$ python pmapper.py graph
Using profile: skywalker
Pulling data for account [REDACTED]
Using principal with ARN arn:aws:iam::[REDACTED]:user/TestingSkywalker
[+] Starting EC2 checks.
[+] Starting IAM checks.
[+] Starting Lambda checks.
[+] Starting CloudFormation checks.
[+] Completed CloudFormation checks.
[+] Completed EC2 checks.
[+] Completed Lambda checks.
[+] Completed IAM checks.
Created an AWS Graph with 16 nodes and 53 edges
[NODES]
AWSNode("arn:aws:iam::[REDACTED]:user/AdminUser", properties={u'is_admin': True, u'type': u'user'})
AWSNode("arn:aws:iam::[REDACTED]:user/EC2Manager", properties={u'is_admin': False, u'type': u'user'})
AWSNode("arn:aws:iam::[REDACTED]:user/LambdaDeveloper", properties={u'is_admin': False, u'type': u'user'})
AWSNode("arn:aws:iam::[REDACTED]:user/LambdaFullAccess", properties={u'is_admin': False, u'type': u'user'})
AWSNode("arn:aws:iam::[REDACTED]:user/PowerUser", properties={u'is_admin': False, u'rootstr': u'arn:aws:iam::[REDACTED]:root', u'type': u'user'})
AWSNode("arn:aws:iam::[REDACTED]:user/S3ManagementUser", properties={u'is_admin': False, u'type': u'user'})
AWSNode("arn:aws:iam::[REDACTED]:user/S3ReadOnly", properties={u'is_admin': False, u'type': u'user'})
AWSNode("arn:aws:iam::[REDACTED]:user/TestingSkywalker", properties={u'is_admin': False, u'type': u'user'})
AWSNode("arn:aws:iam::[REDACTED]:role/AssumableRole", properties={u'is_admin': False, u'type': u'role', u'name': u'AssumableRole'})
AWSNode("arn:aws:iam::[REDACTED]:role/EC2-Fleet-Manager", properties={u'is_admin': False, u'type': u'role', u'name': u'EC2-Fleet-Manager'})
AWSNode("arn:aws:iam::[REDACTED]:role/EC2Role-Admin", properties={u'is_admin': True, u'type': u'role', u'name': u'EC2Role-Admin'})
AWSNode("arn:aws:iam::[REDACTED]:role/EC2WithS3ReadOnly", properties={u'is_admin': False, u'type': u'role', u'name': u'EC2WithS3ReadOnly'})
AWSNode("arn:aws:iam::[REDACTED]:role/EMR-Service-Role", properties={u'is_admin': False, u'type': u'role', u'name': u'EMR-Service-Role'})
AWSNode("arn:aws:iam::[REDACTED]:role/LambdaRole-S3ReadOnly", properties={u'is_admin': False, u'type': u'role', u'name': u'LambdaRole-S3ReadOnly'})
AWSNode("arn:aws:iam::[REDACTED]:role/ReadOnlyWithLambda", properties={u'is_admin': False, u'type': u'role', u'name': u'ReadOnlyWithLambda'})
AWSNode("arn:aws:iam::[REDACTED]:role/UpdateCredentials", properties={u'is_admin': False, u'type': u'role', u'name': u'UpdateCredentials'})
[EDGES]
(0,1,'ADMIN','can use existing administrative privileges to access')
(0,2,'ADMIN','can use existing administrative privileges to access')
(0,3,'ADMIN','can use existing administrative privileges to access')
(0,4,'ADMIN','can use existing administrative privileges to access')
(0,5,'ADMIN','can use existing administrative privileges to access')
(0,6,'ADMIN','can use existing administrative privileges to access')
(0,7,'ADMIN','can use existing administrative privileges to access')
(0,8,'ADMIN','can use existing administrative privileges to access')
(0,9,'ADMIN','can use existing administrative privileges to access')
(0,10,'ADMIN','can use existing administrative privileges to access')
(0,11,'ADMIN','can use existing administrative privileges to access')
(0,12,'ADMIN','can use existing administrative privileges to access')
(0,13,'ADMIN','can use existing administrative privileges to access')
(0,14,'ADMIN','can use existing administrative privileges to access')
(0,15,'ADMIN','can use existing administrative privileges to access')
(10,0,'ADMIN','can use existing administrative privileges to access')
(10,1,'ADMIN','can use existing administrative privileges to access')
(10,2,'ADMIN','can use existing administrative privileges to access')
(10,3,'ADMIN','can use existing administrative privileges to access')
(10,4,'ADMIN','can use existing administrative privileges to access')
(10,5,'ADMIN','can use existing administrative privileges to access')
(10,6,'ADMIN','can use existing administrative privileges to access')
(10,7,'ADMIN','can use existing administrative privileges to access')
(10,8,'ADMIN','can use existing administrative privileges to access')
(10,9,'ADMIN','can use existing administrative privileges to access')
(10,11,'ADMIN','can use existing administrative privileges to access')
(10,12,'ADMIN','can use existing administrative privileges to access')
(10,13,'ADMIN','can use existing administrative privileges to access')
(10,14,'ADMIN','can use existing administrative privileges to access')
(10,15,'ADMIN','can use existing administrative privileges to access')
(1,9,'EC2_USEPROFILE','can create an EC2 instance and use an existing instance profile to access')
(1,10,'EC2_USEPROFILE','can create an EC2 instance and use an existing instance profile to access')
(1,11,'EC2_USEPROFILE','can create an EC2 instance and use an existing instance profile to access')
(4,9,'EC2_USEPROFILE','can create an EC2 instance and use an existing instance profile to access')
(4,10,'EC2_USEPROFILE','can create an EC2 instance and use an existing instance profile to access')
(4,11,'EC2_USEPROFILE','can create an EC2 instance and use an existing instance profile to access')
(3,13,'LAMBDA_CREATEFUNCTION','can create a Lambda function and pass an execution role to access')
(3,14,'LAMBDA_CREATEFUNCTION','can create a Lambda function and pass an execution role to access')
(3,15,'LAMBDA_CREATEFUNCTION','can create a Lambda function and pass an execution role to access')
(9,10,'EC2_USEPROFILE','can create an EC2 instance and use an existing instance profile to access')
(4,13,'LAMBDA_CREATEFUNCTION','can create a Lambda function and pass an execution role to access')
(9,11,'EC2_USEPROFILE','can create an EC2 instance and use an existing instance profile to access')
(4,8,'STS_ASSUMEROLE','can use STS to assume the role')
(4,14,'LAMBDA_CREATEFUNCTION','can create a Lambda function and pass an execution role to access')
(4,15,'LAMBDA_CREATEFUNCTION','can create a Lambda function and pass an execution role to access')
(15,0,'IAM_CREATEKEY','can create access keys with IAM to access')
(15,1,'IAM_CREATEKEY','can create access keys with IAM to access')
(15,2,'IAM_CREATEKEY','can create access keys with IAM to access')
(15,3,'IAM_CREATEKEY','can create access keys with IAM to access')
(15,4,'IAM_CREATEKEY','can create access keys with IAM to access')
(15,5,'IAM_CREATEKEY','can create access keys with IAM to access')
(15,6,'IAM_CREATEKEY','can create access keys with IAM to access')
(15,7,'IAM_CREATEKEY','can create access keys with IAM to access')

Querying with the graph
[email protected]:~/Documents/projects/Skywalker$ ./pmapper.py --profile skywalker query "who can do s3:GetObject with *"
user/AdminUser can do s3:GetObject with *
user/EC2Manager can do s3:GetObject with * through role/EC2Role-Admin
   user/EC2Manager can create an EC2 instance and use an existing instance profile to access role/EC2Role-Admin
role/EC2Role-Admin can do s3:GetObject with *
user/LambdaFullAccess can do s3:GetObject with *
user/PowerUser can do s3:GetObject with *
user/S3ManagementUser can do s3:GetObject with *
user/S3ReadOnly can do s3:GetObject with *
user/TestingSkywalker can do s3:GetObject with *
role/EC2-Fleet-Manager can do s3:GetObject with * through role/EC2Role-Admin
 role/EC2-Fleet-Manager can create an EC2 instance and use an existing instance profile to access role/EC2Role-Admin
role/EC2Role-Admin can do s3:GetObject with *
role/EC2Role-Admin can do s3:GetObject with *
role/EC2WithS3ReadOnly can do s3:GetObject with *
role/EMR-Service-Role can do s3:GetObject with *
role/LambdaRole-S3ReadOnly can do s3:GetObject with *
role/UpdateCredentials can do s3:GetObject with * through user/AdminUser
 role/UpdateCredentials can create access keys with IAM to access user/AdminUser
user/AdminUser can do s3:GetObject with *

Identifying Potential Privilege Escalation
[email protected]:~/Documents/projects/Skywalker$ ./pmapper.py --profile skywalker query "preset priv_esc user/PowerUser"
Discovered a potential path to change privileges:
user/PowerUser can change privileges because:
 user/PowerUser can access role/EC2Role-Admin because: 
  user/PowerUser can create an EC2 instance and use an existing instance profile to access role/EC2Role-Admin
 and role/EC2Role-Admin can change its own privileges.

Planned TODOs

Дата: 2018-08-20 20:42:17

Источник: https://www.kitploit.com/2018/08/pmapper-tool-for-quickly-evaluating-iam.html



[Перевод] Курс MIT «Безопасность компьютерных систем». Лекция 6: «Возможности», часть 3

Массачусетский Технологический институт. Курс лекций #6.858. «Безопасность компьютерных систем». Николай Зельдович, Джеймс Микенс. 2014 год


Computer Systems Security — это курс о разработке и внедрении защищенных компьютерных систем. Лекции охватывают модели угроз, атаки, которые ставят под угрозу безопасность, и методы обеспечения безопасности на основе последних научных работ. Темы включают в себя безопасность операционной системы (ОС), возможности, управление потоками информации, языковую безопасность, сетевые протоколы, аппаратную защиту и безопасность в веб-приложениях.

Лекция 1: «Вступление: модели угроз» Часть 1 / Часть 2 / Часть 3
Лекция 2: «Контроль хакерских атак» Часть 1 / Часть 2 / Часть 3
Лекция 3: «Переполнение буфера: эксплойты и защита» Часть 1 / Часть 2 / Часть 3
Лекция 4: «Разделение привилегий» Часть 1 / Часть 2 / Часть 3
Лекция 5: «Откуда берутся ошибки систем безопасности» Часть 1 / Часть 2
Лекция 6: «Возможности» Часть 1 / Часть 2 / Часть 3

Аудитория: если этот UID обеспечивает доступ к этому файлу только для чтения, и у вас есть ещё и файловый дескриптор, то если вы потеряете UID, вы всё равно сможете получить разрешение на чтение этого файла?

Профессор: да, так как он появится в каталогах. Потому что как только вы добавляете возможность к файлу, на этом всё заканчивается. Он открыт для вас с особыми привилегиями и так далее. Но проблема состоит в том, что у них есть этот гибридный дизайн.

То есть они говорят — вы действительно можете добавить возможности в каталоги и вы можете открыть новый файл, так как работаете параллельно. При этом может быть так, что вы добавляете возможность в каталог, например /etc, но у вас нет обязательного доступа ко всем файлам директории /etc. Но как только вы войдете в режим возможностей, то сможете попробовать открыть эти файлы, зная, что у вас есть доступ к директории /etc. Ведь она уже открыта, так почему бы вам не дать мне файл по имени «password», расположенный в этом каталоге?

8yew2dwzcw7lpgl31ttm1ayzj6g.jpeg

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

Аудитория: есть ли другие такие же места?

Профессор: хороший вопрос. Я думаю, что мне придется получить их предыдущий исходный код, чтобы выяснить, что происходит, но большинство других ситуаций в действительности не требуют проверку UID. Потому что, например, для сетей она не применяется. Вероятно, это обычные операции файловой системы – если у вас есть сегмент общей памяти, вы его просто открываете, и всё.

Аудитория: не могли бы вы еще раз объяснить, какое именно значение имеет ID пользователя, если у вас есть возможность Capability?

Профессор: это важно, когда у вас есть возможность для каталога. Вопрос в том, что вам представляет данная возможность? Рассмотрим одну интерпретацию, например, состояние возможностей чистой системы, не Capsicum. Если в такой системе у вас есть возможность для каталога, то у вас есть безусловный доступ ко всем файлам в этом каталоге.

В Unix это, как правило, не так. Вы можете открыть каталог как /etc, но в нём имеется много системных файлов, в которых может храниться конфиденциальная информация, например, приватный ключ сервера. И то, что вы можете открыть и пролистать этот каталог, не означает, что вы не сможете открыть файлы в этом каталоге. То есть, имея доступ к каталогу, вы имеете доступ и к файлам.

В Capsicum, если вы открываете каталог /etc и затем входите в режим возможностей, происходит следующее. Вы говорите: «Я не знаю, что это за каталог. Я просто добавляю в него файловый дескриптор». Там есть файл под названием «key». Почему же вы не открываете этой файл «key»? Просто потому, что в тот момент, вы, вероятно, не хотите, чтобы этот основанный на возможности процесс открыл данный файл, потому что это вам не нужно. Хотя это позволяет вам обойти разрешения Unix для файла.

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

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

Профессор: да, именно так. На практике в Capsicum, раньше, чем вы войдёте в режим возможностей, вы должны угадать, какие файлы вам могут понадобиться позднее. Возможно, вам понадобятся общие библиотеки, текстовые файлы, шаблоны, сетевые соединения и так далее. Поэтому вы заранее всё это открываете. И не всегда обязательно знать, какой именно файл вам нужен. Так что эти ребята сделали так, что вы можете просто открыть файловый дескриптор каталога, а необходимые вам файлы просмотреть позже. Однако может быть так, что эти файлы не имеют те же разрешения, что имеете вы. Вот именно по этой причине используется комбинация двух факторов безопасности – проверка возможностей и uid пользователя. Так что это часть механизма ядра.

xkzueav2oq8qjqezg3f7hrzvemc.jpeg

Зачем им нужна такая библиотека, как libcapsicum? Я думаю, имеются две основные вещи, которые они поддерживают в этой библиотеке.

Одна из них заключается в том, что они реализуют функцию под названием lch_start, которую вы должны использовать вместо функции cap_enter. Другой функцией, которую предоставляет библиотека libcapsicum, является понятие fd lists, которое служит для передачи файловых дескрипторов по номерам. Назначение этого списка fd lists легко объяснить. Это в основном обобщение того, как Unix управляет и передает файловые дескрипторы между процессами. В традиционных Unix и Linux, которыми вы пользуетесь сегодня, при запуске процесса ему передаются некоторые файловые дескрипторы. Вы просто открываете некоторые файловые дескрипторы с целочисленными значениями из этой таблицы и запускаете нужный вам дочерний процесс. Или вы запускаете определенный двоичный файл, и он наследует все эти открытые слоты в таблице fd. При этом не существует иного хорошего способа назвать эти вещи, кроме как использовать номера в качестве имён.

Рассмотрим пример, в котором слот 0 будет использоваться для входных данных, слот 1 для выходных данных, слот 2 – для печати сообщений об ошибках. Так это работает в Unix. И оно работает нормально, если вы просто передаете эти три файла или три потока данных в процесс.

bnkqytvftq_0clyfqaqlqmwlfbs.jpeg

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

У них ещё есть другой, более замысловатый механизм запуска «песочницы». Это lch, хост API для запуска «песочницы», который используется вместо того, чтобы просто войти в режим возможностей Capability. Зачем же им потребовалось нечто большее, чем простой вход в режим возможностей? Что вас обычно беспокоит при создании песочницы?

Аудитория: вероятно, lch стирает все наследуемые вещи для того, чтобы обеспечить «чистый» старт системы.

Профессор: да. Я думаю, что они беспокоятся о том, чтобы попытаться учесть всё, к чему «песочница» имеет доступ. Дело в том, что если вы просто вызовете cap_enter, технически, на уровне механизма ядра, это сработает. Верно? Это просто помешает вам открыть какие-то новые возможности.

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

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

tdyvddlujfmx8gudizztmw9n5gm.jpeg

Например, они рассматривали tcpdump. Во-первых, они изменили tcpdump, просто вызвав cap_enter ещё до того, как собрались разбирать все входящие сетевые соединения. В некотором смысле это работает хорошо, потому что вы не можете получить больше возможностей Capability. Но потом, посмотрев на открытый файловый дескриптор, они поняли, что у вас есть полный доступ к терминалу пользователя, потому что у вас есть для него открытый файловый дескриптор. Так что вы можете перехватить все нажатия клавиш, которые совершает пользователь, и тому подобное. Так что это, вероятно, не слишком хороший план для tcpdump. Потому что вы не хотите, что бы кто-то перехватывал вашу клавиатурную активность.

Поэтому в случае с tcpdump они вручную изменили файловые дескрипторы и добавили в них некоторые биты возможностей, чтобы ограничить виды операций, которые вы можете выполнить. Если помните, в Capsicum возможность тоже имеет эти дополнительные биты, указывающие класс операций, которые можно выполнить для данного файлового дескриптора. Таким образом, они в основном принимают то, что файловый дескриптор равен 0. Он указывает на терминал пользователя tty. Первоначально это был просто прямой указатель на структуру tty в ядре. Для того, чтобы ограничить вид операций, который можно выполнять для этого дескриптора, они ввели некоторую промежуточную бета — структуру возможностей в середине. Таким образом, файловый дескриптор указывает на эту структуру возможностей, а она уже указывает на реальный файл, к которому вы пытаетесь получить доступ. И эта структура возможностей содержит в себе некоторые ограничительные биты или разрешения для объекта файлового дескриптора, которые можно реализовать.

Таким образом, при стандартном вводе данных в tcpdump вы ничего не сможете с ним сделать. Вы просто можете увидеть, что он существует, и всё. Для выходного файлового дескриптора они предусмотрели возможность, когда вы можете что-то в него записать, но не можете изменить запись, то есть вы не сможете отменить внесённые изменения.

cg-4p5ivw8r8yde-rotszxgxn2a.jpeg

Так о чем еще вы могли бы беспокоиться относительно запуска «песочницы»? Я думаю, о состоянии файлового дескриптора. Что-нибудь ещё имеет значение? Я думаю, в Unix это файловые дескрипторы и память.

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

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

Аудитория: что произойдет, если процесс, который вы запускаете, содержит бинарный setuid= 0?

Профессор: я думаю, что эти ребята не используют «бинарники» setuid в режиме возможностей, чтобы избежать некоторых странных взаимодействий, которые могут появиться. Они реализуют такое правило: у вас может быть программа setuid, которая получает свои привилегии от двоичного файла setuid, а затем она может вызвать cap_enter или lch_start. Но как только вы попадаете в режим возможностей, вы не можете восстановить дополнительные преференции.

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

Аудитория: ранее мы говорили о том, почему библиотека на самом деле не поддерживает строгое разделение между этими двумя факторами безопасности. Но нам ведь не обязательно использовать lch_start?

Профессор: это правильно. Предположим, у вас имеется такая вещь, как tcpdump, или gzip – это ещё одна вещь, с которой они работают. Вы предполагаете, что приложение, вероятно, не скомпрометировано, и есть какая-то основная функция приложения, и вы заботитесь о том, как она поведёт себя в «песочнице». В случае tcpdump это разбор пакетов, поступающих из сети, в случае gzip это распаковка файлов. И вы до определенного момента предполагаете, что процесс делает всё правильно, и здесь не возникнет никаких уязвимостей. Поэтому вы доверяете ему запуск lch_start и считаете, что он правильно создаст образ, правильно настроит все возможности, а затем ограничит себя от каких — либо дальнейших системных вызовов за пределами режима возможностей.

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

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

rg0pfjhm0nsvzqfxtmemlhvwoq8.jpeg

Ещё один интересный вопрос — почему изменения для gzip кажутся гораздо сложнее, чем для tcpdump? Я думаю, это связано с тем, как приложение структурировано внутри, не так ли? Поэтому, если у вас есть приложение, которое просто сжало один файл или распаковало один файл, то нормально просто запустить его, не изменяя, в режиме возможностей. Вы просто даёте ему новый стандарт на то, чтобы что-то распаковать, и стандарт обеспечивает распакованные данные на выходе, и это будет работать нормально.

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

Еще одна вещь, которая касается домашнего задания, это то, как вы на самом деле используете Capsicum в OKWS? Что вы об этом думаете? Будет ли это полезно? Были бы ребята из OKWS рады перейти на FreeBSD, потому что это намного проще в использовании? Как бы вы использовали Capsicum во FreeBSD?

Аудитория: можно было бы избавиться от некоторых строгих ограничений.

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

Далее, в OKWS, у вас есть служба запуска OK, которая должна запускать все родительские процессы. Как только они умирают, сигнал возвращается в okld для перезапуска «погибшего» процесса. И эта штука должна была бы запустить root, потому что он должен изолировать процессы в «песочнице». Но есть ряд вещей в OKWS, которые можно бы улучшить с помощью Capsicum.

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

Аудитория: вы можете дать каждому процессу файловый дескриптор, который позволит только добавлять записи в журнал.

Профессор: да, и это довольно круто. Как мы говорили в прошлый раз, oklogd может «намутить» с файлом журнала. И кто знает, что ядро позволит ему сделать, когда у него будет файловый дескриптор самого файла журнала. Однако мы можем более точно определить возможности файлового дескриптора, дав ему файл журнала и указав, что он может только записывать, но ничего не искать. Таким образом, мы получаем функцию append-only, если вы являетесь только «писателем» для этого файла. Это очень удобно. Можно предоставить процессу полномочия записывать в файл, но не читать его, что очень сложно сделать только с помощью разрешений Unix.

Какие ещё проблемы можно было решить с помощью Capsicum?

Аудитория: одна вещь, которая, может быть сложной, это подключение служб к внутреннему серверу базы данных. Оно может быть осуществлено удалённо, но вы не хотите запускать специальную службу, чтобы узнавать, к каким службам будет подключаться каждый сервис.

Профессор: возможно, это так. В случае Capsicum, как мы упоминали, сеть находится в глобальном пространстве имен. Поэтому вам заранее необходимо иметь файловые дескрипторы для всех важных соединений.

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

Профессор: это правильно, и в этом заключается небольшое неудобство. Я абсолютно согласен. И это одна из причин, по которой я думаю, что возможности Capability не полностью охватывают все проблемы безопасности, потому что они довольно неудобны в использовании. Потому что парень, который предоставляет вам все привилегии, должен точно знать, что вам нужно, например, что вам необходимы эти соединения с внутренним сервером.
Так что возможно, это не такая уж и большая проблема в OKWS. Потому что служба загрузки должна прочитать файл конфигурации и в первую очередь передать службе токен. Поэтому, возможно, токен должен будет содержать хост и номер порта, к которому вы подключены. Это не очень хорошо.

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

Профессор: да, ребята из FreeBSD предусмотрели такую возможность. Есть множество ситуаций, когда вы хотите открыть какой-то файл после того, как перешли в режим возможностей. Разработчики FreeBSD добавили службу под названием Casper, которая управляет каждым процессом, основанным на Capability. Этот Каспер работает вне режима возможностей и в основном прослушивает запросы процессов, находящихся в «песочнице».

И если вы хотите открыть какой-то файл, или отправить сетевое соединение, или пакет, или что-то такое, но у вас не было нужной возможности заранее, то Casper сделает это для вас.

pjhdaw8gumxqioaoawbwert89ks.jpeg

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

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

Я думаю, что именно для этого они используют FreeBSD, чтобы иметь возможность делать запросы DNS. Ведь вы хотите иметь возможность делать DNS-запросы, находясь в «песочнице». И это та проблема, которая возникла с tcpdump. Потому что когда tcpdump печатает ваши пакеты, он также хочет напечатать имя хоста для IP-адреса. А для того, чтобы это сделать, он должен поговорить с DNS-сервером.

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

И последнее, о чем я хотел поговорить, это о том, какие гарантии безопасности предоставляет Capsicum? Можно ли ему доверять? Что в нём может пойти не так? Предположительно проблемы с безопасностью могут возникнуть всегда, независимо от того, какой механизм вы используете. Но какие конкретные вещи должны нас беспокоить в Capsicum, когда мы создаём системы?

Предположим вам нужно атаковать tcpdump или GZIP, или то, что они реализуют. На что бы вы обратили внимание с точки зрения ошибок или проблем?

ynu5ovmtuqxeqgmma5p7hnhhwrg.jpeg

Аудитория: ну, это зависит от того, знают ли разработчики, что делают. Например, они могут предоставить неправильную возможность Capability.

Профессор: да, это правильно. На самом деле интересным свойством Capsicum является то, что это не гарантия, которую получает пользователь системы. Это инструмент, который разработчик должен использовать, чтобы создать максимально надёжное и самое лучшее приложение. Но я, как пользователь системы, понятия не имею, является ли это приложение, созданное с помощью Capsicum, хорошим или плохим.

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

Аудитория: возможно также, что при установке разрешений на маски файловых дескрипторов вы установили две маски разрешений.

Профессор: да, верно. Так что дело не только в файловых дескрипторах. Предположим, что мы правильно подобрали маски и получили правильные файловые дескрипторы. Мы не использовали lth_start, и в памяти нет ничего лишнего. Но возможно, что перед тем, как вы вошли в режим возможностей, в системе уже было что-то повреждено.

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

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

Например, в дизайне Chrome объёмные процессы выполняются в режиме возможности. Может быть, вам понадобиться иметь части приложения, которые не поддерживают работу в режиме возможностей, потому что вам нужна хорошая интеграция с Unix, или чем-то, что вы используете вместо Unix.

Итак, о чем нам еще стоит побеспокоиться?

Аудитория: правильно ли они реализовали возможности и охватили ли они все системные вызовы.

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

Ведь большинство системных вызовов Unix не писались с учётом того, что всё должно управляться файловыми дескрипторами. Таким образом, вы действительно должны привести всю систему в порядок. Самым важным является то, что ядро должно быть свободным от ошибок типа переполнения буфера или других повреждений памяти. В противном случае у вас ничего не получится. Вы просто получите сборку произвольного кода, предоставляющего полный контроль над компьютером.

А теперь поговорим об альтернативах. В Linux есть вещь, называемая setcall, которая позволяет указать системные вызовы, которыми вы можете управлять. Если присмотреться, это похоже на Capsicum, но очень отличается от него в том смысле, что Capsicum говорит о конкретных файловых дескрипторах, с которыми вы можете работать. А в Linux механизм setcall говорит о конкретных системных вызовах, которые можно выполнить. Это менее точный механизм, но это то, что доступно на сегодня в Linux.

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


Полная версия курса доступна здесь.

Спасибо, что остаётесь с нами. Вам нравятся наши статьи? Хотите видеть больше интересных материалов? Поддержите нас оформив заказ или порекомендовав знакомым, 30% скидка для пользователей Хабра на уникальный аналог entry-level серверов, который был придуман нами для Вас: Вся правда о VPS (KVM) E5-2650 v4 (6 Cores) 10GB DDR4 240GB SSD 1Gbps от $20 или как правильно делить сервер? (доступны варианты с RAID1 и RAID10, до 24 ядер и до 40GB DDR4).

3 месяца бесплатно при оплате новых Dell R630 на срок от полугода — 2 х Intel Deca-Core Xeon E5-2630 v4 / 128GB DDR4 / 4х1TB HDD или 2х240GB SSD / 1Gbps 10 TB — от $99,33 месяц, только до конца августа, заказать можно тут.

Dell R730xd в 2 раза дешевле? Только у нас 2 х Intel Dodeca-Core Xeon E5-2650v4 128GB DDR4 6x480GB SSD 1Gbps 100 ТВ от $249 в Нидерландах и США! Читайте о том Как построить инфраструктуру корп. класса c применением серверов Dell R730xd Е5-2650 v4 стоимостью 9000 евро за копейки?

Дата: 2018-08-20 19:50:11

Источник: https://habr.com/post/418221/



Предупреждение об атаке на американские банки. Как противостоять угрозе?

Американское агентство не указывает источник сведений, однако предупреждение официально отправлено в крупнейшие американские банки. Атака может быть связана с взломом пока неизвестного эмитента карт, как упоминается в докладе ФБР.

Также в письме ФБР банкам упомянута схема, по которой предположительно будут действовать киберпреступники: планируется взлом счетов и систем платежных операторов для изготовления клонов платежных карт, перевод на них средств и обналичивание в банкоматах по всему миру.

ФБР рекомендует проверить системы верификации денежных переводов и обновить используемое программное обеспечение.

Отдельно отмечается, что утечка данных уже произошла в одном из небольших финансовых учреждений. Например, в минувшие выходные CNN сообщило о нападении хакеров на банк в Индии. Процедура нападения выглядела точно таким же образом, как и планируемая операция в Штатах. Был взломан небольшой региональный банк, но деньги изъяты на международном уровне.

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

В качестве противодействия атакам киберпреступников Бюро расследований предлагает следующие меры:

Несомненно, ситуация актуальна для финансовой системы во всем мире, в том числе и России. И в дальнейшем защита информации от атак киберпреступников будет одним из основных требований в работе банков.

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

StarForce Content позволяет ограничить возможности взлома данных пользователей.

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

Решения SoftControl позволяют финансовым учреждениям выстроить систему информационной безопасности и защиты банковской информации, способную полностью закрыть их неоднородную ИТ-инфраструктуру, включающую рабочие места сотрудников, серверы, сети банкоматов и платёжных терминалов.

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

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

О компании StarForce

Компания «Протекшен Технолоджи» ( www.star-force.ru ) известная на рынке ИБ под торговой маркой StarForce, является экспертом в области защиты цифровой информации от взлома и несанкционированного распространения. Компания с 2000-го года предоставляет комплексный технологический сервис защиты коммерческим, финансовым и государственным организациям. Партнерская и дистрибуторская сеть компании представлена в 89 странах мира, реализовано более 70 000 000 лицензий на более чем три десятка решений различных продуктовых линеек.

Дата: 2018-08-20 17:40:22

Источник: http://www.iso27000.ru/press-relizy/preduprezhdenie-ob-atake-na-amerikanskie-banki.-kak-protivostoyat-ugroze



В CryptoKitties найдена уязвимость для ежечасного получения котиков

В процессе обратной разработки блокчейн-игры CryptoKitties специалисты из ассоциации USENIX обнаружили в ее коде недокументированную возможность. Она позволяет каждый час создавать новых котиков с наиболее удачной комбинацией генов.

Уязвимость и котики

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

Профессор Корнеллского университета Эмин Гюн Сиер (Emin Gün Sirer) отметил, что уязвимость позволяет создавать нового котенка каждый час, а наиболее удачных виртуальных питомцев можно продать за криптовалюту Ethereum.

CryptoKitties — это блокчейн-игра, в которой игроки разводят и торгуют виртуальными котиками. Версия игры на iOS вышла в марте 2018 года в Китае, Гонконге и Тайване. Релиз в других странах состоится после окончания тестирования.

Источник: BitNovosti

Рамис Ганиев

Дата: 2018-08-20 16:34:04

Источник: https://tproger.ru/news/cryptokitties-birthtime-vulnerability/



Серверы и приложения на JavaScript уязвимы к ReDoS-атакам

Web-приложения на JavaScript уязвимы к атакам отказа в обслуживании с использованием регулярных выражений (Regular expression denial of service, ReDoS). Атака известна уже давно, однако до сих пор оставалась недооцененной.

ReDoS предполагает отправку злоумышленником объемных и сложных текстов web-серверу на JavaScript или приложению. Если компонент сервера или библиотека приложения не настроена специально для обработки краевых случаев, вводимые атакующим данные могут заблокировать работу приложения или сервера на секунды или даже на минуты, пока сервер будет анализировать эти данные и искать соответствия.

ReDoS-атаки на серверы на базе JavaScript были описаны исследователями еще в 2012 году. Однако в то время JavaScript, в частности Node.js, не пользовался такой популярностью у web-разработчиков, как сейчас, поэтому над исправлением проблемы никто не задумывался. Согласно прошлогоднему исследованию , 5% от всех уязвимостей в библиотеках и приложениях Node.js – это ReDoS-уязвимости.

Как сообщают специалисты Дармштадтского технического университета, сейчас проблема становится все более серьезной. Кристиан-Александру Стаику (Cristian-Alexandru Staicu) и Михаэль Прадел (Michael Pradel) обнаружили в популярных модулях Node.js 25 ранее неизвестных уязвимостей. По их словам, злоумышленник может создать специальные пакеты и с их помощью атаковать сервер через эти уязвимости.

Данные пакеты на несколько секунд или даже минут заблокируют работу сервера. Дело в том, что сервер будет пытаться сопоставить текст внутри пакетов с регулярными выражениями (regex) и решить, как дальше поступать с полученными данными. Подобные regex-фильтры в полях для ввода данных весьма распространены, поскольку являются основой для XSS-фильтров.

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

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

Источник: https://www.securitylab.ru/news/495174.php

Дата: 2018-08-20 16:30:58

Источник: https://exploit.in/2018/11683/



Новый загрузчик Marap распространяется через .IQY-запросы

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

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

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

В качестве вложения мошенники присылают преимущественно веб-запросы в формате .IQY, в том числе встроенные в PDF-документ или спрятанные в запароленном архиве. Файлы такого типа позволяют подгружать данные, например формулы Excel, из удаленного источника. В свою очередь, формулы могут не только производить расчеты, но и запускать команды оболочки. Подобный метод заражения компьютеров уже попадал в поле зрения специалистов в июне.

Помимо веб-запросов злоумышленники используют и более традиционные вложения. Так, в некоторых случаях в письме содержался документ Word с вредоносным макросом.

Сам Marap представляет собой загрузчик, написанный на языке C. В зловреде реализовано несколько тривиальных функций для затруднения обнаружения и анализа. В частности, программа хеширует обращения к Windows API. Таким способом киберпреступники часто скрывают истинные цели своих разработок.

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

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

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

Источник: https://threatpost.ru/marap-downloader-distributed-through-iqy-queries/27777/

 

Дата: 2018-08-20 16:29:52

Источник: https://exploit.in/2018/11682/