Що таке шкідливі файли?
"Шкідливий файл" може означати все, від файлів, інфікованих вірусами або шкідливим програмним забезпеченням, до майстерно замаскованих виконуваних файлів або документів Office з увімкненими макросами.
Це досить широка категорія загроз, але суть така, що усі шкідливі файли можуть завдати шкоди нашій системі, і тому всі вони повинні сприйматися з однаковою серйозністю. Відкриття замаскованого виконуваного файлу може завдати шкоди не менше, ніж вірус, а перенаправлення документів Office з увімкненими макросами кінцевим користувачам у нашій системі може призвести до RCE (віддалене виконання коду) та інших катастрофічних наслідків.
Перевірка файлів на загрози у Power Automate
Як і будь-яка дія в Power Automate, перевірка файлів на загрози починається з пошуку відповідного API-конектора в нашій бібліотеці конекторів. Більшість вбудованих динамічних дій для перевірки загроз за замовчуванням відсутні, але ми можемо легко завантажити один як Користувацький конектор за допомогою OpenAPI URL специфікації.
У цій статті ми пропонуємо використовувати Cloudmersive Advanced Virus Scan API у Power Automate як Користувацький конектор. Це надасть нам вдосконалену 360-градусну захисту контенту на осі наших робочих процесів обробки файлів.
Завантаження Cloudmersive Advanced Virus Scan API в Power Automate
Завантажити API в Power Automate досить просто, і ми вже писали статтю, яка поетапно описує цей процес. Ми можемо завантажити Cloudmersive Advanced Virus Scan API, використовуючи наступну OpenAPI URL:
https://api.cloudmersive.com/swagger/api/virus
За замовчуванням, завантаження цієї специфікації дозволяє нам здійснювати API виклики до Cloudmersive Public Cloud API кінцевих точок, і нам буде потрібен безкоштовний Cloudmersive API ключ для авторизації з'єднання (їх можна отримати, створивши безкоштовний акаунт на вебсайті Cloudmersive).
Публічне хмарне з'єднання обмежує кількість файлів, які ми можемо перевірити на місяць (800), та розмір цих файлів (2,5 Мб), але якщо ми хочемо збільшити масштаб нашої операції зі сканування файлів, ми можемо легко перейти на план корпоративної інфраструктури та замінити кінцеву точку публічного хмарного сервісу на нашу власну URL кінцеву точку в розділі Загальна інформація нашого Користувацького конектора для сканування вірусів.
Після оновлення до корпоративного облікового запису замініть вашу власну кінцеву точку на показану вище кінцеву точку публічного хмари в полі Host.
Завантаження специфікації Cloudmersive Virus Scan API дає нам доступ до всієї бібліотеки дій Cloudmersive Virus Scan, як показано нижче.
Ми можемо ігнорувати більшість опцій у цьому списку (які не призначені для використання в таких платформах, як Power Automate) і зосередитися на дії Advanced Scan a file for viruses прямо вгорі.
Як працює Advanced Scan API
Як показано в моделі відповіді нижче, дія Advanced Scan API перевіряє файли на широкий спектр можливих загроз, включаючи виконувані файли, некоректний контент, скрипти, паролем захищені файли та багато іншого. Вона також використовує постійно оновлювану базу даних з понад 17 мільйонами підписів вірусів і шкідливих програм, ідентифікуючи відомі віруси за іменем у масиві FoundViruses.
Крім того, коли файли містять потенційно шкідливі дані або підфайли, ця інформація відображається в об'єкті ContentInformation.
{
"CleanResult": true,
"ContainsExecutable": true,
"ContainsInvalidFile": true,
"ContainsScript": true,
"ContainsPasswordProtectedFile": true,
"ContainsRestrictedFileFormat": true,
"ContainsMacros": true,
"ContainsXmlExternalEntities": true,
"ContainsInsecureDeserialization": true,
"ContainsHtml": true,
"ContainsUnsafeArchive": true,
"ContainsOleEmbeddedObject": true,
"VerifiedFileFormat": "string",
"FoundViruses": [
{
"FileName": "string",
"VirusName": "string"
}
],
"ContentInformation": {
"ContainsJSON": true,
"ContainsXML": true,
"ContainsImage": true,
"RelevantSubfileName": "string",
"IsAuthenticodeSigned": true
}
}
Після того, як ми завантажимо наш конектор для сканування вірусів, ми зможемо використовувати дію Advanced Scan в будь-якому робочому процесі обробки файлів.
Приклад робочого процесу
Тепер розглянемо швидкий приклад робочого процесу, який перевіряє всі файли в важливій папці на потенційні загрози.
Уявімо, що ці файли не були виявлені нашими політиками безпеки мережі, але ми все одно вирішили двічі перевірити їх на наявність загроз перед тим, як відправити їх клієнтам (або споживачам) у звичайному автоматизованому робочому процесі.
Ми налаштуємо наш приклад, створивши миттєвий хмарний потік з ручним тригером.
Ми почнемо проектувати наш потік, отримуючи кожен файл з нашої цільової папки та отримуючи його вміст.
Якщо наші файли знаходяться в SharePoint, ми можемо перерахувати кожен файл та отримати його байти за допомогою дій List folder та Get file content, виконуючи їх одну за одною на початку нашого потоку.
Коли ми слідуємо за цим прикладом, ми помітимо, що Power Automate автоматично обгортає нашу дію Get file content в For each (для кожного) контрол, коли ми вибираємо значення Id у полі File Identifier. Це налаштовує нас на фільтрацію кожного файлу в нашій цільовій папці через наступну дію в нашому контролі For each.
У нашому потоці цією наступною дією буде, звичайно, дія Advanced Scan з нашого Custom Virus Scan конектора.
Ми знайдемо його, натиснувши на випадаючий список Runtime, вибравши Custom, відкривши наш конектор Custom Virus Scan і вибравши опцію Advanced Scan.
Після вибору цієї дії ми використаємо динамічний вміст у нашому потоці для заповнення параметрів InputFile/body та InputFile (file name).
Далі ми натискаємо Show all, щоб побачити Advanced parameters.
Налаштування будь-яких параметрів у цьому списку Advanced parameter є необов'язковим; Advanced Scan API за замовчуванням перевіряє всі ці потенційні загрози.
Ми можемо, однак, використати кожен з наведених випадаючих списків, щоб дозволити різні загрози файлів (наприклад, макроси або виконувані файли), якщо тип файлу важливий для нашого робочого процесу (це не рекомендується, але це є опцією).
Ми також можемо заблокувати конкретні розширення файлів (наприклад, «.docx» або «.pdf»), ввівши їх як список, розділений комами, у параметрі RestrictFileTypes.
На наступному кроці нашого потоку ми реалізуємо базове Condition (Умова), яка змінює потік в залежності від результатів нашого Advanced Scan.
Як показано в моделі відповіді, яку ми розглядали раніше в цій статті, ми отримаємо значення булевого типу CleanResult для кожного файлу, який ми скануємо, і це значення буде «true», коли файли чисті, і «false», коли виявлено загрози. У нашій Condition ми направляємо файли на гілку True, коли вони отримують відповідь CleanResult: false (щоб спростити наш приклад, ми залишимо обидві гілки без подальших дій на цей момент).
Коли ми збережемо і запустимо наш потік, Power Automate буде обробляти кожен файл з нашої цільової папки через дію Advanced Scan, і ми зможемо переглядати кожну окрему відповідь, коли цей процес завершиться.
У моєму прикладі потоку я використав папку, заповнену (неактивними) шкідливими тестовими файлами.
Одразу ми помітимо, що моє значення expressionResult = true в першому циклі For each.
Це означає, що загроза була виявлена.
Коли я перевіряю тіло відповіді Advance Scan для цього циклу, я отримую таку (досить тривожну) відповідь:
Як працювати з підозрілими файлами
У моєму прикладі значення ClontainsInvalidFile вказує на те, що цей конкретний файл є недійсним, що означає, що вміст файлу не відповідав розширенню файлу. Значення VerifiedFileFormat вказує, що файл мав бути PDF за розширенням.
Це може свідчити про невинну помилку, скоєну оригінальним автором PDF, і також може вказувати на те, що файл був спеціально створений для того, щоб призвести до збою PDF-читача після відкриття на клієнтському пристрої. Така проблема може швидко перерости у відмову в обслуговуванні або атаки з масовим витоком даних без будь-якого залучення шкідливого програмного забезпечення.
В будь-якому разі, ми тепер знаємо, що цей файл не слід ділити з клієнтами або споживачами до того, як буде виявлена причина проблеми і вона буде усунена. За допомогою лише одного швидкого кроку в нашому потоці ми уникли потенційної катастрофи і отримали можливість виправити проблему.
Перекладено з: How to Scan for Hidden File Threats in Power Automate