DragonFlyBSD Kernel Audit
DF-0457 / fix_run.log
← back to finding ↓ download raw
=== DF-0457: ng_pppoe unchecked ph->length -> heap OOB read ===

Actual mbuf payload: 4 bytes after tag[0] start
ph->length claims: 2000 bytes after tag[0] start

Searching for tag 0x0101 (Service-Name):
  Found tag type=0x0101 at step 1

Searching for tag 0xFFFF (non-existent — forces full walk):

  BUG CONFIRMED: get_tag walks up to ph->length bytes past tag[0],
  reading adjacent kernel heap. The m_pullup+contiguity check at
  ng_pppoe.c:952-968 does NOT bound ph->length vs actual data.

  Additionally, scan_tags + insert_tag(PTT_RELAY_SID) + make_packet
  copies up to 1500 bytes of the inflated buffer into the response,
  leaking kernel heap to the attacker via Relay-Session-Id.
RUN_EXIT=0