Незахищеність реєстру контейнерів

Незахищеність реєстру контейнерів

A registry that allows anonymous pull leaks your source, and one that allows anonymous push lets an attacker replace the tag you deploy. Do both, then fix it with authentication, scoped push, and immutable tags.

Що таке Незахищеність реєстру контейнерів?

Реєстр контейнерів містить ваш вихідний код, конфігурацію та артефакт, який ви розгортаєте. Той, що дозволяє анонімний pull, віддає все це будь-кому, хто вгадає назву репозиторію, а той, що дозволяє анонімний push, дає зловмиснику змогу замінити тег, який ви збираєтеся випустити. Ця вправа охоплює обидві половини: спостерігайте, як зловмисник читає приватний образ, а потім отруює тег, після чого виправте це за допомогою автентифікації, обмежених прав push та незмінних тегів.

Що ви дізнаєтесь у Незахищеність реєстру контейнерів

Незахищеність реєстру контейнерів — Кроки навчання

  1. Скануйте на предмет публічного репозиторію

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

  2. Приватний репозиторій, що лишився відкритим

    Боб сканує самостійно розгорнуті реєстри в пошуках репозиторіїв, до яких у нього не мало б бути доступу. Реєстр Quenmoor відповів йому, не запитавши, хто він, і один репозиторій виділяється: внутрішній сервіс диспетчеризації.

  3. Публічний і доступний для запису

    Це внутрішній сервіс, але його політика доступу повністю відкрита. Боб переглядає два налаштування, що мають для нього значення.

  4. Завантажте його анонімно

    Жодних облікових даних, жодного членства, жодного запиту на доступ. Боб спрямовує Docker на реєстр і завантажує продакшн-образ напряму.

  5. Прочитайте їхню продакшн-конфігурацію

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

  6. Перезберіть його з бекдором

    Читання образу було крадіжкою; перезапис — це контроль. Оскільки він завантажив їхній справжній продакшн-образ, Боб перезбирає його напряму й додає один шар. Ось Dockerfile.

  7. Шар, який він додав

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

  8. Позначте його їхнім релізом

    Боб збирає отруєний образ і позначає його точно тією назвою, з якої Quenmoor розгортає продакшн, тож реєстр сприйматиме його як продакшн-реліз.

  9. Вивантажте отруєний тег

    Читання образу — це крадіжка. Перезапис — це контроль. Боб перезбирає образ із бекдором у точці входу (entrypoint) і вивантажує його назад у той самий тег, з якого Quenmoor розгортає продакшн. Реєстр приймає це, не питаючи, хто він такий.

  10. Що дало йому це вивантаження

    Наступне розгортання викотило тег Боба в продакшн, і доданий ним шар зв'язався з ним зсередини працюючого сервісу. Йому більше не потрібно діставатися Quenmoor ззовні: його код і є сервісом.