Безопасность

До чего 1ADK может дотянуться внутри моих систем?

1ADK необычен тем, чего он не хранит. Это убирает целые категории риска и создаёт один, который легко не заметить, — поэтому на этой странице есть и то, и другое.

Короткий ответ

У 1ADK нет ни доступов к репозиторию, ни доступа к инфраструктуре, ни исходного кода, и он никогда не открывает соединение в сторону машины клиента. Он хранит другое: техническую картину вашей системы — имена, пути, связи и открытые вопросы. Эта картина чувствительна, и здесь написано, что её защищает, что не защищает и на что у 1ADK нет никаких сертификатов.

#До чего 1ADK может дотянуться

Ни до чего внутри ваших систем. Это свойство архитектуры, а не политика.

В продукте нет поля для адреса репозитория, нет хранилища для деплойного ключа, нет SSH-клиента и нет ни одного коннектора в сторону клиентской среды. Настроить неправильно нечего, потому что настраивать нечего.

Любой обмен начинается с вашей стороны по HTTPS: человек загружает файл или подключённый вами кодовый агент открывает задание и спрашивает те, что его ждут. Сам 1ADK соединение в вашу сторону не открывает никогда, и подключение агента не даёт ему ничего, чем такое соединение можно было бы открыть.

Почему сделано именно так

Альтернатива — SaaS, у которого лежит персональный токен доступа к репозиторию каждого клиента, — собирает огромный риск в одной точке. Один скомпрометированный поставщик означает компрометацию исходников всех его клиентов. 1ADK построен так, что его взлом не даёт никому доступа ни к одной строке кода ни одного клиента, потому что этого кода у него никогда не было.

#Что 1ADK хранит

Всё, что хранит 1ADK, и где именно
ВидПримерыГде живёт
Аккаунт и организация Ваш адрес почты, название организации, тариф, заведённые вами проекты Управляющий контур
Операционный след Задания на анализ, состояние пакетов, когда прошла запись, что не удалось Управляющий контур
Техническая картина Имена компонентов, относительные пути, связи, описания, утверждения, ссылки на источники, открытые вопросы, охват Собственное изолированное хранилище проекта
Пришедший пакет Тот JSON-файл, который сделал ваш агент, — загрузили вы его сами или прислала подключённая машина Карантин, пока по нему не принято решение
Открытые вами подключения Какую машину вы подключили и как она себя называет, когда она обращалась в последний раз, и односторонняя свёртка выданного ей ключа Управляющий контур

Шестой строки нет. Ни исходного кода, ни значений конфигурации, ни содержимого баз, ни каких-либо ваших учётных данных — и самого ключа подключения тоже нет: он хранится свёрткой, и прочитать его обратно нельзя.

#Путь пакета

Четыре рубежа, и на третьем стоит человек.

  1. Карантин при поступлении

    Пришедшие байты попадают туда, где нет ни одного хранилища проекта и куда остальной продукт не дотягивается. Ничего ещё не разобрано.

  2. Проверка, включая поиск секретов

    Файл сверяют со схемой пакета, ограничением по размеру и тем заданием, к которому он себя относит. Свободный текст просматривают на формы, которые принимают учётные данные: bearer-заголовки, ключи доступа AWS, блоки приватных ключей, начала токенов Stripe и Slack. Пакет с такой находкой отклоняют целиком; ничего частичного не сохраняют.

    Это второй рубеж обороны. Первый — инструкция, запрещающая значения и секреты, а третий — то, что в проект ничего не пишется, пока человек не прочитает пришедшее и не одобрит его. Ни один из трёх не является доказательством, и страница их так не подаёт.

  3. Решает человек

    Проверенный пакет ждёт явного одобрения кем-то с вашей стороны. Без него в хранилище проекта не попадает ничего.

  4. Один писатель, проверенная блокировка

    Одобренный пакет передают единственному писателю этого проекта: он держит блокировку, перепроверяет, что всё ещё держит её, пишет короткими транзакциями и при любом сбое оставляет хранилище нетронутым.

