Разработчиците на сървърната 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
