Безпека

Мала поверхня, опублікований огляд

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.

Контакт з питань безпеки: