Відкритий мережевий доступ до контейнерів

Відкритий мережевий доступ до контейнерів

Один опублікований порт — і база даних в інтернеті.

Що таке Відкритий мережевий доступ до контейнерів?

Публікація порту контейнера за замовчуванням прив'язує його до кожного інтерфейсу хоста, тож зіставлення, додане для локальної зручності, може виставити базу даних у публічний інтернет, а брандмауер хоста й далі показуватиме порт як заборонений. Спершу ви станете на бік зловмисника: проскануєте хост, підключитеся прямо до бази даних зі старим викраденим паролем і прочитаєте клієнтські записи без жодного застосунку на шляху. Потім прив'яжете зіставлення до 127.0.0.1, перевірите ззовні й заміните облікові дані, до яких був доступ.

Що ви дізнаєтесь у Відкритий мережевий доступ до контейнерів

Відкритий мережевий доступ до контейнерів — Кроки навчання

  1. База даних у відкритому інтернеті

    Боб ще нікуди не проник. Кілька місяців тому він купив дамп, у якому були облікові дані до бази даних Halvexis лише для читання, але облікові дані марні, якщо до бази неможливо дістатися. Тож він сканує хости сховищ даних компанії, щоб побачити, чи відповідає хоч один із них ззовні.

  2. Просто в базу, без застосунку

    Немає ні сторінки входу, ні API, ні обмеження частоти запитів. Опублікований порт бази даних спілкується сирим протоколом Postgres з будь-ким, хто може до нього дістатися. Боб спрямовує клієнт бази даних просто на нього й автентифікується обліковими даними, які в нього вже були.

  3. Прочитайте таблицю residents

    Облікові дані лише для читання — це все, що потрібно Бобу. Він робить запит до таблиці, де зберігаються орендарі платформи та їхні дані, просто з продакшну. Боб мав саме ці облікові дані місяцями й жодного разу ними не скористався.

  4. Що змінилося

  5. Моніторинг помічає трафік

    У компанії Halvexis на продакшн-хостах працює хмарний моніторинг. Він не знає, для чого потрібна база даних, — він повідомляє про те, що побачив.

  6. Знайдіть відкритий порт

    Якщо брандмауер і далі забороняє 5432, то щось на хості пропускає трафік повз нього: те, як контейнер опублікував свій порт. Аліса виводить список контейнерів і читає єдиний стовпець, який показує, до яких інтерфейсів прив'язано порт.

  7. Де опубліковано порт

    Зіставлення портів береться з файлу Compose, який описує стек. Аліса відкриває його, щоб побачити рядок, який опублікував 5432.

  8. Рядок, який усе зробив

    Одне зіставлення, записане так, як розробник пише його на своєму ноутбуці, — і саме воно виставило базу даних в інтернет, коли цей стек потрапив у продакшн.

  9. Прив'язка до localhost

    API звертається до бази даних через мережу Compose за назвою сервісу, а не через опублікований порт хоста. Тож зіставлення на хості зовсім не обов'язково робити публічним. Аліса прив'язує його до інтерфейсу loopback, і через це зіставлення до бази даних може дістатися лише сам хост.

  10. Прочитайте виправлену прив'язку

    Змінюється лише префікс інтерфейсу, але це й усе виправлення. Перш ніж розгортати стек заново, Аліса проходить прив'язане зіставлення, щоб побачити, що саме тепер доступне і звідки.

Охоплення стандартів безпеки

CWE

  • CWE-668 Exposure of Resource to Wrong Sphere
  • CWE-306 Missing Authentication for Critical Function

MITRE ATT&CK

  • T1046 Network Service Discovery
  • T1210 Exploitation of Remote Services

CIS Controls

  • CIS 12 Network Infrastructure Management

NIST CSF

  • PR.AT-02 Individuals in specialized roles are provided with awareness and training so that they possess the knowledge and skills to perform relevant tasks with cybersecurity risks in mind
  • PR.IR Technology Infrastructure Resilience