#Как проекты отделены друг от друга

Один проект — одно логически изолированное хранилище. Не одна схема в общей базе с колонкой арендатора, а отдельное хранилище с отдельным адресом.

Следствие, которое стоит проговорить: в продукте нет запроса, который возвращает знание сразу о двух проектах. Забытый фильтр по арендатору — классическая утечка в мультиарендных системах, и у выбранной здесь формы хранения такого способа сломаться просто нет.

Публичный сайт, который вы сейчас читаете, — отдельное приложение без доступов к базе платформы, без путей к хранилищам и без приватных секретов. Это не обещание, а проверка во время работы: приложение снимает собственные соединения с базой при старте, поэтому случайное обращение к данным падает, а не подключается куда-то втихую.

#От чего эта граница не защищает

Та часть страницы про безопасность, которую и стоит читать.

Граница 1ADK настоящая и узкая. Вот что остаётся снаружи.

  • Кодовый агент читает ваш код. Тот агент, который выполняет инструкцию, видит репозиторий, и если он облачный, то к увиденному применяются условия его поставщика. Это уже верно для любой другой задачи, которую вы этому агенту даёте, — но границей 1ADK это не покрыто, и именно поэтому сайт никогда не обещает, что ваш исходный код не увидит никто посторонний.
  • Метаданные бывают чувствительны сами по себе. Путь app/Services/AcmeBankIntegration.php называет клиента. Компонент LayoffQueue называет план. Предпросмотр метаданных существует ровно для того, чтобы посмотреть на это честно до того, как принимать решение.
  • Карта остаётся картой. Картина, которую строит 1ADK, показывает читателю, где что лежит и какие части никто не проверял. В чужих руках это полезный документ. Его и защищают как документ — но он не безобиден по своей природе только потому, что это не исходный код.
  • Кто может войти в ваш аккаунт, тот всё это и прочитает. Безопасность аккаунта общая: скомпрометированный пароль с вашей стороны — это компрометация картины, и снизить это вторым фактором 1ADK пока не предлагает.
  • 1ADK не ищет уязвимости в вашем софте. Это не сканер. Чистая карта не означает, что ваша система защищена.

#Аккаунты и доступ

  • Вход клиента — почта и пароль с восстановлением. Двухфакторной аутентификации для клиентских аккаунтов пока не существует.
  • Внутренние администраторские учётные записи создаются из командной строки, никогда самостоятельно, и требуют второго фактора. Восстановление администратора — тоже консольная операция; ссылки для сброса у него нет.
  • Клиентское приложение и внутренняя консоль — одна кодовая база и две зоны безопасности: разные хосты, разные группы маршрутов, разные сессионные куки, разные заголовки.
  • Непонятная авторизация означает отказ, а не разрешение. Там, где продукт не может установить, что вам это можно видеть, он этого не показывает.

#Как система ведёт себя при сбое

Правило, которое стоит опубликовать, потому что оно решает, что будет в худший день.

Доступность деградирует мягко. Безопасность и целостность отказывают наглухо.
Область, которую не удалось прочитать, сообщает о своём состоянии на месте, а не гасит страницу целиком. Запись, целостность которой не подтверждена, не фиксируется. Когда очередь записи недоступна, записи ждут: продукт никогда не переключается на прямую запись, потому что обход блокировки — это ровно то, как два писателя портят одно хранилище.
Если проще Если часть продукта не загрузилась, страница говорит, какая именно, и продолжает работать. Если продукт не может установить, что действие разрешено, а данные целы, он отказывает.

То же правило видно и в самом знании: неподтверждённое утверждение помечают как неподтверждённое, а не выдают за факт, и компонент, чьё удаление подтвердить не удалось, не объявляют удалённым.

#Чего 1ADK не утверждает

