we_are_coded.by CODE · Светът, декодиран
EN
Понятие

Бъговете с паметта

ОсновитеОбновено на 13 юли 2026we are coded

Зад повечето заглавия "открита критична уязвимост" стои един и същ трик - стар колкото самия софтуер.

Проверено на13 юли 2026
Накратко: всяка програма взима назаем парче памет, докато работи, после трябва да го върне. Бъгът е в това, че понякога забравя да изтрие адреса, на който сочи, след като паметта вече е освободена. Точно там се промъква нападателят и слага свои данни, а програмата ги изпълнява, все едно са нейни. Това е "use-after-free", а братовчед му е "препълването на буфера". Двата термина стоят зад изненадващо голям дял от новините за хакнати системи.

Представи си хотелска стая, от която току-що си се изнесъл. Рецепцията вече я е дала на друг, но твоят ключ по някаква причина още работи. Влизаш вътре, оставяш нещо свое в чекмеджето, и следващият гост, без да подозира нищо, го използва като част от собствения си багаж. Точно това прави "use-after-free". Програмата казва на компютъра "приключих с тази памет", но забравя да изхвърли ключа. Нападателят влиза в същата "стая" и оставя там код, който програмата после изпълнява с пълно доверие.

Препълването на буфера е малко по-грубо. Програмата отделя място точно за, да речем, едно кратко име. Напише ли някой в полето нещо два пъти по-дълго, остатъкът се изсипва направо в паметта до него - там, където често седят самите инструкции на програмата. Пренапишеш ли внимателно тази съседна памет, буквално преписваш какво прави компютърът нататък.

Двата бъга не са екзотика. Съществуват откакто пишем софтуер на езици, които не проверяват сами границите на паметта - оставят това на програмиста. Той сгрешава. Постоянно. Защото проверката отнема ресурс, а старите езици бяха писани в епоха, в която ресурсът беше по-скъп от риска.

Затова се появи Rust. Езикът е построен така, че компилаторът те спира физически, преди да компилираш код, който би оставил ключ в чужда ръка. Правилото е вградено в самия език, не оставено на добрата воля на програмиста. Голяма част от индустрията се пренасочва натам, защото хиляди ръчни проверки не могат да надвият един компилатор, въоръжен с логика.

Ключът остава у теб дори когато стаята вече е чужда, и точно там влиза нападателят.

Естетски погледнато

Скептичен съм към всяко "открихме нова уязвимост" от последните месеци - зад голяма част от заглавията стои точно тази стара история, преоблечена в нов продукт. Не е нова категория риск. А стар дълг, който индустрията отказва да плати наведнъж.

Истината, която не звучи добре пред инвеститори, е че пренаписването на софтуер на по-сигурен език струва пари и време, а компаниите предпочитат да закърпят следващия конкретен пробив, вместо да сменят основата. Докато тази сметка не се промени, ще четем едно и също заглавие, само с друго лого отгоре.

Визуалът е генериран код-арт, без чужди изображения.
Официални първоизточници
→Chromium Security - Memory safety (около 70% от сериозните уязвимости са бъгове с паметта)→CISA/NSA - The Case for Memory Safe Roadmaps