{"id":"CVE-2026-99165","kind":"vulnerability","aliases":["CVE-2026-99165"],"related":[],"title":"Linux kernel SCTP: stream removed during connect wait causes NULL dereference","description":"In the Linux kernel, the following vulnerability has been resolved:\n\nsctp: revalidate output stream after association connect wait\n\nWhen message interleaving is enabled, the first send waits for association\nestablishment before building its data chunks.  The wait drops the socket\nlock, and handshake processing can reduce the output stream count to the\npeer-advertised inbound stream count.  sctp_stream_init() then frees the\nextension of every removed stream.\n\nThe sender resumes with the stream that it checked before the wait.  If the\npeer removed that stream, sctp_outq_tail() later dereferences its NULL\nextension.  Fatal-oops policies then panic the host.\n\nKASAN: null-ptr-deref in range [0x38-0x3f]\nRIP: sctp_outq_tail+0x49e/0xaa0\nCall Trace:\n sctp_primitive_SEND\n sctp_sendmsg_to_asoc\n sctp_sendmsg\n\nA range check alone is insufficient.  Stream reconfiguration can grow the\noutput count again while the lock is released without recreating extensions\nfreed by the earlier shrink.  The stream can then be in range while its\nextension remains NULL.  The send-buffer wait has the same issue.\n\nFactor the range and extension checks into a helper and repeat both after\neach send-path wait that drops the socket lock.  Once the lock is\nreacquired, the validation remains stable through data creation and\nqueueing.\n\nIf validation fails after the connect wait, the auto-created association is\nalready established.  Return ESRCH so the existing caller path keeps it\nunder state-machine ownership instead of freeing it directly, which would\nleave protocol, counter and socket state inconsistent.","summary":"When SCTP message interleaving is enabled, a send that waits for association setup can resume using an output stream the peer removed during the handshake, dereferencing a freed extension. An attacker-controlled peer can crash the host, and the sources describe a kernel oops or panic under fatal-oops policies.","severity":"unknown","cvss":null,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["linux-kernel","runtime","sctp","self-hosted"],"not_affected_if":["no-sctp-use"],"how_to_check":null,"fix":null,"status":"open","published_at":"2026-10-28T11:17:36+00:00","first_seen_at":"2026-10-28T11:32:36+00:00","triaged_at":"2026-10-28T11:35:41+00:00","updated_at":"2026-10-28T11:35:41+00:00","category":"runtime","confidence":0.5,"triage":{"at":"2026-10-28T11:35:41Z","model":"claude-haiku-5-5","output":{"fix":"unknown","reach":"network","title":"Linux kernel SCTP: stream removed during connect wait causes NULL dereference","impact":"medium","summary":"When SCTP message interleaving is enabled, a send that waits for association setup can resume using an output stream the peer removed during the handshake, dereferencing a freed extension. An attacker-controlled peer can crash the host, and the sources describe a kernel oops or panic under fatal-oops policies.","category":"runtime","nicknames":[],"who_cares":["linux-kernel","sctp","self-hosted"],"confidence":0.5,"needs_auth":"no","worst_case":"Kernel NULL dereference crashes the host, or panics under fatal-oops policy.","analyst_note":"Find the fixed kernel versions and stable backport commits for CVE-2026-99165 in the kernel.org stable tree or the NVD entry.","how_to_check":"unknown","needs_analyst":true,"not_affected_if":["no-sctp-use"],"who_is_affected":"Hosts running a Linux kernel with SCTP support where applications send SCTP messages with message interleaving enabled and a fresh association. The sources do not name affected kernel versions or say whether the SCTP module is loaded by default on common distributions. Systems that do not use SCTP are not exposed.","user_interaction":"no","needs_special_setup":"yes","severity_if_unknown":"unknown"},"cost_usd":0.000619,"input_tokens":3757,"output_tokens":486,"severity_before":"unknown"},"analyst_status":null,"analyst_note":null,"search":"'+0':195C '-2026':13A,16A '-99165':14A,17A '0x38':189C '0x38-0x3f':188C '0x3f':190C 'advertis':132C 'alon':211C 'alreadi':306C 'asoc':205C 'associ':37B,93C,106C,304C 'attack':57B 'attacker-control':56B 'auto':302C 'auto-cr':301C 'buffer':250C 'build':109C 'call':197C 'caller':313C 'caus':9A 'check':155C,210C,261C 'chunk':112C 'connect':7A,94C,298C 'control':58B 'count':127C,135C,220C 'counter':331C 'crash':61B 'creat':303C 'creation':290C 'cve':12A,15A 'data':111C,289C 'deref':185C 'derefer':11A,169C 'dereferenc':51B 'describ':67B 'direct':326C 'drop':115C,275C 'earlier':233C 'enabl':31B,100C 'esrch':309C 'establish':107C,307C 'everi':144C 'exist':312C 'extens':54B,142C,172C,229C,244C,260C 'factor':256C 'fail':295C 'fatal':75B,174C 'fatal-oop':74B,173C 'first':102C 'follow':83C 'free':140C,324C 'freed':53B,230C 'grow':217C 'handshak':50B,120C 'helper':264C 'host':25B,63B,180C 'inbound':133C 'inconsist':335C 'init':138C 'instead':322C 'insuffici':213C 'interleav':29B,98C 'issu':255C 'kasan':181C 'keep':315C 'kernel':2A,20B,69B,81C 'later':168C 'leav':329C 'linux':1A,19B,80C 'linux-kernel':18B 'lock':118C,224C,278C,281C 'machin':320C 'messag':28B,97C 'null':10A,171C,183C,246C 'null-ptr-deref':182C 'oop':70B,76B,175C 'output':43B,90C,125C,219C 'outq':166C,193C 'ownership':321C 'panic':72B,178C 'path':272C,314C 'peer':46B,59B,131C,161C 'peer-advertis':130C 'polici':77B,176C 'primit':200C 'process':121C 'protocol':330C 'ptr':184C 'queue':292C 'rang':187C,209C,241C,258C 'reacquir':283C 'reconfigur':215C 'recreat':228C 'reduc':123C 'releas':226C 'remain':245C,286C 'remov':5A,47B,145C,162C 'repeat':266C 'resolv':87C 'resum':40B,149C 'return':308C 'revalid':89C 'rip':191C 'runtim':21B 'sctp':3A,22B,27B,88C,136C,165C,192C,199C,202C,206C 'self':24B 'self-host':23B 'send':33B,103C,201C,249C,271C 'send-buff':248C 'send-path':270C 'sender':148C 'sendmsg':203C,207C 'setup':38B 'shrink':234C 'socket':117C,277C,333C 'sourc':66B 'stabl':287C 'state':319C,334C 'state-machin':318C 'stream':4A,44B,91C,126C,134C,137C,146C,152C,164C,214C,236C 'tail':167C,194C 'trace':198C 'use':41B 'valid':285C,294C 'vulner':84C 'wait':8A,35B,95C,104C,114C,158C,251C,273C,299C 'without':227C 'would':328C 'x49e/0xaa0':196C","nicknames":[],"mitigations":[],"who_affected":"Hosts running a Linux kernel with SCTP support where applications send SCTP messages with message interleaving enabled and a fresh association. The sources do not name affected kernel versions or say whether the SCTP module is loaded by default on common distributions. Systems that do not use SCTP are not exposed.","tier":"C","verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-28T11:17:36+00:00","kev":null,"cvss_vector":null,"cvss_by":null,"poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-99165","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-99165","severity":null,"published_at":"2026-10-28T11:17:36+00:00","modified_at":"2026-10-28T11:17:36+00:00","first_seen_at":"2026-10-28T11:32:36+00:00","fetched_at":"2026-10-28T11:32:36+00:00","note":null}],"documents":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}