<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
  <id>https://vulnerability.circl.lu/rss/recent/all/10</id>
  <title>Most recent entries from all</title>
  <updated>2026-10-02T17:33:19.896775+00:00</updated>
  <author>
    <name>Vulnerability-Lookup</name>
    <email>info@circl.lu</email>
  </author>
  <link href="https://vulnerability.circl.lu" rel="alternate"/>
  <generator uri="https://lkiesow.github.io/python-feedgen" version="1.0.0">python-feedgen</generator>
  <subtitle>Contains only the most 10 recent entries.</subtitle>
  <entry>
    <id>https://vulnerability.circl.lu/vuln/brew-dvc-cve-2026-62949</id>
    <title>BREW-dvc-CVE-2026-62949 — AsyncSSH: asyncio event-loop freeze via SSH maximum packet size = 0 in SSH_MSG_CHANNEL_OPEN / OPEN_CONFIRMATION</title>
    <updated>2026-10-02T17:33:19.905011+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> Homebrew: dvc</p>
<p>## Summary</p>
<p>A malicious SSH server can wedge an AsyncSSH **client**, and an authenticated
client can wedge an AsyncSSH **server**, by sending a channel `maximum packet
size` of `0` in `SSH_MSG_CHANNEL_OPEN_CONFIRMATION` (server→client) or
`SSH_MSG_CHANNEL_OPEN` (client→server). AsyncSSH stores the peer-supplied value
verbatim with no lower-bound check; the first time channel data is written,
`SSHChannel._flush_send_buf` enters a **synchronous infinite loop** that cannot
be interrupted by `asyncio.wait_for` or any timeout. The loop body has no
`await`, so it blocks the entire asyncio event loop — for a server, one
malicious authenticated channel freezes **all** current and future connections.</p>
<p>RFC 4254 §5.1 leaves receiver behavior for a peer-reported "maximum packet
size = 0" undefined, so the value must be rejected rather than stored.</p>
<p>## Root cause</p>
<p>`asyncssh/channel.py`:</p>
<p>```python
# process_open (server side)        -- line 465
self._send_pktsize = send_pktsize    # peer value, no &gt;= 1 check</p>
<p># process_open_confirmation (client) -- line 528
self._send_pktsize = send_pktsize    # peer value, no &gt;= 1 check</p>
<p># _flush_send_buf                    -- lines 305-320
while self._send_buf and self._send_window:
    pktsize = min(self._send_window, self._send_pktsize)  # 0 when peer sends 0
    buf, datatype = self._send_buf[0]
    if len(buf) &gt; pktsize:          # True for any buffered data
        data = buf[:pktsize]        # empty (b'')
        del buf[:pktsize]           # no-…</p></div>
    </content>
    <link href="https://vulnerability.circl.lu/vuln/brew-dvc-cve-2026-62949"/>
  </entry>
  <entry>
    <id>https://vulnerability.circl.lu/vuln/cleanstart-2026-ki90686</id>
    <title>CLEANSTART-2026-KI90686 — AsyncSSH is a Python package which provides an asynchronous client and server implementation of the SSHv2 protocol on t…</title>
    <updated>2026-10-02T17:33:19.905142+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> CleanStart: airflow-3</p>
<p>CVE-2026-62949 affects multiple packages. AsyncSSH is a Python package which provides an asynchronous client and server implementation of the SSHv2 protocol on top of the Python asyncio framework. See references for individual vulnerability details.</p></div>
    </content>
    <link href="https://vulnerability.circl.lu/vuln/cleanstart-2026-ki90686"/>
  </entry>
  <entry>
    <id>https://vulnerability.circl.lu/vuln/fkie_cve-2026-62949</id>
    <title>fkie_cve-2026-62949</title>
    <updated>2026-10-02T17:33:19.905181+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>AsyncSSH is a Python package which provides an asynchronous client and server implementation of the SSHv2 protocol on top of the Python asyncio framework. Prior to 2.24.0, _process_channel_open and _process_channel_open_confirmation in asyncssh/connection.py accept a peer-supplied send_pktsize value of zero. When channel data reaches SSHChannel._flush_send_buf in asyncssh/channel.py, the zero value causes each loop iteration to slice and remove zero bytes without reducing the send window, leaving the synchronous loop permanently true with no await point. A malicious SSH server can trigger the client path through SSH_MSG_CHANNEL_OPEN_CONFIRMATION before the first channel write, while an authenticated client can trigger the server path through SSH_MSG_CHANNEL_OPEN and freeze every current and future connection handled by the process. This vulnerability is fixed in 2.24.0.</p>
      </div>
    </content>
    <link href="https://vulnerability.circl.lu/vuln/fkie_cve-2026-62949"/>
  </entry>
  <entry>
    <id>https://vulnerability.circl.lu/vuln/ghsa-rw4j-r22c-9gc3</id>
    <title>GHSA-rw4j-r22c-9gc3 — AsyncSSH: asyncio event-loop freeze via SSH maximum packet size = 0 in SSH_MSG_CHANNEL_OPEN / OPEN_CONFIRMATION</title>
    <updated>2026-10-02T17:33:19.905220+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> PyPI: asyncssh</p>
<p>## Summary</p>
<p>A malicious SSH server can wedge an AsyncSSH **client**, and an authenticated
client can wedge an AsyncSSH **server**, by sending a channel `maximum packet
size` of `0` in `SSH_MSG_CHANNEL_OPEN_CONFIRMATION` (server→client) or
`SSH_MSG_CHANNEL_OPEN` (client→server). AsyncSSH stores the peer-supplied value
verbatim with no lower-bound check; the first time channel data is written,
`SSHChannel._flush_send_buf` enters a **synchronous infinite loop** that cannot
be interrupted by `asyncio.wait_for` or any timeout. The loop body has no
`await`, so it blocks the entire asyncio event loop — for a server, one
malicious authenticated channel freezes **all** current and future connections.</p>
<p>RFC 4254 §5.1 leaves receiver behavior for a peer-reported "maximum packet
size = 0" undefined, so the value must be rejected rather than stored.</p>
<p>## Root cause</p>
<p>`asyncssh/channel.py`:</p>
<p>```python
# process_open (server side)        -- line 465
self._send_pktsize = send_pktsize    # peer value, no &gt;= 1 check</p>
<p># process_open_confirmation (client) -- line 528
self._send_pktsize = send_pktsize    # peer value, no &gt;= 1 check</p>
<p># _flush_send_buf                    -- lines 305-320
while self._send_buf and self._send_window:
    pktsize = min(self._send_window, self._send_pktsize)  # 0 when peer sends 0
    buf, datatype = self._send_buf[0]
    if len(buf) &gt; pktsize:          # True for any buffered data
        data = buf[:pktsize]        # empty (b'')
        del buf[:pktsize]           # no-…</p></div>
    </content>
    <link href="https://vulnerability.circl.lu/vuln/ghsa-rw4j-r22c-9gc3"/>
  </entry>
  <entry>
    <id>https://vulnerability.circl.lu/vuln/opensuse-su-2026:11851-1</id>
    <title>openSUSE-SU-2026:11851-1 — python313-asyncssh-2.24.0-1.1 on GA media</title>
    <updated>2026-10-02T17:33:19.905282+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>python313-asyncssh-2.24.0-1.1 on GA media</p>
      </div>
    </content>
    <link href="https://vulnerability.circl.lu/vuln/opensuse-su-2026:11851-1"/>
  </entry>
  <entry>
    <id>https://vulnerability.circl.lu/vuln/pysec-2026-4026</id>
    <title>PYSEC-2026-4026 — AsyncSSH: asyncio event-loop freeze via SSH maximum packet size = 0 in SSH_MSG_CHANNEL_OPEN / OPEN_CONFIRMATION</title>
    <updated>2026-10-02T17:33:19.905306+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> PyPI: asyncssh</p>
