Мала поверхня, опублікований огляд
Missivus зберігає облікові дані, які дозволяють надсилати пошту від імені вашої компанії. Це саме той код, який слід перевіряти рядок за рядком і документувати публічно — тож так і зроблено.
Модель безпеки в одному абзаці
Радіус ураження обмежує саме політика доступу застосунку в Exchange. Кожна знахідка нижче стримується нею — навіть повністю скомпрометовані облікові дані дозволяють надсилати з однієї спільної поштової скриньки й нічого більше. Тому посібник зі встановлення трактує політику як обов’язковий крок із командою перевірки, а не як необов’язкове посилення безпеки.
Що охопив огляд
Дерево v0.1.1 пройшло аудит після першого бойового розгортання — транспорт Graph, модель налаштувань, метод API для тестового листа та компонент Vue перевірили на витік секретів через журнали, відповіді API, вихідний HTML і консоль браузера; на автентифікацію та CSRF на поверхні API; на валідацію введення в кожному налаштуванні; і на те, чи можуть тіла помилок Graph дістатися когось, окрім суперкористувача. Твердження про поведінку Matomo звіряли з вихідним кодом Matomo, а не пригадували з пам’яті.
Знахідки, чесно викладені
Виправлено до релізу
- Перевизначення базового URL могло спрямувати секрет клієнта на хост зловмисника — тепер URL перевіряються на те, що це чисті https-джерела, ще до побудови будь-якого запиту.
- Мережевий збій посеред завантаження міг занести попередньо автентифікований URL завантаження в журнал — тепер його перетворюють і приховують, як і будь-який інший збій.
- Налаштування приймали будь-який рядок — тепер кожне поле перевіряє свою форму, тож вставлений Secret ID падає під час збереження, а не як незрозуміла помилка Microsoft згодом.
- Метод API для тестового листа приймав будь-якого одержувача й відповідав на GET — тепер лише POST із перевіреною адресою, поза журналами доступу сервера.
Перевірено — чисто
- Секрети ніколи не потрапляють ані у вихідний HTML, ані у відповідь API, ані в консоль браузера — поля паролів маскує ядро Matomo, а плагін додає ще два власні запобіжники.
- Тестовий виклик захищено від CSRF моделлю токенів Matomo, а правило «лише POST» додано як ешелонований захист.
- Усе, що записується в журнал або кидається як виняток, проходить через редактор, який затирає відомі секрети за значенням, а облікові дані — за формою: токени, підтвердження, заголовки bearer, URL завантаження — і відмовляє безпечно.
Прийняті компроміси, задокументовані
- Короткочасний токен доступу кешується у файловому кеші Matomo — той, хто може його прочитати, уже може прочитати конфігурацію Matomo, у якій може бути й сам секрет. Пом’якшено 55-хвилинним строком життя та політикою доступу.
- Суперкористувач може надсилати тестові листи без обмеження частоти — це вектор докучання, а не підвищення привілеїв; суперкористувач і так міг би переналаштувати пошту повністю.
- Секрет, введений в інтерфейсі налаштувань, зберігається в базі даних Matomo незашифрованим — рівні конфігураційного файлу та змінних середовища існують саме для того, щоб цього не доводилося робити, і вони мають перевагу.
Читати повний огляд з усіма одинадцятьма знахідками на GitHub
Повідомлення про вразливість
Напишіть на адресу нижче з подробицями. Будь ласка, дайте нам змогу виправити проблему, перш ніж вона стане публічною, — і ніколи не додавайте до звіту секрет клієнта, сертифікат чи файл PEM.
Контакт з питань безпеки: …