squid:4 security, bug fix, enhancement update
エラータID: AXSA:2021-1405:01
以下項目について対処しました。
[Security Fix]
- Squid はリクエストを受けたとき、リクエストの完全 URL の MD5 ハッシュを作成してキャッシュを確認し、
応答できるかチェックしますが、完全 URL にはドメインの先頭に特定のプロトコル用のデコードされた
ユーザー情報(ユーザー名とパスワード)を含めることができるため、攻撃者はドメインを区切る
特殊文字を持つユーザー名を提供し、URL の残りの部分をパスや問い合わせ文字列として扱うことにより、
最初にエンコードされたユーザー名を使って攻撃者のドメインへのリクエストを作成し、
正確な URL にデコードされたターゲットドメインへのリクエストが来た際に、実際の HTML ではなく
攻撃者の HTML を提供してしまうとともに、リバースプロキシとして動作している Squid サーバーでは、
攻撃者が ESI のようなリバースプロキシだけが使用できる機能にもアクセスできてしまう脆弱性があります。
(CVE-2019-12520)
- Squid には、ESIElement のスタックを ESIContext 内のバッファに addStackElement を通じて保持する際、
addStackElement が バッファ内のエレメント数をチェックしますが、エレメント数が 1 の場合は
チェックされないため、1 エレメントの場合にヒープ領域のバッファーオーバフローが発生すると、
同じ ESIContext 内の隣接するするメモリブロックに影響し、動作中のクラッシュに繋がる脆弱性があります。
(CVE-2019-12521)
- Squid には、URN リクエストの処理中に対応する HTTP リクエストが作成されますが、この HTTP リクエストは
着信した HTTP リクエストが通過するアクセスチェックを通過しないため、全てのアクセスチェックがバイパスされ、
制限された HTTP サーバーへのアクセスが可能になる脆弱があります。(CVE-2019-12523)
- Squid は標準で管理者向けの詳細なサーバー情報を提供するキャッシュマネージャーへのアクセスを
ブロックするようになっており、このルールは url_regex を通じて実装されていますが、url_regex のハンドラは
着信したリクエストの URL をデコードするようになっているため、攻撃者が url_regex のチェックをバイパスするよう
自身の URL をエンコードすることで、ブロックされたリソースへアクセスできる脆弱性があります。(CVE-2019-12524)
- Squid には、URN レスポンスを処理中にヒープ領域でバッファーオーバーフローが発生する脆弱性があります。
(CVE-2019-12526)
- Squidには、巧妙に細工されたFTPサーバーがヒープメモリから、他のユーザーセッションや squid 以外の
プロセスの情報を漏洩させることが可能な脆弱性があります。(CVE-2019-12528)
- Squid には、ベーシック認証を使うよう設定されている場合、Proxy-Authorization ヘッダが uudecode により
解析されますが、uudecode が決定したデコードするバイト数が入力バッファよりも大きくないか保証するための
チェックをしていないため、隣接するメモリ内のデータも同様にデコードされてしまう脆弱性があります。
(CVE-2019-12529)
- Squid には不正確な文字列ターミネーションが原因で cachemgr.cgi が未割当のメモリにアクセスする問題があり、
メモリアクセスを保護しているシステムでは CGI プロセスが予期せずに終了してしまい、CGIを使用している
全てのクライアントへのサービス拒否を引き起こす脆弱性があります。(CVE-2019-12854)
- Squid には、不正確な入力検証が原因でヒープ領域でのバッファーオーバーフローが発生するため、
プロキシーを使用している全てのクライアントへのサービス拒否を引き起こす脆弱性があります。(CVE-2019-18676)
- Squid には、append_domain 設定を使用すると、ホスト名の長さ制限と追加された文字列が正しく相互作用しない
問題があり、不正確なメッセージ処理が原因で配信先ではない発信元にトラフィックが不適切にリダイレクトされる
脆弱性があります。(CVE-2019-18677)
- Squid には、攻撃者が HTTP リクエストをフロントエンドのソフトウェアから、HTTP リクエストパイプラインを分割する
Squid のインスタンスを通じて密かに送付できる問題があり、これによって生じるレスポンスメッセージが、攻撃者が管理する
任意の URL のコンテンツのキャッシュを破損させる脆弱性があります。(CVE-2019-18678)
- Squid には、不適切なデータ管理が原因で、HTTP ダイジェスト認証の処理中に情報漏えいを引き起こす脆弱性があります。
(CVE-2019-18679)
- Squid には、特定のウェブブラウザが使用されるとき、cachemger.cgi へのホスト名のパラメーターの HTMLを
誤って処理する脆弱性があります。(CVE-2019-18860)
- Squid には、潜在的に危険な機能を使用していることが原因で、攻撃者が管理しているHTTPS用のサーバとの接続が
開いていると、Squid や標準の証明書検証用のヘルパー機能がサービス拒否を引き起こす脆弱性があります。
(CVE-2020-14058)
- Squidには、クライアントが "+\ "-" や 一般的でない空白文字をlength値に入れて、HTTPリクエストを送ることで、
HTTP Request Smuggling や キャッシュポイズニング攻撃が可能な脆弱性があります。(CVE-2020-15049)
- Squid は peer_digest.cc内の peerDigestHandleReply が EOF を誤って処理しており、巧妙に細工された
キャッシュダイジェスト実行させることで、応答メッセージを処理させている間、全ての使用可能なCPUサイクルを
浪費させることで、信頼された相手がサービス拒否攻撃を実行できる脆弱性があります。(CVE-2020-24606)
- Squidには、入力データバリデーションが正しくないため、巧妙に細工されたHTTPリクエストにより、
セキュリティフィルタで禁止されているサーバーリソースへアクセスを許可してしまう脆弱性があります。
(CVE-2020-8449)
- Squidには、バッファ管理が正しくないため、リバースプロキシとして動いているSquidに、リモートの
クライアントがバッファオーバーフローを引き起こすことが可能な脆弱性があります。(CVE-2020-8450)
パッケージをアップデートしてください。
An issue was discovered in Squid through 4.7 and 5. When receiving a request, Squid checks its cache to see if it can serve up a response. It does this by making a MD5 hash of the absolute URL of the request. If found, it servers the request. The absolute URL can include the decoded UserInfo (username and password) for certain protocols. This decoded info is prepended to the domain. This allows an attacker to provide a username that has special characters to delimit the domain, and treat the rest of the URL as a path or query string. An attacker could first make a request to their domain using an encoded username, then when a request for the target domain comes in that decodes to the exact URL, it will serve the attacker's HTML instead of the real HTML. On Squid servers that also act as reverse proxies, this allows an attacker to gain access to features that only reverse proxies can use, such as ESI.
An issue was discovered in Squid through 4.7. When Squid is parsing ESI, it keeps the ESI elements in ESIContext. ESIContext contains a buffer for holding a stack of ESIElements. When a new ESIElement is parsed, it is added via addStackElement. addStackElement has a check for the number of elements in this buffer, but it's off by 1, leading to a Heap Overflow of 1 element. The overflow is within the same structure so it can't affect adjacent memory blocks, and thus just leads to a crash while processing.
An issue was discovered in Squid before 4.9. When handling a URN request, a corresponding HTTP request is made. This HTTP request doesn't go through the access checks that incoming HTTP requests go through. This causes all access checks to be bypassed and allows access to restricted HTTP servers, e.g., an attacker can connect to HTTP servers that only listen on localhost.
An issue was discovered in Squid through 4.7. When handling requests from users, Squid checks its rules to see if the request should be denied. Squid by default comes with rules to block access to the Cache Manager, which serves detailed server information meant for the maintainer. This rule is implemented via url_regex. The handler for url_regex rules URL decodes an incoming request. This allows an attacker to encode their URL to bypass the url_regex check, and gain access to the blocked resource.
An issue was discovered in Squid before 4.9. URN response handling in Squid suffers from a heap-based buffer overflow. When receiving data from a remote server in response to an URN request, Squid fails to ensure that the response can fit within the buffer. This leads to attacker controlled data overflowing in the heap.
An issue was discovered in Squid before 4.10. It allows a crafted FTP server to trigger disclosure of sensitive information from heap memory, such as information associated with other users' sessions or non-Squid processes.
An issue was discovered in Squid 2.x through 2.7.STABLE9, 3.x through 3.5.28, and 4.x through 4.7. When Squid is configured to use Basic Authentication, the Proxy-Authorization header is parsed via uudecode. uudecode determines how many bytes will be decoded by iterating over the input and checking its table. The length is then used to start decoding the string. There are no checks to ensure that the length it calculates isn't greater than the input buffer. This leads to adjacent memory being decoded as well. An attacker would not be able to retrieve the decoded data unless the Squid maintainer had configured the display of usernames on error pages.
Due to incorrect string termination, Squid cachemgr.cgi 4.0 through 4.7 may access unallocated memory. On systems with memory access protections, this can cause the CGI process to terminate unexpectedly, resulting in a denial of service for all clients using it.
An issue was discovered in Squid 3.x and 4.x through 4.8. Due to incorrect input validation, there is a heap-based buffer overflow that can result in Denial of Service to all clients using the proxy. Severity is high due to this vulnerability occurring before normal security checks; any remote client that can reach the proxy port can trivially perform the attack via a crafted URI scheme.
An issue was discovered in Squid 3.x and 4.x through 4.8 when the append_domain setting is used (because the appended characters do not properly interact with hostname length restrictions). Due to incorrect message processing, it can inappropriately redirect traffic to origins it should not be delivered to.
An issue was discovered in Squid 3.x and 4.x through 4.8. It allows attackers to smuggle HTTP requests through frontend software to a Squid instance that splits the HTTP Request pipeline differently. The resulting Response messages corrupt caches (between a client and Squid) with attacker-controlled content at arbitrary URLs. Effects are isolated to software between the attacker client and Squid. There are no effects on Squid itself, nor on any upstream servers. The issue is related to a request header containing whitespace between a header name and a colon.
An issue was discovered in Squid 2.x, 3.x, and 4.x through 4.8. Due to incorrect data management, it is vulnerable to information disclosure when processing HTTP Digest Authentication. Nonce tokens contain the raw byte value of a pointer that sits within heap memory allocation. This information reduces ASLR protections and may aid attackers isolating memory areas to target for remote code execution attacks.
Squid before 4.9, when certain web browsers are used, mishandles HTML in the host (aka hostname) parameter to cachemgr.cgi.
An issue was discovered in Squid before 4.12 and 5.x before 5.0.3. Due to use of a potentially dangerous function, Squid and the default certificate validation helper are vulnerable to a Denial of Service when opening a TLS connection to an attacker-controlled server for HTTPS. This occurs because unrecognized error values are mapped to NULL, but later code expects that each error value is mapped to a valid error string.
An issue was discovered in http/ContentLengthInterpreter.cc in Squid before 4.12 and 5.x before 5.0.3. A Request Smuggling and Poisoning attack can succeed against the HTTP cache. The client sends an HTTP request with a Content-Length header containing "+\ "-" or an uncommon shell whitespace character prefix to the length field-value.
Squid before 4.13 and 5.x before 5.0.4 allows a trusted peer to perform Denial of Service by consuming all available CPU cycles during handling of a crafted Cache Digest response message. This only occurs when cache_peer is used with the cache digests feature. The problem exists because peerDigestHandleReply() livelocking in peer_digest.cc mishandles EOF.
An issue was discovered in Squid before 4.10. Due to incorrect input validation, it can interpret crafted HTTP requests in unexpected ways to access server resources prohibited by earlier security filters.
An issue was discovered in Squid before 4.10. Due to incorrect buffer management, a remote client can cause a buffer overflow in a Squid instance acting as a reverse proxy.
N/A
SRPMS
- libecap-1.0.1-2.module+el8+1170+19b6248b.src.rpm
MD5: 029b419ec78d7c25892f5f2f0977b33c
SHA-256: 900d8533a5495b4a42c1f7c99ea152fe517b1cae80c86ccb9c4cbed69da93756
Size: 343.58 kB - squid-4.11-3.module+el8+1170+19b6248b.src.rpm
MD5: 1d9016fb34a6c485b13bbff9f02f7238
SHA-256: 7eb22c196ec1744e04afa2e1f39dd8fbd97bb7fc0c3fa8e4e5099aab6c969b69
Size: 2.42 MB
Asianux Server 8 for x86_64
- libecap-1.0.1-2.module+el8+1170+19b6248b.x86_64.rpm
MD5: 7d2b5776f2c8dfccdb55b75e72479f33
SHA-256: ef8c559edfade6fab8e2af452ec29731272ce995c3d8de2d83202c81b308e81e
Size: 27.79 kB - libecap-debugsource-1.0.1-2.module+el8+1170+19b6248b.x86_64.rpm
MD5: 68ea2c0d1d934c546e79086d8274ece1
SHA-256: b424fc9a996205ef5882adedf6083c4dd2591f458c41ce241a93b82a84b2bdd2
Size: 18.92 kB - libecap-devel-1.0.1-2.module+el8+1170+19b6248b.x86_64.rpm
MD5: e8ac65430a390b6b33cb289291f4e8b8
SHA-256: cd753d9d4fa50be5c14f1b5375d91e5bcd2333d6e820f265d9e26b804b9421d4
Size: 20.45 kB - squid-4.11-3.module+el8+1170+19b6248b.x86_64.rpm
MD5: 1f9f03febe38db831b6a160d59aa7289
SHA-256: 21236e18bb4c42c05858dcd1251089d5e03cd438c4342aa2133345abee9dfdf8
Size: 3.56 MB - squid-debugsource-4.11-3.module+el8+1170+19b6248b.x86_64.rpm
MD5: d705eefd78b5303c094f9aee1ec7c4a8
SHA-256: a1bdd618c2176ca4537f9500aa66082b7353325f63587d5f586d1bc9c6588311
Size: 1.73 MB