Автор: Serguey Shinder
Я не написав того вразливого коду. Я просто додав чужу бібліотеку — маленьку, зручну, популярну — і довірився їй, навіть не задумавшись. Одна команда встановлення, і в моєму застосунку опинився код, якого я ніколи не читав, від людей, яких ніколи не бачив. Тоді це здавалося очевидним і нормальним. Так роблять усі.
Проблема прийшла звідти, звідки я не чекав. У тій бібліотеці — або в одній з бібліотек, від яких вона залежала, — виявилася вразливість. Я не помилявся у власному коді; я успадкував чужу помилку, просто довірившись. І тієї миті я зрозумів, наскільки величезна поверхня, якій я мовчки довіряю щодня: десятки чужих пакетів, кожен зі своїми залежностями, кожен зі своїм доступом до мого застосунку.
Це змінило моє ставлення до залежностей. Раніше я бачив у них лише зручність — готове рішення, яке економить час. Тепер я бачу і другий бік: кожна залежність — це довіра, яку я надаю комусь, кого не контролюю. Її код виконується з тими самими правами, що й мій. Її вразливість стає моєю. Її компрометація стає моєю проблемою.
Я не перестав користуватися чужими бібліотеками — без них сучасну розробку не уявити. Але я перестав додавати їх бездумно. Тепер я питаю: чи справді це потрібно, чи можу написати сам простіше; хто це підтримує; наскільки велике дерево залежностей я тягну разом з однією зручною функцією. І я стежу за оновленнями безпеки так само уважно, як за власним кодом, бо чужа діра ранить не менше за мою.
Найнебезпечніше в безпеці — не завжди те, що ти написав сам. Іноді це те, чому ти довірився не думаючи. Ланцюг постачання твого коду настільки надійний, наскільки надійна його найслабша, забута ланка.
– Serguey Asael Shinder
Leave a comment