Залишковий налагоджувальний код
Помилкою була сама перевірка. Одна одруківка залишила налагоджувальний маршрут відкритим.
Що таке Залишковий налагоджувальний код?
Помилка не у функції, а в перемикачі, який мав її вимикати. Налагоджувальний маршрут захищає себе змінною середовища з одруківкою, порівняння перетворюється на undefined !== 'production' , і маршрут відповідає в продакшні. Ви перебираєте налагоджувальні шляхи, поки /api/_debug/env не поверне пароль до бази даних, ключ підпису JWT і робочі хмарні ключі, а потім підробляєте токен адміністратора цим ключем. Виправлення — ротація всіх викрадених облікових даних і виключення маршруту з продакшн-бандла під час збірки.
Що ви дізнаєтесь у Залишковий налагоджувальний код
- Розпізнавайте відкритий налагоджувальний маршрут як різновид неправильної конфігурації безпеки: вада в перевірці, а не в логіці, яку вона захищає
- Розумійте, що перевірки змінних середовища під час виконання мовчки ламаються через одруківки (<code>process.env.UNDEFINED</code> повертає undefined без помилки), тому позитивні списки дозволених із явним порівнянням безпечніші за негативні списки заборонених
- Застосовуйте негайне виправлення (ротація всіх викрадених облікових даних, перехід перевірки на явний список дозволених із правильною назвою змінної) і системне (виключення під час збірки через DefinePlugin / esbuild --define / умовний require)
- Перевіряйте кожен ендпоінт налагодження, статусу, працездатності (health), метрик і внутрішнього адміністрування: чи немає у відповіді секретів, внутрішніх IP-адрес, версій залежностей або трасувань стека
- Засвойте: маршрути, яких не має бути в продакшні, мають бути відсутні в продакшн-бандлі, а не лишатися там під захистом перевірки
Залишковий налагоджувальний код — Кроки навчання
-
Оцініть ціль
Боб — зловмисник. Він заробляє тим, що витягає дані з компаній, які залишили щось відкритим, а потім продає їх або використовує, щоб дістатися до їхніх грошей. Сьогодні його ціль — Vessura, платформа закупівель, на якій працюють інші підприємства. Він починає звідти, звідки почав би кожен: з публічного сайту. Боб оцінює компанію, перш ніж шукати шлях усередину.
-
З'ясуйте, що відкрито
На публічному сайті немає нічого незвичайного: вхід, каталог постачальників, сторінка підтримки. Але застосунок має не лише парадний вхід. Допоміжний код для розробників, що залишився в збірці, доступний кожному, хто його шукає, тож Боб складає карту всіх ендпоінтів API порталу, які справді відповідають.
-
Зверніться до налагоджувального маршруту
Боб відтворює запит, який виявило сканування. Він спрямовує API Tester на налагоджувальний шлях і надсилає звичайний GET без входу в систему й без токена, щоб побачити, що сервер віддасть.
-
Усі секрети одним запитом
Відповідь — не сторінка помилки. Це повне середовище процесу продакшн-сервера, віддане запиту, у якому не було жодних облікових даних.
-
Підробіть токен адміністратора
Дамп віддав Бобу JWT_SECRET — ключ, яким застосунок підписує кожен токен сесії. Повернувшись у той самий термінал, Боб створює власний токен, ставить у ньому роль адміністратора, і сервер приймає його за справжній вхід.
-
Увійдіть як адміністратор
Тепер Боб використовує токен. Він звертається до внутрішнього API постачальників, призначеного лише для адміністраторів, що ввійшли в систему, і передає підроблений токен у заголовку Authorization , щоб сервер вважав його одним із них. У терміналі зліва досі лишається токен, який він щойно створив.
-
Реєстр відкрито
Сервер довірився токену й відповів. Тепер Боб читає внутрішній реєстр постачальників через публічний API, не маючи власного облікового запису.
-
Перевірка знань
-
Надходить сповіщення DLP
Ви відповідаєте за портал закупівель Vessura. Уночі система запобігання втраті даних (DLP), що стежить за вихідним трафіком, спрацювала на відповідь, яка винесла з сервера робочі секрети. Центр моніторингу безпеки надіслав вам подробиці електронною поштою.
-
Відкрийте обробник
Відкрийте налагоджувальний обробник і подивіться, як він вирішує, відповідати чи ні.
Охоплення стандартів безпеки
OWASP Top 10
- A02:2025 Security Misconfiguration
- A05:2021 Security Misconfiguration
CWE
- CWE-489 Active Debug Code
- CWE-215 Insertion of Sensitive Information Into Debugging Code
CIS Controls
- CIS 16 Application Software Security
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.PS Platform Security