Pinned post

Consider two OpenBSD PF configurations:

pf1.conf, where SSH blocked by default, but internal LAN traffic is allowed:

block in on em0 proto tcp to port 22
pass in quick on em0 proto tcp from 192.168.0.0/16 to any

and updated pf2.conf, where someone added quick to the blocking rule "for safety's sake":

block in quick on em0 proto tcp to port 22
pass in quick on em0 proto tcp from 192.168.0.0/16 to any

quick was added to a broad block rule, silently shadowing the subsequent quick pass rule. Both are quick rules, both are present, and the change consists of just one word. A reviewer might reason: "The pass rule still has quick, so LAN traffic should still go through." However, among quick rules, the "first-match-wins" principle applies, not "last-match-wins": the block in quick rule now matches LAN traffic before the quick pass rule and shadows it. "Last-match-wins" only applies to non-quick rules. Visually, nothing appears broken, yet the behavior has changed.

And proofwall detect this:

$ ./proofwall diff -n 2 pf1.conf pf2.conf
DIFFERENT: rulesets are NOT semantically equivalent. Regressions (2): pass in A, block in B:
- 192.168.0.0:0 -> 0.0.0.0:22 proto=tcp flags=0x00 iface="em0" dir=in
- 192.168.0.0:0 -> 0.0.0.0:22 proto=tcp flags=0xff iface="em0" dir=in

Rule issues (1):
[B] line 2: redundant rule (removing it changes nothing): pass in quick on em0 proto tcp from 192.168.0.0/16 to any

This is interpreted as follows: a regression specifically for 192.168.0.0/16 -> tcp/22 (traffic that previously passed is now blocked), while the pass ... quick rule in the second config has become redundant - its effect is completely overridden by an earlier block quick rule.

Pinned post

Consider two OpenBSD PF configurations:

pf1.conf, where SSH blocked by default, but internal LAN traffic is allowed:

block in on em0 proto tcp to port 22
pass in quick on em0 proto tcp from 192.168.0.0/16 to any

and updated pf2.conf, where someone added quick to the blocking rule "for safety's sake":

block in quick on em0 proto tcp to port 22
pass in quick on em0 proto tcp from 192.168.0.0/16 to any

quick was added to a broad block rule, silently shadowing the subsequent quick pass rule. Both are quick rules, both are present, and the change consists of just one word. A reviewer might reason: "The pass rule still has quick, so LAN traffic should still go through." However, among quick rules, the "first-match-wins" principle applies, not "last-match-wins": the block in quick rule now matches LAN traffic before the quick pass rule and shadows it. "Last-match-wins" only applies to non-quick rules. Visually, nothing appears broken, yet the behavior has changed.

And proofwall detect this:

$ ./proofwall diff -n 2 pf1.conf pf2.conf
DIFFERENT: rulesets are NOT semantically equivalent. Regressions (2): pass in A, block in B:
- 192.168.0.0:0 -> 0.0.0.0:22 proto=tcp flags=0x00 iface="em0" dir=in
- 192.168.0.0:0 -> 0.0.0.0:22 proto=tcp flags=0xff iface="em0" dir=in

Rule issues (1):
[B] line 2: redundant rule (removing it changes nothing): pass in quick on em0 proto tcp from 192.168.0.0/16 to any

This is interpreted as follows: a regression specifically for 192.168.0.0/16 -> tcp/22 (traffic that previously passed is now blocked), while the pass ... quick rule in the second config has become redundant - its effect is completely overridden by an earlier block quick rule.

Cross-Platform GitHub Action supports OpenBSD github.com/cross-platform-acti

as weel as NetBSD, FreeBSD, DragonFlyBSD and MidnightBSD

According to LibreSSL developers, 4.1 has silently introduced an undocumented major breaking change to no longer NUL-terminate ASN.1 strings, in a minor release.

"This will cause buffer overreads left and right."

marc.info/?l=openbsd-cvs&m=178

github.com/openbsd/src/commit/

@openbsdnow I broke IPv6 by not allowing neighbor discovery. Careful testing of things with timeouts, respectively monitoring can help. Wasn't broken for long, but took a minute to realize what happened.

@openbsdnow Also: using other ways of access then the one being configured (IPv4 in my case, or serial console in others).

-current now has initial support for hibernation (ZZZ) on arm64! :flan_hacker:​

Not all machines are currently capable of hibernating (e.g: Apple Silicon), but support is likely to improve over time. :flan_thumbs:​

mglocker@ modified src/sys/arch/arm64/stand/efiboot/*: Add hibernate support for efiboot on arm64.

ok kettenis@, deraadt@

mglocker@ modified src/sys/arch/arm64/*: Add support for arm64 hibernation, MD part.

ok kettenis@, deraadt@

mglocker@ modified src/sys/{kern,sys}/*: Add support for arm64 hibernation, MI part.

ok kettenis@, deraadt@

mglocker@ modified src/sys/arch/arm64/conf/GENERIC: Enable arm64 hibernation support.

Main credits for enabling arm64 hibernation support goes to kettenis@ for getting everything to work finally, and mlarkin@ for advising based
on his amd64/i386 hibernation experience.

ok kettenis@, deraadt@

I'm interested in issues related to OpenBSD packet filter misconfiguration. Could you provide examples of cases where access to resources was unintentionally opened or blocked due to misconfiguration? What do you typically use to prevent such errors?

Thanks in advance and thanks for sharing!

Patches for displaying bugs in the repository added using git-bug appeared in the cgit mailing list. Looks cool, right?

Demo: git.kernel.org/pub/scm/utils/b

GoT has a planned feature for "web-based issue tracking component which stores data in a Git repository for easy replication and, ideally, offline editing" [3]. I can't wait for it to be implemented.

  1. github.com/git-bug/git-bug
  2. lists.zx2c4.com/pipermail/cgit
  3. gothub.org/features.html

// CC: @gothub, @monsieuricon

I've never used #OpenBSD's rdomain(4) feature in anger before but I just configured it to ensure all traffic from a specific VLAN exits via a WireGuard tunnel. It's a really elegant solution and foolproof for those cases where you don't ever want traffic exiting via any other route (eg, if the tunnel interface is destroyed).

man.openbsd.org/rdomain.4

Not the same as my setup but @solene has a useful guide - dataswamp.org/~solene/2021-10-

httpd(8) now has support for fully configuring custom HTTP response headers.

marc.info/?l=openbsd-cvs&m=178

This enables httpd to add security headers, custom metadata, or remove unwanted headers without modifying app/fastcgi code.

Very cool. :flan_thumbs:​

Show older