Залишки коду налагодження
Ворота були жуком. Одна помилка залишила маршрут налагодження відкритим.
Що таке Залишки коду налагодження?
Недолік тут полягає не в функції, а в перемикачі, призначеному для її вимкнення. Маршрут налагодження захищається змінною середовища з помилкою, порівняння стає undefined !== 'production' , а маршрут відповідає у виробництві. Ви очищуєте шляхи налагодження, доки /api/_debug/env не поверне пароль бази даних, секрет підпису JWT і ключі живої хмари, а потім створіть маркер адміністратора з цим секретом. Виправлення змінює всі витоку облікових даних і виключає маршрут із робочого комплекту під час створення.
Що ви дізнаєтесь у Залишки коду налагодження
- Визнайте виявлення маршруту налагодження як режим помилки безпеки через неправильну конфігурацію, шлюз є помилкою, а не логіка, яку шлюз захищає
- Зрозумійте, що шлюзи env-var під час виконання миттєво виключають помилки (<code>process.env.UNDEFINED</code> повертає undefined, без помилок), тому позитивні дозволені списки з явною рівністю безпечніші за негативні заборонені списки
- Застосуйте негайне виправлення (оберніть усі витоку облікових даних, перейдіть до явного дозволеного списку з правильною назвою env-var) і системне виправлення (виключення під час збирання через DefinePlugin / esbuild --define / умовне вимагання)
- Аудит кожного налагодження, стану, справності, показників і внутрішньої кінцевої точки адміністратора для вмісту відповідей, який включає секрети, внутрішні IP-адреси, версії залежностей або трасування стека
- Інтерналізувати: маршрути, які не повинні існувати у виробництві, повинні бути відсутніми в пакеті виробництва, не присутні, але закриті
Залишки коду налагодження — Кроки навчання
-
Збільште розмір мішені
Боб — злий актор. Він заробляє на життя, витягуючи дані з компаній, які щось розкрили, а потім продає їх або використовує для отримання їхніх грошей. Сьогодні його метою є Vessura, платформа закупівель, на якій працюють інші компанії. Він починає там, де будь-хто, на публічному сайті, оцінюючи компанію, перш ніж шукати шлях.
-
Намалюйте те, що відкрито
На публічному сайті немає нічого незвичайного: логін, каталог постачальників, сторінка підтримки. Але додатки поставляються не лише з передніми дверима. Скаффолд розробника, що залишився в збірці, залишається доступним для всіх, хто шукає, тому Боб відображає кожен шлях, на який насправді відповідає API порталу.
-
Вирушайте на шлях налагодження
Боб перебудовує запит, позначений скануванням. Він вказує тестувальнику API на шлях налагодження та надсилає звичайний GET без логіна та маркера, щоб побачити, що він повертає.
-
Кожен секрет одразу
Відповідь не є сторінкою помилки. Це все середовище процесу робочого сервера, передане запиту, який не містить входу.
-
Підробити маркер адміністратора
Дамп передав Бобу JWT_SECRET , ключ, який програма використовує для підпису кожного токена сеансу. Повернувшись у той самий термінал, він карбує власний токен, ставить штамп ролі адміністратора, і сервер прийме його як справжній логін.
-
Заходьте як адмін
Тепер Боб використовує маркер. Він викликає внутрішній API постачальника, сторінку, призначену лише для авторизованих адміністраторів, і переносить підроблений маркер у заголовок Authorization , щоб сервер сприймав його як одного. Термінал ліворуч все ще містить токен, який він щойно викарбував.
-
Книга відкрита
Сервер довіряв маркеру та відповів. Зараз Боб читає внутрішню книгу постачальника з публічного API, не маючи власного облікового запису.
-
Перевірка знань
Ви щойно спостерігали, як єдиний залишений шлях передає кожен секрет, а потім сеанс адміністратора. Зафіксуйте чому.
-
Попередження DLP приземляється
Ви володієте порталом закупівель Vessura. Вночі моніторинг втрати вихідних даних спрацював на відповідь, яка перенесла живі секрети з сервера. Відділ безпеки надіслав вам деталі електронною поштою.
-
Відкрийте обробник
Відкрийте обробник налагодження та подивіться, як він вирішує, чи відповідати.
Охоплення стандартів безпеки
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