След три години разработка беше представена стабилната версия на прокси сървъра Squid 5.1, готова за употреба в работни системи (изданията 5.0.x имаха статус на бета-версии). След като версия 5.x получи статус на стабилна, в нея вече ще се извършват само корекции на уязвимости и проблеми със стабилността, като също така ще се допуска извършването на малки оптимизации. Разработката на нови функции ще се извършва в нова експериментална версия 6.0. Потребителите на предишната стабилна версия 4.x се препоръчва да планират преминаването към версия 5.x.
Основни нововъведения в Squid 5:
- В реализацията на протокола ICAP (Internet Content Adaptation Protocol), използван за интеграция с външни системи за проверка на съдържанието, е добавена поддръжка на механизма за присъединяване на данни (trailer), което позволява прикрепяне на допълнителни заглавки с метаданни след тялото на съобщението (например, може да се предаде контролна сума и информация за установени проблеми).
- При пренасочването на заявките е задействан алгоритъма „Happy Eyeballs“, който веднага използва получения IP адрес, без да чака резолвиране на всички потенциално достъпни целеви адреси IPv4 и IPv6. Вместо да се взема предвид настройката „dns_v4_first“ за определяне на реда на използване на семейства адреси IPv4 или IPv6, сега се взема предвид реда на отговор в DNS: ако при изчакване на резолвиране IP адреси първият отговор е DNS AAAA, тогава ще се използва полученото IPv6 адрес. Така настройката на предпочитаното семейство адреси сега се извършва на ниво междусетеви стени, DNS или стартиране с опция „—disable-ipv6“. Предложената промяна позволява да се ускори времето за установяване на TCP връзки и да се намали влиянието на забавянията при резолвиране в DNS.
- За използване в директивата „external_acl“ е добавен обработчик „ext_kerberos_sid_group_acl“ за удостоверяване с проверка на групи в Active Directory чрез Kerberos. За запитване относно името на групата се използва утилитата ldapsearch, предоставяна от пакета OpenLDAP.
- Поддръжката на формата на база данни Berkeley DB е обявена за остаряла поради лицензионни проблеми. Клонът Berkeley DB 5.x не е поддържан от години и остава с непоправени уязвимости, а преминаването към по-нови версии е забранено от промяната на лицензията към AGPLv3, чийто изисквания важат и за приложенията, използващи BerkeleyDB под формата на библиотека — Squid е предоставен под лицензия GPLv2, а AGPL не е съвместима с GPLv2. Вместо Berkeley DB, проектът се е прехвърлил на използване на СУБД TrivialDB, която, за разлика от Berkeley DB, е оптимизирана за едновременен паралелен достъп до базата данни. Поддръжката на Berkeley DB все още е налична, но в обработчиците «ext_session_acl» и «ext_time_quota_acl» вече е препоръчително да се използва тип хранилище «libtdb» вместо «libdb».
- Добавена е поддръжка на HTTP заглавието CDN-Loop, определено в RFC 8586, което позволява откриването на зацикляния при използване на мрежи за разпространение на съдържание (заглавието предоставя защита срещу ситуации, когато заявка, в процеса на пренасочване между CDN, по някакви причини се връща обратно в началната CDN, образувайки безкрайно зацикляне).
- В механизма SSL-Bump, позволяващ организирането на прихващане на съдържанието на шифровани HTTPS сесии, е добавена поддръжка за пренасочване на подменените (перешифровани) HTTPS заявки през други прокси-сървъри, посочени в cache_peer, с използване на стандартен тунел, основаващ се на метода HTTP CONNECT (предаването през HTTPS не се поддържа, тъй като Squid все още не може да предава TLS вътре в TLS). SSL-Bump позволява при постъпването на първата прихваната HTTPS заявка да се установи TLS връзка с целевия сървър и да се получи неговия сертификат. След това Squid използва името на хоста от действително получен от сървъра сертификат и създава фалшив сертификат, с помощта на който имитира поискан сървър при взаимодействие с клиента, като същевременно продължава да използва за получаване на данни TLS връзката, установена с целевия сървър (за да се избегне появата на предупреждения в браузерите от страна на клиента, е необходимо да се добави в хранилището на кореновите сертификати собственият сертификат, използван за генериране на фалшивите сертификати).
- Добавени са директивите mark_client_connection и mark_client_pack за свързване на марки Netfilter (CONNMARK) към клиентските TCP връзки или отделни пакети.
Веднага след публикуването на Squid 5.2 и Squid 4.17, в които са отстранени уязвимостите:
- CVE-2021-28116 — изтичане на информация при обработка на специално форматирани съобщения WCCPv2. Уязвимостта позволява на атакуващия да повреди списъка с известни маршрутизатори WCCP и да пренасочи трафика на клиентите на прокси-сервера към своя хост. Проблемът се проявява само в конфигурации с активирана поддръжка на WCCPv2 и при възможност за спуфинг на IP адреса на маршрутизатора.
- CVE-2021-41611 — грешка при проверка на TLS сертификати, която позволява достъп с използването на сертификати, които не са надеждни.
Източник: opennet.ru
