
Один із центрів сертифікації, eMudhra, зберігав настільки слабкі секретні ключі, що їх можна було вгадати за секунду. Один ключ буквально був числом 4. За допомогою таких ключів можна підробити «захищений» сайт банку, платіжної системи чи будь-якого іншого сервісу.
Браузери вже захистили своїх користувачів. А от сервери — ні. Якщо на вашому сервері працюють скрипти, сайти або програми, які звертаються до інших сервісів, оновіть список довірених сертифікатів. Це займе близько 5 хвилин.
Що таке сертифікат
Коли ви відкриваєте сайт банку, поруч з адресою є значок замка. Він означає, що сайт справжній, а не підроблений. Але звідки браузер це знає?
Уявіть нотаріуса. Ви приносите документ, нотаріус перевіряє його та ставить печатку. Усі довіряють цій печатці. Якщо на документі є печатка відомого нотаріуса, його вважають справжнім.
В інтернеті роль нотаріусів виконують центри сертифікації. У світі їх близько 140. Вони видають сайтам сертифікати — тобто «засвідчені документи». Браузери, телефони та сервери зберігають список нотаріусів, яким довіряють.
У кожного нотаріуса є печатка: секретний ключ. Поки печатка надійно захована, підробити документ неможливо.
Що сталося
eMudhra — це індійський центр сертифікації. Йому довіряють Chrome, Firefox, Apple та Microsoft.
У квітні 2025 року eMudhra створила вісім нових «печаток» для видавання сертифікатів: шість для сайтів і дві для підписування програм. Через помилку в скрипті ключі вийшли крихітними.
Нормальний ключ — це число завдовжки понад сто цифр. Його неможливо вгадати навіть за мільйони років. В eMudhra всі вісім ключів були меншими за 256. Один дорівнював 4, другий — 56, третій — 115.
Це як сейф із кодом «0004». Зловмиснику не потрібні інструменти. Достатньо перебрати кілька варіантів. Дослідник Скотт Гелм (Scott Helme) підібрав усі вісім ключів менш ніж за секунду.
Помилку помітили лише 17 жовтня 2026 року. Отже, протягом півтора року будь-хто потенційно міг підробляти сертифікати. 18 жовтня eMudhra відкликала всі вісім «печаток». Невідомо, чи встиг хтось ними скористатися.
Чим це загрожує
Із викраденою печаткою можна видати себе за кого завгодно. Наприклад, за банк, платіжну систему чи поштовий сервіс.
Ось простий приклад. Ваш інтернет-магазин надсилає дані замовлення до платіжної системи. Зловмисник стає посередині та показує підроблений сертифікат. Ваш сервер бачить печатку «нотаріуса», якому довіряє, і спокійно передає дані. Це як віддати конверт із грошима людині у формі кур'єра, не перевіривши, чи справжній він.
Це не теорія. Скотт Гелм підробив сертифікат для платіжного сервісу Stripe. Популярні інструменти curl, Python і Node.js прийняли підробку без жодного попередження.
Кого це стосується
Браузери вже захищені. Chrome, Firefox і Safari оновилися автоматично. Якщо ви просто відкриваєте сайти, нічого робити не потрібно.
Сервери самі не оновлюються. Сервер має власний список довірених «нотаріусів». Він оновлюється лише разом із системою. А деякі програми зберігають власний список. Їх потрібно оновлювати окремо.
Оновлення потрібне, якщо на вашому сервері:
- працює сайт або магазин, який підключається до платіжних систем, API чи пошти;
- запускаються скрипти на Python, Node.js, Go або Java;
- використовуються curl або wget у cron-завданнях;
- працюють Docker-контейнери.
Простіше кажучи, це стосується майже кожного сервера.
Оновіть системні сертифікати
Список довірених «нотаріусів» зберігається в пакеті ca-certificates. Оновити його можна однією командою.
Ubuntu та Debian:
sudo apt update
sudo apt install --only-upgrade ca-certificatesУ Debian 13 виправлена версія пакета — 20250419+deb13u1 або новіша.
AlmaLinux, Rocky Linux, CentOS Stream:
sudo dnf upgrade ca-certificates
Alpine Linux:
apk upgrade ca-certificatesВ Alpine виправлена версія — 20261020-r0 або новіша.
Перезавантажувати сервер не потрібно. Але служби, які працюють давно, краще перезапустити. Вони могли запам'ятати старий список під час запуску.
Оновіть Python, Node.js, Go та Java
Деякі програми не звертаються до системного списку. Вони мають власний. Це як працівник, у якого в кишені старий записник із номерами телефонів. Ви оновили довідник в офісі, а він усе одно телефонує за старими номерами.
PHP, curl і wget зазвичай використовують системний список. Для них достатньо першого кроку. А ось ці потрібно оновити окремо.
| Що | Як перевірити версію | Безпечна версія |
|---|---|---|
| Python (пакет certifi) |
| 2026.10.19 або новіша |
Node.js |
| 22.23.4, 24.22.1 або 26.12.1 і новіші |
Go |
| 1.27.3 або 1.26.10 і новіші |
Java |
| Останнє оновлення вашої версії |
Python. Оновіть пакет командою:
pip install --upgrade certifi
Node.js. Це те саме оновлення, яке усуває небезпечну вразливість у Brotli. Тож Node.js варто оновити в будь-якому разі.
Go. Оновіть Go та перезберіть свої програми. Стара зібрана програма й далі довірятиме старим «печаткам».
Node.js 20 і старіші версії не отримають виправлення. Ці версії більше не підтримуються. Потрібно перейти на новішу версію.
Перезберіть Docker-образи
Кожен Docker-контейнер — це окрема маленька система з власним списком сертифікатів. Оновлення сервера не змінює його. Контейнер — як валіза, яку зібрали місяць тому. Що ви тоді в неї поклали, те там і лежить.
Що зробити:
Оновіть базовий образ. Наприклад, завантажте свіжу версію
node:24,python:3.13абоdebian:13.Перезберіть свої образи:
docker compose build --pull- Перезапустіть контейнери:
docker compose up -d
Прапорець
--pullважливий. Без нього Docker може взяти старий базовий образ із кешу, і нічого не зміниться.
Якщо після оновлення щось зламалося
Разом із поганими «печатками» зі списку прибрали й сам «нотаріат» eMudhra, якому вони належали. Через це близько 30 тисяч звичайних сертифікатів також перестали вважатися надійними. Їхнім власникам доведеться отримати нові в іншому центрі.
Тому після оновлення ваш скрипт або сайт може перестати підключатися до якогось сервісу. У логах можуть з'явитися такі помилки:
certificate verify failed
unable to get local issuer certificate
Найімовірніше, сертифікат цього сервісу видала eMudhra. Тепер ваш сервер йому не довіряє. І це правильно.
Що робити:
- Знайдіть адресу, до якої не вдається підключитися.
- Повідомте власника сервісу. Йому потрібно замінити сертифікат.
- Дочекайтеся заміни або тимчасово використовуйте інший сервіс.
Чого робити не можна: вимикати перевірку сертифікатів. Наприклад, через параметри
verify=Falseу Python або-kу curl. Це як зняти замок із дверей, бо ключ перестав підходити. Проблема зникне, але двері залишаться відчиненими для всіх.
Чекліст
- Оновив пакет
ca-certificates - Перезапустив служби, які давно працюють
- Оновив
certifiу Python - Оновив Node.js до
22.23.4,24.22.1або26.12.1 - Оновив Go та перезібрав програми
- Оновив Java
- Перезібрав Docker-образи з прапорцем
--pull - Перевірив логи на помилки сертифікатів
- Ніде не вимикав перевірку сертифікатів
Не хочете розбиратися самостійно?
Щотижня з'являються нові вразливості. З Premium вам не доведеться розбиратися з ними наодинці.
Оновити один пакет нескладно. Складніше зрозуміти, де ще на сервері приховані власні списки сертифікатів. Python в одному місці, Node.js — в іншому, три Docker-контейнери — у третьому. А якщо після оновлення перестала працювати оплата на сайті, кожна хвилина коштує грошей.
Для таких випадків у Zomro є два варіанти.
SOD: зробимо все за вас
Наш системний адміністратор:
- оновить системні сертифікати;
- знайде й оновить Python, Node.js, Go та Java, які мають власні списки;
- перезбере Docker-образи;
- перевірить, що сайт та інтеграції працюють.
Вартість: €12.50 за кожні 15 хвилин роботи.
Premium: швидка допомога, коли вона потрібна
На звичайний технічний запит відповідь може надходити до 10 годин. Із Premium ми відповідаємо протягом 5–30 хвилин. Якщо після оновлення зламалася оплата чи інтеграція, вам не доведеться чекати пів дня.