Сегодня неправда — и нигде не подразумевается

  • Нет ни SOC 2, ни ISO 27001, ни любой другой сертификации.
  • Нет отчёта о независимом тестировании на проникновение.
  • Нет двухфакторной аутентификации в клиентских аккаунтах.
  • Нет опубликованного списка субобработчиков сверх того, что сказано на странице о приватности.
  • Нет гарантий доступности и нет соглашения об уровне обслуживания.
  • Нет утверждения, что анализ находит все компоненты и что пустая находка означает пустую систему.

Это пробелы, а не позиция. Они перечислены, потому что страница про безопасность, где есть только сильные стороны, — самая неинформативная из возможных, и потому что покупатель, который узнаёт об одном из этих пунктов после оплаты, будет прав в своей претензии.

#Как сообщить об уязвимости

Напишите на security@1adk.com и приложите достаточно деталей, чтобы проблему можно было воспроизвести. Письмо читает человек и отвечает человек.

Программы вознаграждений нет, но и юридических угроз нет тоже: добросовестное сообщение о настоящей дыре — это услуга, и к ней так и относятся. Пожалуйста, не проверяйте это на чужих проектах и не публикуйте рабочий эксплойт до того, как появилась возможность починить.

Вы сообщаете названной компании, а не безымянному адресу: FinMV SIA, регистрационный номер 40203378371, страна регистрации — Латвия, дата регистрации — 8 февраля 2022.

Телефонной линии и почтового адреса нет. Ящик выше — это весь список, и его читает человек.

Вопросы, которые задают на самом деле

Техническая картина систем, которые в нём заведены: имена компонентов, относительные пути, связи, описания и открытые вопросы. Это действительно чувствительно — это карта того, где что лежит, — но это не ваш исходный код, не ваши учётные данные и не ваши данные, потому что ничего из этого 1ADK никогда не хранил.

Нет. В продукте нет ни одного исходящего соединения от 1ADK к машине клиента и нет ни одного доступа, который такое соединение разрешал бы. Любой обмен начинается с вашей стороны по HTTPS.

Ключ на один проект. Он позволяет этой машине открыть задание по этому проекту, прочитать инструкцию ждущего задания, отправить обратно одно описание по нему и спросить, что с ним стало. Это закрытый список, и ни одна из этих возможностей не принимает ни адреса, ни пути, ни команды, — направить её куда-то ещё нечем. Ни до какого другого вашего проекта он не дотягивается. Он выдан машине, а не 1ADK: он разрешает обращения в сторону 1ADK и ничего в обратную сторону. Отозвать его можно на странице подключения, и отзыв срабатывает на следующем обращении этой машины. 1ADK хранит только одностороннюю свёртку ключа, поэтому прочитать его из базы нельзя.

Нет. 1ADK — новый продукт, и ничего из этого у него нет. Заявить обратное значило бы поставить на эту страницу первое, что покупатель сможет опровергнуть, поэтому это сказано здесь, а не опущено.

Для клиентских аккаунтов пока нет: вход сегодня — почта и пароль плюс восстановление. Внутренние администраторские учётные записи, которые создаются только из командной строки и никогда самостоятельно, второй фактор требуют. Клиентский второй фактор — это пробел, и он назван пробелом.

У каждого проекта своё изолированное хранилище. В продукте нет запроса, который читает сразу два проекта, а у публичного сайта нет вообще никаких доступов к базе: это отдельное приложение, которое не дотянулось бы до данных проектов, даже если бы его скомпрометировали.

Напишите на security@1adk.com. Приложите достаточно деталей, чтобы её можно было воспроизвести. Программы вознаграждений нет, юридических угроз тоже нет: на сообщение отвечает человек.

Посмотрите, что именно получает 1ADK.

Разобранный пример пакета свидетельств, поле за полем: что уходит и что не уходит. Без аккаунта и без установки.

Открыть предпросмотр метаданных Прочитать страницу о приватности