<p>## Summary</p>
<p>A malicious SSH server can wedge an AsyncSSH **client**, and an authenticated
client can wedge an AsyncSSH **server**, by sending a channel `maximum packet
size` of `0` in `SSH_MSG_CHANNEL_OPEN_CONFIRMATION` (server→client) or
`SSH_MSG_CHANNEL_OPEN` (client→server). AsyncSSH stores the peer-supplied value
verbatim with no lower-bound check; the first time channel data is written,
`SSHChannel._flush_send_buf` enters a **synchronous infinite loop** that cannot
be interrupted by `asyncio.wait_for` or any timeout. The loop body has no
`await`, so it blocks the entire asyncio event loop — for a server, one
malicious authenticated channel freezes **all** current and future connections.</p>
<p>RFC 4254 §5.1 leaves receiver behavior for a peer-reported "maximum packet
size = 0" undefined, so the value must be rejected rather than stored.</p>
<p>## Root cause</p>
<p>`asyncssh/channel.py`:</p>
<p>```python
# process_open (server side)        -- line 465
self._send_pktsize = send_pktsize    # peer value, no &gt;= 1 check</p>
<p># process_open_confirmation (client) -- line 528
self._send_pktsize = send_pktsize    # peer value, no &gt;= 1 check</p>
<p># _flush_send_buf                    -- lines 305-320
while self._send_buf and self._send_window:
    pktsize = min(self._send_window, self._send_pktsize)  # 0 when peer sends 0
    buf, datatype = self._send_buf[0]
    if len(buf) &gt; pktsize:          # True for any buffered data
        data = buf[:pktsize]        # empty (b'')
        del buf[:pktsize]           # no-…</p></div>
    </content>
    <link href="https://vulnerability.circl.lu/vuln/pysec-2026-4026"/>
  </entry>
  <entry>
    <id>https://vulnerability.circl.lu/vuln/ubuntu-cve-2026-62949</id>
    <title>UBUNTU-CVE-2026-62949</title>
    <updated>2026-10-02T17:33:19.905356+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> Ubuntu:16.04:LTS: python-asyncssh, Ubuntu:Pro:18.04:LTS: python-asyncssh, Ubuntu:20.04:LTS: python-asyncssh, Ubuntu:Pro:22.04:LTS: python-asyncssh, Ubuntu:Pro:24.04:LTS: python-asyncssh, Ubuntu:26.04:LTS: python-asyncssh</p>
<p>AsyncSSH is a Python package which provides an asynchronous client and server implementation of the SSHv2 protocol on top of the Python asyncio framework. Prior to 2.24.0, _process_channel_open and _process_channel_open_confirmation in asyncssh/connection.py accept a peer-supplied send_pktsize value of zero. When channel data reaches SSHChannel._flush_send_buf in asyncssh/channel.py, the zero value causes each loop iteration to slice and remove zero bytes without reducing the send window, leaving the synchronous loop permanently true with no await point. A malicious SSH server can trigger the client path through SSH_MSG_CHANNEL_OPEN_CONFIRMATION before the first channel write, while an authenticated client can trigger the server path through SSH_MSG_CHANNEL_OPEN and freeze every current and future connection handled by the process. This vulnerability is fixed in 2.24.0.</p></div>
    </content>
    <link href="https://vulnerability.circl.lu/vuln/ubuntu-cve-2026-62949"/>
  </entry>
</feed>
