Хакери використали особливість протоколу OpenPGP, про яку відомо понад десять років.
Розповідаємо, у чому суть і чому її не можуть закрити.
/ Unsplash /
Проблеми в мережі
У середині червня невідомі на мережу серверів криптографічних ключів побудовану на базі протоколу OpenPGP. Це стандарт IETF (), який використовується для шифрування електронної пошти та інших повідомлень. Мережа SKS створили тридцять років тому розповсюдження публічних сертифікатів. До неї підключаються такі інструменти, як для шифрування даних та створення електронних цифрових підписів.
Хакери скомпрометували сертифікати двох мейнтейнерів проекту GnuPG — Роберта Хансена (Robert Hansen) та Деніела Гілмора (Daniel Gillmor). Завантаження зіпсованого сертифіката із сервера призводить до збою в роботі GnuPG – система просто зависає. Є підстави вважати, що на цьому зловмисники не зупиняться, і кількість скомпрометованих сертифікатів лише збільшуватиметься. Наразі масштаби проблеми залишаються невідомими.
Суть атаки
Хакери скористалися вразливістю у протоколі OpenPGP. Вона відома спільноті вже не один десяток років. Навіть на GitHub відповідні експлойти. Але поки що ніхто не взяв на себе відповідальність за закриття «дірки» (далі поговоримо про причини докладніше).
Пара добірок з нашого блогу на Хабрі:
Відповідно до специфікації OpenPGP будь-хто може додавати цифрові підписи до сертифікатів для підтвердження їх власника. Причому максимальна кількість підписів не регламентована. І тут виникає проблема — мережа SKS дозволяє розмістити до 150 тис. підписів на один сертифікат, але GnuPG такої кількості не підтримує. Таким чином, при завантаженні сертифіката GnuPG (як, втім, інші реалізації OpenPGP) зависає.
Один з користувачів — імпорт сертифікату зайняв приблизно 10 хвилин. Сертифікат мав понад 54 тис. підписів, а його вага становила 17 Мбайт:
$ gpg --homedir=$PWD --recv C4BC2DDB38CCE96485EBE9C2F20691179038E5C6
gpg: key F20691179038E5C6: 4 duplicate signatures removed
gpg: key F20691179038E5C6: 54614 signatures not checked due to missing keys
gpg: key F20691179038E5C6: 4 signatures reordered
gpg: key F20691179038E5C6: public key "Daniel Kahn Gillmor <dkg@fifthhorseman.net>" imported
gpg: no ultimately trusted keys found
gpg: Total number processed: 1
gpg: imported: 1
$ ls -lh pubring.gpg
-rw-r--r-- 1 filippo staff 17M 2 Jul 16:30 pubring.gpg
Ситуацію посилює той факт, що сервери ключів із OpenPGP не видаляють інформацію про сертифікати. Так зроблено, щоб можна було простежити ланцюжок всіх дій із сертифікатами та виключити їхню підміну. Тому ліквідувати скомпрометовані елементи не можна.
По суті, мережа SKS є великим «файловим сервером», на який будь-хто може записати дані. Щоб проілюструвати проблему, торік резидент GitHub яка зберігає документи в мережі серверів криптографічних ключів.
Чому вразливість не закрили
Для закриття вразливості був приводу. Раніше її не використовували для хакерських атак. Хоча ІТ-спільнота розробників SKS та OpenPGP звернути увагу на проблему.
Заради справедливості варто відзначити, що в червні вони все ж експериментальний сервер ключів . У ньому реалізовано захист від подібних типів атак. Однак його база даних заповнюється з нуля, а сервер не є частиною SKS. Тому мине час, перш ніж ним можна буде користуватися.

/ Unsplash /
Щодо бага в оригінальній системі, то виправити його заважає складний механізм синхронізації. Мережа серверів ключів спочатку писалася як proof of concept для захисту докторської дисертації Яроном Мінськ (Yaron Minsky). Причому для роботи було обрано досить специфічну мову OCaml. за мейнтейнер Роберт Хансен, розібратися в коді складно, тому в нього вносяться лише невеликі виправлення. Щоб модифікувати архітектуру SKS, її доведеться переписати з нуля.
У будь-якому випадку GnuPG не вірить, що мережу коли-небудь вдасться виправити. У пості на GitHub розробники навіть написали, що не рекомендують працювати зі SKS Keyserver. Власне це одна з головних причин, чому вони ініціювали перехід на новий сервіс keys.openpgp.org. Нам залишається лише спостерігати за подальшим розвитком подій.
Пара матеріалів з нашого корпоративного блогу:
Джерело: habr.com
