[PR #7006] build(deps): bump github.com/pires/go-proxyproto from 0.11.0 to 0.15.0 #29424

Open
opened 2026-08-05 08:08:03 -04:00 by saavagebueno · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/netbirdio/netbird/pull/7006
Author: @dependabot[bot]
Created: 7/30/2026
Status: 🔄 Open

Base: mainHead: dependabot/go_modules/github.com/pires/go-proxyproto-0.15.0


📝 Commits (1)

  • 5ba3d2d build(deps): bump github.com/pires/go-proxyproto from 0.11.0 to 0.15.0

📊 Changes

2 files changed (+3 additions, -3 deletions)

View changed files

📝 go.mod (+1 -1)
📝 go.sum (+2 -2)

📄 Description

Bumps github.com/pires/go-proxyproto from 0.11.0 to 0.15.0.

Release notes

Sourced from github.com/pires/go-proxyproto's releases.

v0.15.0

This release aligns the library with PROXY protocol spec 3.4 (2026/04/27). It tightens parsing and trust behavior to match the spec's requirements — which makes some previously accepted inputs and configurations fail loudly — and adds first-class support for the PROXY protocol over UDP.

⚠️ Breaking changes

The PROXY header is now required by default (2cd5f00e2b3010a0fa64f52f077a20fb304b72fa)

  • A new DefaultPolicy package variable, set to REQUIRE, is applied by NewConn and Listener.Accept when no policy is configured. The spec forbids guessing whether a header is present, so headerless connections now fail their first Read with ErrNoProxyProtocol.
  • To restore the previous lax behavior: proxyproto.DefaultPolicy = proxyproto.USE.
  • TrustProxyHeaderFrom is now strict: trusted peers get REQUIRE and untrusted peers are dropped by Accept with an error wrapping ErrInvalidUpstream. Previously, untrusted headerless clients could slip through as raw connections.

Stricter v1/v2 header parsing per spec 3.4 (5914db81c566830347865256ec22808fc39a0787)

  • v1: the full PROXY token is validated; IPv6 zone IDs are rejected; plain IPv4 addresses in TCP6 lines are rejected (set V1AcceptIPv4InTCP6 for nginx interop); ports are parsed with leading zeros rejected and ranges validated on formatting.
  • v2: the family/transport whitelist now applies to LOCAL commands too, rejecting undefined bytes per spec 2.2. LOCAL headers with a valid address block decode addresses and TLVs and round-trip; ill-fitting ones are normalized to UNSPEC.
  • New MaxV2HeaderSize variable bounds the declared v2 length (default 4096) — raise it if you carry large TLVs such as PP2_SUBTYPE_SSL_CLIENT_CERT.

New features

PROXY protocol over UDP (499ef90567292b68d14248845f4050f5d917fa5e, fixes #79)

  • New ParseUDPDatagram and Header.FormatUDPDatagram implement the spec's per-datagram semantics (header and payload share a single datagram) for use with any net.PacketConn.
  • The library deliberately ships no net.PacketConn wrapper — reply routing needs an application-policy flow table — but examples/udppacketconn is a runnable sketch of that pattern, alongside examples/udpserver and examples/udpclient for the plain paths.

Reworked trust policies (2cd5f00e2b3010a0fa64f52f077a20fb304b72fa)

  • New PolicyFromRanges(ranges, matched, unmatched) and MustPolicyFromRanges supersede the whitelist policy family, which is deprecated and now delegates to them. The (REQUIRE, IGNORE) combination covers mixed proxied/direct traffic the old family couldn't express.
  • New CIDR-capable TrustProxyHeaderFromRanges.
  • All built-in policies wrap address-classification failures in ErrInvalidUpstream, so a single unclassifiable peer can no longer stop an accept loop.

TLV registry and PP2SSL caught up to spec 3.4 (4e80228ed95019bd7cba1d215fb169a008c146f5)

  • Registered() now includes PP2_TYPE_GROUP, PP2_SUBTYPE_SSL_SIG_SCHEME, and PP2_SUBTYPE_SSL_CLIENT_CERT.
  • New PP2SSL accessors: SSLSigAlg, SSLKeyAlg, SSLGroup, SSLSigScheme.

🐛 Fixes

  • Header.EqualsTo no longer panics on nil addresses (5914db81c566830347865256ec22808fc39a0787).
  • formatVersion2 folds TLV length into the declared length for Unix families instead of emitting TLVs past it (5914db81c566830347865256ec22808fc39a0787).

🧪 Testing & CI

  • New fuzz/table suites: exhaustive 256-transport-byte sweeps for both v2 commands, a LOCAL decode matrix, byte-for-byte round-trip stability, and FuzzRead parse–format–reparse invariants (5914db81c566830347865256ec22808fc39a0787).
  • CI gains a fuzz job that auto-discovers fuzz targets and uploads crashers as artifacts; workflow actions bumped across the board (af4b18ccae4375269802ff0831e5edf8c26c33c6).
  • Coverage for the http2 serveConn TLS handshake-failure branch (b01bea45dfd89272ed4ee72c7e7f96c94f1c89fc).

📚 Documentation

  • README rewritten against spec 3.4: new Security section with the spec's trust requirements, a UDP section, an examples table, and warnings about the new REQUIRE default (bd986c0a99dccc91fea506d5a6b8c14c5e0cda7c).

v0.14.0

What's Changed

... (truncated)

Commits
  • bd986c0 docs: rewrite README against PROXY protocol spec 3.4
  • af4b18c ci: add fuzz job, bump workflow actions
  • b01bea4 test: cover http2 serveConn TLS handshake failure
  • 499ef90 feat: support the PROXY protocol over UDP datagrams
  • 4e80228 feat: catch TLV registry and PP2SSL parsing up to spec 3.4
  • 2cd5f00 feat!: require the PROXY header by default and rework trust policies
  • 5914db8 fix!: align v1/v2 header parsing with PROXY protocol spec 3.4
  • d72bda7 docs: README Usage section points to relevant examples
  • 4aea955 build(deps): bump golang.org/x/net from 0.39.0 to 0.55.0
  • 6fdb7e0 ci: run the whole module under -race -shuffle=on
  • Additional commits viewable in compare view

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/netbirdio/netbird/pull/7006 **Author:** [@dependabot[bot]](https://github.com/apps/dependabot) **Created:** 7/30/2026 **Status:** 🔄 Open **Base:** `main` ← **Head:** `dependabot/go_modules/github.com/pires/go-proxyproto-0.15.0` --- ### 📝 Commits (1) - [`5ba3d2d`](https://github.com/netbirdio/netbird/commit/5ba3d2da4a8311d6d18f4c14b8d451631a65fe0a) build(deps): bump github.com/pires/go-proxyproto from 0.11.0 to 0.15.0 ### 📊 Changes **2 files changed** (+3 additions, -3 deletions) <details> <summary>View changed files</summary> 📝 `go.mod` (+1 -1) 📝 `go.sum` (+2 -2) </details> ### 📄 Description Bumps [github.com/pires/go-proxyproto](https://github.com/pires/go-proxyproto) from 0.11.0 to 0.15.0. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/pires/go-proxyproto/releases">github.com/pires/go-proxyproto's releases</a>.</em></p> <blockquote> <h2>v0.15.0</h2> <p>This release aligns the library with <strong>PROXY protocol spec 3.4</strong> (2026/04/27). It tightens parsing and trust behavior to match the spec's requirements — which makes some previously accepted inputs and configurations fail loudly — and adds first-class support for the PROXY protocol over UDP.</p> <h3>⚠️ Breaking changes</h3> <p><strong>The PROXY header is now required by default</strong> (2cd5f00e2b3010a0fa64f52f077a20fb304b72fa)</p> <ul> <li>A new <code>DefaultPolicy</code> package variable, set to <code>REQUIRE</code>, is applied by <code>NewConn</code> and <code>Listener.Accept</code> when no policy is configured. The spec forbids guessing whether a header is present, so headerless connections now fail their first <code>Read</code> with <code>ErrNoProxyProtocol</code>.</li> <li>To restore the previous lax behavior: <code>proxyproto.DefaultPolicy = proxyproto.USE</code>.</li> <li><code>TrustProxyHeaderFrom</code> is now strict: trusted peers get <code>REQUIRE</code> and untrusted peers are dropped by <code>Accept</code> with an error wrapping <code>ErrInvalidUpstream</code>. Previously, untrusted headerless clients could slip through as raw connections.</li> </ul> <p><strong>Stricter v1/v2 header parsing per spec 3.4</strong> (5914db81c566830347865256ec22808fc39a0787)</p> <ul> <li>v1: the full <code>PROXY</code> token is validated; IPv6 zone IDs are rejected; plain IPv4 addresses in <code>TCP6</code> lines are rejected (set <code>V1AcceptIPv4InTCP6</code> for nginx interop); ports are parsed with leading zeros rejected and ranges validated on formatting.</li> <li>v2: the family/transport whitelist now applies to <code>LOCAL</code> commands too, rejecting undefined bytes per spec 2.2. <code>LOCAL</code> headers with a valid address block decode addresses and TLVs and round-trip; ill-fitting ones are normalized to <code>UNSPEC</code>.</li> <li>New <code>MaxV2HeaderSize</code> variable bounds the declared v2 length (default 4096) — raise it if you carry large TLVs such as <code>PP2_SUBTYPE_SSL_CLIENT_CERT</code>.</li> </ul> <h3>✨ New features</h3> <p><strong>PROXY protocol over UDP</strong> (499ef90567292b68d14248845f4050f5d917fa5e, fixes <a href="https://redirect.github.com/pires/go-proxyproto/issues/79">#79</a>)</p> <ul> <li>New <code>ParseUDPDatagram</code> and <code>Header.FormatUDPDatagram</code> implement the spec's per-datagram semantics (header and payload share a single datagram) for use with any <code>net.PacketConn</code>.</li> <li>The library deliberately ships no <code>net.PacketConn</code> wrapper — reply routing needs an application-policy flow table — but <code>examples/udppacketconn</code> is a runnable sketch of that pattern, alongside <code>examples/udpserver</code> and <code>examples/udpclient</code> for the plain paths.</li> </ul> <p><strong>Reworked trust policies</strong> (2cd5f00e2b3010a0fa64f52f077a20fb304b72fa)</p> <ul> <li>New <code>PolicyFromRanges(ranges, matched, unmatched)</code> and <code>MustPolicyFromRanges</code> supersede the whitelist policy family, which is deprecated and now delegates to them. The <code>(REQUIRE, IGNORE)</code> combination covers mixed proxied/direct traffic the old family couldn't express.</li> <li>New CIDR-capable <code>TrustProxyHeaderFromRanges</code>.</li> <li>All built-in policies wrap address-classification failures in <code>ErrInvalidUpstream</code>, so a single unclassifiable peer can no longer stop an accept loop.</li> </ul> <p><strong>TLV registry and PP2SSL caught up to spec 3.4</strong> (4e80228ed95019bd7cba1d215fb169a008c146f5)</p> <ul> <li><code>Registered()</code> now includes <code>PP2_TYPE_GROUP</code>, <code>PP2_SUBTYPE_SSL_SIG_SCHEME</code>, and <code>PP2_SUBTYPE_SSL_CLIENT_CERT</code>.</li> <li>New <code>PP2SSL</code> accessors: <code>SSLSigAlg</code>, <code>SSLKeyAlg</code>, <code>SSLGroup</code>, <code>SSLSigScheme</code>.</li> </ul> <h3>🐛 Fixes</h3> <ul> <li><code>Header.EqualsTo</code> no longer panics on nil addresses (5914db81c566830347865256ec22808fc39a0787).</li> <li><code>formatVersion2</code> folds TLV length into the declared length for Unix families instead of emitting TLVs past it (5914db81c566830347865256ec22808fc39a0787).</li> </ul> <h3>🧪 Testing &amp; CI</h3> <ul> <li>New fuzz/table suites: exhaustive 256-transport-byte sweeps for both v2 commands, a <code>LOCAL</code> decode matrix, byte-for-byte round-trip stability, and <code>FuzzRead</code> parse–format–reparse invariants (5914db81c566830347865256ec22808fc39a0787).</li> <li>CI gains a fuzz job that auto-discovers fuzz targets and uploads crashers as artifacts; workflow actions bumped across the board (af4b18ccae4375269802ff0831e5edf8c26c33c6).</li> <li>Coverage for the http2 <code>serveConn</code> TLS handshake-failure branch (b01bea45dfd89272ed4ee72c7e7f96c94f1c89fc).</li> </ul> <h3>📚 Documentation</h3> <ul> <li>README rewritten against spec 3.4: new Security section with the spec's trust requirements, a UDP section, an examples table, and warnings about the new <code>REQUIRE</code> default (bd986c0a99dccc91fea506d5a6b8c14c5e0cda7c).</li> </ul> <h2>v0.14.0</h2> <h2>What's Changed</h2> <ul> <li>tls: revisit tests and docs by <a href="https://github.com/pires"><code>@​pires</code></a> in <a href="https://redirect.github.com/pires/go-proxyproto/pull/174">pires/go-proxyproto#174</a></li> <li>Several improvements by <a href="https://github.com/pires"><code>@​pires</code></a> in <a href="https://redirect.github.com/pires/go-proxyproto/pull/175">pires/go-proxyproto#175</a></li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/pires/go-proxyproto/commit/bd986c0a99dccc91fea506d5a6b8c14c5e0cda7c"><code>bd986c0</code></a> docs: rewrite README against PROXY protocol spec 3.4</li> <li><a href="https://github.com/pires/go-proxyproto/commit/af4b18ccae4375269802ff0831e5edf8c26c33c6"><code>af4b18c</code></a> ci: add fuzz job, bump workflow actions</li> <li><a href="https://github.com/pires/go-proxyproto/commit/b01bea45dfd89272ed4ee72c7e7f96c94f1c89fc"><code>b01bea4</code></a> test: cover http2 serveConn TLS handshake failure</li> <li><a href="https://github.com/pires/go-proxyproto/commit/499ef90567292b68d14248845f4050f5d917fa5e"><code>499ef90</code></a> feat: support the PROXY protocol over UDP datagrams</li> <li><a href="https://github.com/pires/go-proxyproto/commit/4e80228ed95019bd7cba1d215fb169a008c146f5"><code>4e80228</code></a> feat: catch TLV registry and PP2SSL parsing up to spec 3.4</li> <li><a href="https://github.com/pires/go-proxyproto/commit/2cd5f00e2b3010a0fa64f52f077a20fb304b72fa"><code>2cd5f00</code></a> feat!: require the PROXY header by default and rework trust policies</li> <li><a href="https://github.com/pires/go-proxyproto/commit/5914db81c566830347865256ec22808fc39a0787"><code>5914db8</code></a> fix!: align v1/v2 header parsing with PROXY protocol spec 3.4</li> <li><a href="https://github.com/pires/go-proxyproto/commit/d72bda7f529978eb904a5a867c83e286038396ae"><code>d72bda7</code></a> docs: README Usage section points to relevant examples</li> <li><a href="https://github.com/pires/go-proxyproto/commit/4aea955009bde84e1e21b405aed2dd168e62192a"><code>4aea955</code></a> build(deps): bump golang.org/x/net from 0.39.0 to 0.55.0</li> <li><a href="https://github.com/pires/go-proxyproto/commit/6fdb7e07ed8cad3fdf79b8d4d0e98fe3af4d9e11"><code>6fdb7e0</code></a> ci: run the whole module under -race -shuffle=on</li> <li>Additional commits viewable in <a href="https://github.com/pires/go-proxyproto/compare/v0.11.0...v0.15.0">compare view</a></li> </ul> </details> <br /> [![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/pires/go-proxyproto&package-manager=go_modules&previous-version=0.11.0&new-version=0.15.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
saavagebueno added the pull-request label 2026-08-05 08:08:03 -04:00
Sign in to join this conversation.
No Label pull-request
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: DYNR/netbird#29424