HabrAugust 17, 2026🇷🇺Translated from Russian

WireGuard Kernel Module Silently Overwrites AllowedIPs in Trie, Breaking Peer Routing Without Errors

The WireGuard kernel module does not preserve AllowedIPs entries for peers when duplicate prefixes are inserted. A server with multiple peers can lose routing information for earlier peers after a new peer is added with an overlapping AllowedIPs value, even though the on-disk configuration remains correct.

In the reported case, wg show displayed one peer with allowed ips: (none) while the other retained 10.100.0.0/24. The affected peer continued to complete handshakes and deliver inbound packets, yet outbound traffic failed after decryption, incrementing rx_frame_errors on the interface.

Root Cause in the AllowedIPs Trie

AllowedIPs are stored in a single struct allowedips trie belonging to the wg_device. Each peer holds only a list of back-references to trie nodes. When an exact match on both prefix and CIDR length occurs during insertion, the code executes:

  • rcu_assign_pointer(node->peer, peer) — redirects the node to the new peer
  • list_move_tail — removes the node from the previous peer’s allowedips_list

The operation returns success (0) with no warning, and neither wg nor wg-quick performs overlap checks.

Observed Symptoms and Affected Systems

The problem manifests differently depending on prefix length:

  • Two peers with identical 10.100.0.0/24 — the first peer loses its entry
  • One peer with 10.100.0.0/24 and another with 10.100.0.5/32 — both entries remain because lengths differ

Real-world reports include OpenWrt users adding mobile peers with 0.0.0.0/0, VyOS and OPNsense issues from 2020–2025, and Kubernetes clusters using Cilium or Calico where pod CIDRs are generated automatically.

Packet Handling and Diagnostics

Inbound packets from an orphaned peer are dropped after decryption with the message “Packet has unallowed src IP”, incrementing frame errors. Outbound packets to an address without a peer return ENOKEY (“Required key not available”) and increment tx_errors. Dynamic debug can surface the source-address message, but the overwrite itself produces no log entry.

The same trie-reassignment logic exists in wireguard-go, wireguard-nt, FreeBSD, and OpenBSD implementations, confirming the behavior is not Linux-specific.

Related articles

HabrVulnerabilities & Exploits

RCQ Messenger Duress PIN Flaw Gave Full Access to Real Database on Android

RCQ developers discovered that their duress PIN feature on Android used the same dataKey for both real and decoy accounts, allowing anyone entering the panic code to unlock the entire message history. The original design aimed to present a believable second account but resulted in the decoy PIN acting as a master key rather than a protective boundary. On iOS the implementation was cryptographically separate yet suffered from contact wiping that made the decoy mode look suspiciously empty. After review the team switched both platforms to independent random keys, generated realistic conversation histories, and disabled network features in decoy mode to avoid server-side linkage. Legacy slots created before the fix remain marked as such and require users to set a new decoy PIN. The post-mortem also covers desktop Argon2id vault encryption, notification leakage risks, and why short PINs remain vulnerable to offline brute-force even with strong KDF parameters.

Security NEXTVulnerabilities & Exploits

Multiple Critical Vulnerabilities Patched in IBM Db2 Mirror for i

IBM has disclosed 18 vulnerabilities affecting the graphical user interface of its Db2 Mirror for i database synchronization product, which replicates Db2 for i databases across multiple systems. The most severe issue, CVE-2026-17186, carries a CVSSv3.1 base score of 9.9 and allows remote execution of arbitrary CL commands due to improper neutralization of specific elements within commands. Additional high-severity flaws include CVE-2026-17184 (CVSS 9.8) enabling arbitrary code execution through external file and path control, and CVE-2026-17182 (CVSS 9.8) permitting authentication bypass via URI path validation failures to access or modify sensitive data. Further issues encompass path traversal for writing files to arbitrary locations (CVE-2026-17181, CVSS 9.3) and an authorization bypass (CVE-2026-16879, CVSS 8.8). The vulnerabilities impact versions 7.6, 7.5, and 7.4, with fixes released in the August 11 security advisory.

Security NEXTVulnerabilities & Exploits

Top Cybersecurity Stories of the Week: WordPress XSS Flaw, Microsoft Patch Tuesday, Cisco Zero-Day and More

Security NEXT has published its weekly ranking of the most viewed articles between August 9 and August 15 2026. The list is dominated by critical vulnerabilities affecting widely deployed platforms including WordPress, Microsoft products, Cisco networking gear and Fortinet FortiOS. A cross-site scripting issue in the WordPress login screen and a remote code execution flaw in WordPress 7.0.4 both received immediate patches. Microsoft released updates addressing more than 400 vulnerabilities, while Cisco disclosed a zero-day denial-of-service flaw in its SSL VPN implementation. Additional high-impact issues were reported in FortiOS, Google Chrome, Zoom and Jenkins, prompting urgent remediation guidance from vendors.

Security NEXTVulnerabilities & Exploits

Critical Vulnerability CVE-2026-8715 Discovered in HashiCorp Vault Secrets Operator

HashiCorp has disclosed a critical vulnerability in its Vault Secrets Operator product that affects the AppRole authentication mechanism introduced in version 1.3.0. The flaw, tracked as CVE-2026-8715, stems from insufficient path validation in the secretIDPath field, allowing authenticated Kubernetes users to read arbitrary files from Pod filesystems. With a CVSS v3.1 base score of 9.6, the issue is rated Critical and can lead to credential theft by exfiltrating secrets to attacker-controlled endpoints. Exploitation requires specific permissions to create or retrieve VaultAuth, VaultConnection, and VaultStaticSecret resources. HashiCorp recommends immediate migration to version 1.5.0, which removes the vulnerable secretIDPath field entirely.