Участники WordPress оперативно подготовили обновление 6.4.1 из-за возникновения критического бага с библиотекой Requests. Эта ошибка вызывала проблемы с обновлениями на серверах, работающих с более старыми версиями cURL.
Хостинговые компании начали сообщать о широком распространении данной ошибки. Том Соммер из крупнейших хостинговой компании Дании опубликовал проблему на GitHub, где он описал, как тайм-ауты cURL влияют на сайты.
Отсутствие заголовка Connection: Close приводит к разрыву подключений к https://api.wordpress.org/ и ко многим другим сайтам при использовании Curl 7.29.0 (а возможно, и других версий).
Выдается ошибка:
Error: RuntimeException: Failed to get url ‘https://api.wordpress.org/core/version-check/1.7/?locale=en_US’: cURL error 28: Operation timed out after 10000 milliseconds with 807 out of -1 bytes received.
Также появились проблемы с REST API в Site Health: REST API response: (http_request_failed) cURL error 28: Operation timed out after 10005 milliseconds with XXX out of XXX bytes received”
Невозможно обновлять плагины, ядро WordPress, практически все, что зависит от внутреннего обработчика Curl в WordPress.
Проблема стала высокоприоритетной, поскольку не было ясно, каким образом пользователям предоставить обновление.
«Даже если ее исправить сейчас, проблема не дает автоматически обновиться до версии 6.4.1, так как она ломает запросы Curl, поэтому пользователям нужно будет обновляться вручную,» — сказал Соммер. «Чем дольше мы ждем, тем шире будут последствия».
Nexcess сообщила о том, что от этой ошибки пострадали десятки тысяч сайтов. Проблема выходит за рамки того, что большая часть пользователей смогла бы устранить самостоятельно, и вынуждает хостинг-провайдеров разрабатывать способы обновления для своих клиентов.
«Все мои веб-сайты заблокированы после обновления до WordPress 6.4», — сообщил Хавьер Мартин Гонсалес. «Те, которые не обновлялись, работают нормально».
Также сообщалось, что эта ошибка вызывает потенциальные проблемы с API Stripe, WP-Admin и производительностью.
Менеджер продукта Liquid Web/Nexcess Тиффани Бридж подвела итог тому, как возникла эта проблема:
Похоже на то, что:
- Кто-то нашел баг, связанный с взаимодействием определенной системы предотвращения вторжений (Intrusion Protection System) и WordPress.
- Затем он самостоятельно сделал свой патч для WordPress.
- Руководитель проекта по данной области попросил автора предоставить тесты, но он этого не сделал.
- Тем не менее, они все равно приняли запрос на изменения (PR), несмотря на отсутствие тестов.
- В итоге хостингам нужно самостоятельно откатывать это изменение на своих серверах, чтобы клиенты могли продолжать получать обновления ядра и плагинов, если применяется затронутая версия cURL (7.29, что подтверждено, но, возможно, есть другие).
Ключевые участники разработки WordPress должны выяснить, как этот баг проскользнул в ядро, путем проведения анализа или других дискуссий, чтобы предотвратить подобные инциденты в будущем в таком масштабе.
Релиз WordPress 6.4.1 включает в себя обновление библиотеки Requests с версии 2.0.8 до 2.0.9 в качестве хотфикса для устранения проблемы. Изменение, вызывающее сбои и принятое без тестов, в итоге откатывается. Версия 6.4.1 также содержит исправления для трех других отдельных проблем. Автоматические обновления будут направлены сегодня вечером всем владельцам сайтов, у которых включена соответствующая опция.
Источник: wptavern.com