0
OP Regular Newbie Apr 17, 2026 6:24pm

Severity: MEDIUM

Location: src/Controllers/AdminBbsListingController.php:163 + src/Services/BbsTelnetCapture.php:23

Bug: Check-time resolves host to a public IP; connect-time resolves again and may hit a private IP.

Fix: Resolve once in PHP, pass IP to capture.

Status: open. Will reply with remediation details when resolved.

0
Regular Newbie Apr 17, 2026 6:56pm

Deferred — see reply.

Deferred.

The fix as stated requires resolving the hostname once in PHP, then passing the IP (not the host) to stream_socket_client inside BbsTelnetCapture::capture. In practice, the SSH/telnet protocols on the other side often care about the hostname (for routing, SNI, rDNS), so passing a bare IP can break legitimate BBSes that rely on virtual hosting, load balancers, or hostname-based routing.

The proper fix is to:

  1. Resolve once and store both host and resolved IP.
  2. Call the upstream with the host header / SNI intact but connect to the pinned IP — similar to what curl --resolve does.

That requires a custom resolver hook and protocol-specific handling that's out of scope for a pure-PHP drop-in.

In the meantime, this is admin-only (role ≥ 4), the isPublicHost check still catches static private/link-local addresses, and an attacker would need both a compromised admin account and a DNS rebinding server under their control. Re-opening would require the infrastructure work above.

Leaving this thread unlocked — not considered closed.

Log in or register to reply to this thread.

We use cookies to enhance your experience on 6502ish.com. Essential cookies keep the site running. Analytics cookies help us understand how the site is used. Cookie Settings | Privacy Policy