Разработчиците на сървърната JavaScript платформа Node.js публикуваха коригиращи версии 12.22.4, 14.17.4 и 16.6.0, в които частично е отстранена уязвимостта (CVE-2021-22930) в модула http2 (клиент HTTP/2.0), позволяваща инициирането на срив на процеса или потенциално организиране на изпълнението на собствен код в системата при достъп до контролирана от злонамерен хост среда.
Проблемът е причинен от достъпа до вече освобождаваща се област от паметта при затваряне на връзката след получаване на кадри RST_STREAM (нулиране на потока) за потоците, в които се извършват интензивни операции по четене, блокиращи записването. При получаване на кадър RST_STREAM без указание за код на грешка, модулът http2 допълнително извиква процедура за почистване на вече получените данни, от която за вече затворен поток повторно се извиква обработчикът за затваряне, което води до двойно освобождаване на структурите данни.
В дискусията относно корекцията се отбелязва, че проблемът не е напълно отстранен и при малко променени условия продължава да се проявява в публикуваните актуализации. Разборът показа, че корекцията затваря само един от частните случаи — когато потокът е в режим на четене, но не отчита други състояния на потока (четене и спиране, спиране и някои видове запис).
Източник: opennet.ru
