Технологічні підприємства, які розробляють користувацькі застосунки, як для внутрішнього використання, так і для продажу, мають цінний актив, що заслуговує на такий же захист, як особиста інформація клієнтів чи номери кредитних карток – вихідний код. Для багатьох компаній вихідний код є серцем бізнесу. Якщо компанія розробляє унікальний IT-продукт, його вихідний код має бути захищений дуже надійно.
Чому вихідний код є таким цінним?
Багато комерційних застосунків мають значну конкурентну перевагу, тому що ніхто, крім авторів, не знає точно, як ці застосунки працюють. Вони можуть використовувати унікальні алгоритми або програмні трюки, які роблять їх точнішими, швидшими або в будь-який інший спосіб кращими за конкурентів. Такі секрети приховані у вихідному коді.
Розуміння, чому вихідний код є таким цінним, також вимагає певного розуміння процесу створення комп’ютерних програм. У майже всіх сучасних архітектурах програміст пише програму на високорівневій мові програмування, такій як Java, Python, Ruby або C++ – це і є те, що називають вихідним кодом. Люди без проблем розуміють такі мови, тому їм легко працювати з ними. Водночас ці ж мови набагато важче опрацювати процесорам комп’ютерів, які потребують дуже базових наборів інструкцій.
Кожного разу, коли розробники створюють нову версію вихідного коду, його потрібно конвертувати в інструкції для комп’ютера. В минулому багато архітектур робили це під час виконання коду за допомогою спеціальних застосунків, які називаються інтерпретаторами, але цей підхід не є дуже ефективним. Зараз майже всі мови потребують спеціального застосунку, який називається компілятором, який бере вихідний код і перетворює його на справжній застосунок, який можна виконувати на комп’ютері, публікувати в Інтернеті або завантажувати і встановлювати користувачами.
Але можна подумати, що якщо застосунок завантажено або опубліковано в Інтернеті, будь-хто має змогу зрозуміти, як він працює, і дістатися до вихідного коду? Це не так, не можна просто перетворити застосунок назад у вихідний код. Ось чому бізнеси почуваються в безпеці, публікуючи застосунки, але ніколи не зроблять те ж саме зі своїм вихідним кодом.
Хто може зацікавитися крадіжкою вихідного коду?
Хоча очевидним винуватцем спроб крадіжки вихідного коду буде конкурент, ще багато інших сторін можуть зацікавитися унікальними алгоритмами:
- Дилери на даркнеті: Можливо, найбільша загроза для вихідного коду походить від професіоналів, які заробляють на життя крадіжкою у інших, а потім або продають це покупцю, що запропонував найвищу ціну або вимагають викуп, щоб не публікувати код. Більшість злодіїв, які націлюються на вихідний код, взагалі не зацікавлені його вмістом. Вони шукають легку ціль, отримують вихідний код і виставляють його на продаж у даркнеті або шантажують, вимагаючи значні кошти.
- Псевдо-хакери та псевдо-активісти: Ще одна група, яка часто не цікавиться алгоритмами, а самим фактом крадіжки, – це так звані “скрипткіді”(script kiddies). Це, як правило, проблемні молоді люди, які намагаються підняти свою самооцінку, беручи участь у незаконних хакерських спільнотах, де вони здобувають найбільшу повагу, якщо їм вдається зламати захист і публічно виставити свої знахідки. Подібна ситуація може виникнути і з людьми, які вважають, що секрети фірми повинні бути відомі громадськості, щоб кожен міг скористатися дослідженнями “для блага світу”. Шкода в цих випадках може бути набагато більшою, ніж від професійних злодіїв, оскільки цінна інформація стає доступною для завантаження будь-кому.
- Державні зловмисні хакери: Не тільки сумнівні конкуренти з іншого боку світу можуть бути зацікавлені в унікальних алгоритмах, але й уряди, які стоять за ними. Їхньою метою може бути не скористатися винаходами, а ослабити позиції бізнесу, країни або її союзників. Сам факт крадіжки допомагає їм підживлювати свою пропагандистську машину, надаючи докази того, наскільки легкою мішенню можуть бути їхні вороги.
Три загрози, наведені вище, є лише прикладами, і можуть бути інші, які отримають вигоду або від вкраденого контенту, або від його викриття, або від самого факту крадіжки. І, нарешті, зловмисники можуть тихо використовувати вкрадений вихідний код, щоб дослідити вразливості в програмному забезпеченні. Це робить вихідний код однією з найбільш цінних цілей у сучасному інформаційно-орієнтованому світі.
Як можна вкрасти вихідний код?
Сучасні застосунки розробляються командами, які включають численні ролі, і всі ці ролі потребують певного доступу до вихідного коду. Це означає, що зловмисники мають кілька потенційних точок входу для викрадення цінної інформації, і доведеться захищати кожну з цих точок. У підсумку, крадіжка вихідного коду набагато легша, ніж крадіжка секретної формули.
Щоб зрозуміти, чому незахищений вихідний код дуже легко вкрасти, потрібно зрозуміти, як сьогодні створюється програмне забезпечення. У майже кожному бізнесі, який створює застосунки, весь вихідний код їхніх застосунків зберігається за допомогою спеціального програмного забезпечення, яке називається системою керування версіями, а місце, де зберігається вихідний код, зазвичай просто називається репозиторієм. Це спеціальне програмне забезпечення полегшує відстеження будь-яких змін, внесених будь-якими командами, які беруть участь у створенні та зміненні вихідного коду, відкат їх у разі потреби або навіть створення кількох версій програмного забезпечення одночасно.
Найпопулярнішою системою керування версіями сьогодні є Git, і основні репозиторії можуть зберігатися або на виділеному сервері компанії, або, наприклад, управлятися за допомогою хмарних рішень, таких як GitHub і GitLab. Хоча ці репозиторії зазвичай дуже добре захищені, і єдине, про що бізнесу потрібно турбуватися, це використання надійних паролів і багатофакторної автентифікації для доступу до них, на жаль, кожна людина, яка працює над програмним забезпеченням, така як розробник/програміст або тестувальник, що забезпечує контроль якості, повинна скопіювати весь вихідний код на свій локальний комп’ютер. Це означає, що код знаходиться на десятках або навіть сотнях ноутбуків, часто по всьому світу.
Цей факт сам по собі означає, що вихідний код дуже легко вкрасти, якщо замість того, щоб цілитися в добре захищений центральний репозиторій, зловмисник цілиться в слабке місце: цих розробників або тестувальників та їхні ноутбуки. Набагато легше обдурити людину за допомогою соціальної інженерії або навіть отримати фізичний доступ до такого ноутбука, ніж намагатися прорватися через захист хмарних гігантів або отримати доступ до спеціальних серверів компанії.
Відомі випадки крадіжки вихідного коду
Крадіжка вихідного коду — це не просто теорія, а щоденна реальність. Хоча такі випадки не так часто висвітлюються популярними медіа, як крадіжка особистої інформації, і ми не чуємо про них так часто, вони відбуваються майже щороку і навіть з найбільшими гравцями на ринку. Ось деякі відомі випадки та їхні наслідки.
2018 рік — Apple:
Інтерн, який покинув компанію, взяв із собою копію вихідного коду iOS і передав його спільноті, що спеціалізується на зламі захисних механізмів операційної системи (“jailbreaking”). Згодом ця спільнота опублікувала частину вихідного коду, що показала, як Apple реалізує механізми захищеного завантаження.
2020 рік — Mercedes:
Автогігант випадково відкрив свій повний репозиторій вихідного коду, опублікувавши токен безпеки (аналогічний паролю), який можна було знайти за допомогою Google Search. На щастя, цю вразливість виявив інженер з безпеки (Шубхам Міттал з RedHunt Labs), але важко сказати, чи хтось ще зміг отримати доступ до цієї чутливої інформації раніше.
2022 рік — Microsoft:
Компанію атакувала хакерська група Lapsus$, яка отримала доступ до коду для Bing і Cortana, серед іншого. Зловмисники змогли вкрасти цей вихідний код через незахищений сервер Azure, який міг бути доступний будь-кому без пароля протягом місяця.
2023 рік — Riot Games:
Цей видавець ігор зазнав крадіжки коду однієї з найвідоміших ігор: League of Legends. Зловмисники вимагали викуп, і, ймовірно, атака була організована за допомогою соціальної інженерії.
Березень 2024 року — Microsoft:
Цього разу гігант зазнав крадіжки вихідного коду одним із найвідоміших російських державних зловмисних хакерів, Midnight Blizzard, який раніше був відомий зломом SolarWinds. Атака була здійснена за допомогою “password spraying” — використання одного і того самого вкраденого пароля для доступу до багатьох цілей, припускаючи, що більшість людей використовують один і той самий пароль для багатьох систем (що, на жаль, правда).
Наведені вище випадки є лише прикладами, але було багато інших, наприклад, Adobe у 2013 році, Symantec у 2012 та 2019 роках, Microsoft Windows 10 у 2017 році, Snapchat у 2018 році тощо. Здається, у світі трапляється більше резонансних випадків крадіжки вихідного коду, ніж витоків особистої інформації.
Запобігання крадіжці вихідного коду за допомогою DLP
Як вже згадували раніше, найпростішою точкою доступу для крадіжки вихідного коду є кінцеві точки – в першу чергу ноутбуки, які використовуються розробниками та тестувальниками програмного забезпечення, і які майже в будь-який час можуть мати повну копію вихідного коду програми в абсолютно незахищеному локальному Git-репозиторії, який є просто каталогом на локальному диску. DLP працює, дозволяючи власнику пристрою отримати доступ до захищеного ресурсу, але не дозволяючи копіювати та вставляти цей чутливий контент у інші додатки, такі як вікно браузера, месенджер або електронна пошта. Але першою проблемою є виявлення ресурсів, які потребують захисту, у цьому випадку — вихідного коду.
Попри те, що програмам безпеки відносно легко сканувати всі файли на локальному диску, виявлення вихідного коду в цих файлах не таке просте, як може здатися. Сучасні високорівневі мови програмування створені для того, щоб бути легкими для розуміння людиною, тому вони використовують слова, які звучать як природна мова. Хоча деякі з них повні конструкцій, які не є такими поширеними в іншому контенті, таких як крапки з комами і дужки, багато хто відходить від цього. У підсумку, DLP повинно бути здатне розпізнавати не лише найбільш поширені та легкі для розпізнавання мови програмування, такі як Java, але й складніші такі як Python, Ruby чи SQL. Тут програмне забезпечення Endpoint Protector DLP виділяється своїм унікальним алгоритмом категоризації тексту на основі N-грам, який досягає 98% точності у виявленні мов програмування.
Важливість ефективності при захисті вихідного коду
Точність у виявленні вихідного коду, за яку Endpoint Protector вже добре відомий, є лише однією з причин, чому це програмне забезпечення особливо підходить для захисту вихідного коду. Однак немає способу для DLP розрізнити власний вихідний код і інший вихідний код на локальному диску, такий як відкриті бібліотеки чи вихідний код операційної системи (наприклад, у системах macOS). Тому ефективність у обробці є дуже важливою через потенційну необхідність охоплення не лише найбільш чутливих фрагментів вихідного коду.
Вихідний код — це не такий актив, який завантажується лише на мить і потім більше не використовується, як багато типів особистої інформації. Вихідний код постійно зберігається на диску розробника і перебуває в постійному стані змін. Щодня розробник модифікує файли, копіює їхні фрагменти, створює нові файли, відкриває їх у середовищі розробки та синхронізує все з хмарним або серверним репозиторієм, потенційно завантажуючи багато нової інформації, створеної іншими розробниками. Тому будь-який тип діяльності DLP має бути дуже ефективним, щоб не уповільнювати жоден з цих інтенсивних процесів доступу.
З точки зору ефективної профілактики крадіжки вихідного коду з кінцевих точок, Endpoint Protector відповідає всім вимогам. І, як бонус, власники Endpoint Protector захищають вихідний код Endpoint Protector за допомогою власного DLP.







