У вас есть сертификаты по безопасности?
Нет. Ни ISO 27001, ни SOC 2, ни сертификата по наступательному тестированию, ни аккредитации аудитора. Мы не выдаём сертификаты и не подписываем аттестаты соответствия. Что мы можем показать — это собственная практика, с файлом и строкой, и контрольные меры, которые мы внедрили в работающих системах. Если вам нужен сертификат для досье, вам нужен аккредитованный орган, не мы — и лучше узнать это сейчас.
Вы проводите тесты на проникновение?
Не как услугу. У нас нет команды наступательного тестирования, лицензии или сертифицированной методологии, и мы не притворяемся, что они есть. Что мы делаем — это анализ кода и конфигурации, а также неинвазивные проверки снаружи: заголовки, поведение на пределе частоты запросов, что утечают ответы об ошибках. Если проекту нужно настоящее наступательное тестирование, вам нужна специализированная компания; мы можем работать вместе с ней над исправлением.
Что вы обнаружили в собственных системах?
Три вещи, за один день анализа, все публично указанные в нашем реестре. Маршрут, который инициировал телефонный звонок на любой номер из тела запроса, анонимно, без аутентификации, который ни один компонент интерфейса больше не вызывал — теперь он отвечает 404, если секрет не настроен, то есть отключен, если кто-то не запустит его намеренно. Виджет беседы, который загружался при каждом просмотре и записывал сессию в память браузера до того, как посетитель что-либо запросит — теперь он загружается по нажатию кнопки. И полный IP-адрес, отправляемый в уведомлении, тогда как на публичной странице обещалась анонимизация — теперь он обрезается перед записью.
Ваша политика контента допускает `unsafe-eval`. Почему я должен вам верить?
Потому что мы вам это сказали, а не вы сами узнали. Да, политика этого сайта допускает `unsafe-inline` и `unsafe-eval` в скриптах — это реальная слабость, унаследованная из того, как загружаются некоторые сторонние скрипты, и именно это механизм, благодаря которому наш собственный аудит доступности внедрил инструмент проверки в production-страницу. В проекте, где ограничение задаем мы с самого начала, правильная форма — та, что используется на платформе обращений: уникальное значение на каждый ответ, генерируемое в proxy, и ни одного стороннего источника для скриптов. Разница между этими двумя вариантами — это ровно тот разговор, который нужно вести в начале проекта, а не в конце.
Как я могу проверить, не веря вам на слово, что ограничение скорости работает?
Отправив двенадцать последовательных запросов к маршруту интерфейса программирования этого сайта и посчитав ответы: первые девять проходят, десятый получает 429 с заголовком, который говорит, через сколько можно повторить. Окно — одна минута. Команда есть в списке источников этой страницы, и вы можете запустить ее сейчас. Тот же принцип мы применяем к тому, что поставляем: если контроль нельзя проверить извне клиентом, он не поставляется, он декларируется.
Что происходит с персональными данными из формы?
Они записываются в журнал с добавлением, по одному объекту на строку, с ограниченными правами на файл и каталог, до того, как будет предпринята попытка доставки — чтобы сломанный канал уведомлений не заставил запрос исчезнуть. IP-адрес обрезается до сетевого префикса перед записью. Файлы, старше заявленного срока, удаляются, при этом число дней берется из того же значения, которое указано в опубликованной политике. А строка в реестре обработок для каждого элемента говорит, в каком файле кода это реализовано.
Можете ли вы сделать аутентификацию с государственной электронной идентификацией или электронной подписью?
Код существует и протестирован, но нигде не активирован в production, и это различие важно. У нас написан поставщик услуг для федеративной аутентификации и клиент подписи, оба без новых зависимостей, с реализованными специфическими мерами защиты и с тестами. Чего не хватает, не относится к коду: договор с органом, сертификат системы и регистрация production-адреса. До этого момента рабочий сегодня вариант — тот, в котором гражданин подписывает на официальном портале и загружает обратно подписанный документ.
Какие меры контроля вы обычно закладываете в новое приложение?
Заголовки и политика контента с уникальным значением на каждый ответ; ограничение скорости с ключом, правильно взятым из-за proxy; разделение по организации, применяемое в базе, а не только в приложении; зашифрованные секреты и никогда не в ответах или журналах; ключи идемпотентности для событий от третьих сторон; обязательная двухфакторная аутентификация для учетных записей персонала; журнал аудита с отдельной видимостью для внутреннего и публичного доступа; и для публичных проектов — список разрешенных сетевых назначений, автоматически проверяемый при каждой поставке.
Что не покрывает этот сервис?
Безопасность корпоративной сети, устройства пользователей, непрерывный мониторинг типа операционного центра, реагирование на инциденты 24/7, криминалистическое расследование и обучение против фишинга. Это не то, что мы делаем плохо — это то, чего мы не делаем. Наша область — приложение, которое мы строим или берем на сопровождение, плюс данные, проходящие через него.