)]}'
{
  "commit": "86b0c540e2ea397cde021eecd24145f7c16a3d4e",
  "tree": "8ad926550626de449c5ea4a4b23b93667776a1fd",
  "parents": [
    "90b662ea25f5e83bb3b8ccec5b93ced810b92fb8"
  ],
  "author": {
    "name": "Michael Bommarito",
    "email": "michael.bommarito@gmail.com",
    "time": "Wed Jun 10 08:40:01 2026 -0400"
  },
  "committer": {
    "name": "Jakub Kicinski",
    "email": "kuba@kernel.org",
    "time": "Thu Jun 11 16:01:16 2026 -0700"
  },
  "message": "tipc: require net admin for TIPCv2 netlink mutators\n\nTIPCv2 registers mutating generic-netlink operations without admin\npermission flags. Generic netlink only checks CAP_NET_ADMIN when an\noperation sets GENL_ADMIN_PERM or GENL_UNS_ADMIN_PERM, so a local\nunprivileged process can currently change TIPC state through commands\nsuch as TIPC_NL_NET_SET, TIPC_NL_KEY_SET, TIPC_NL_KEY_FLUSH, and\nbearer enable/disable.\n\nThe legacy TIPC netlink API already checks netlink_net_capable(...,\nCAP_NET_ADMIN) for administrative commands. Give the TIPCv2 mutators\nthe equivalent generic-netlink gate. Use GENL_UNS_ADMIN_PERM, which\nmaps to the same namespace-aware CAP_NET_ADMIN check that\nnetlink_net_capable() performs, so the behaviour matches the legacy\npath and keeps working for CAP_NET_ADMIN holders in a non-initial user\nnamespace (containers).\n\nA QEMU/KASAN repro run as uid/gid 65534 with zero effective\ncapabilities previously succeeded in changing the network id and node\nidentity, setting and flushing key material, and enabling/disabling a\nUDP bearer. With this patch applied the same operations fail with\n-EPERM.\n\nFixes: 0655f6a8635b (\"tipc: add bearer disable/enable to new netlink api\")\nLink: https://lore.kernel.org/all/20260604163102.2658553-1-dominik.czarnota@trailofbits.com/\nSigned-off-by: Michael Bommarito \u003cmichael.bommarito@gmail.com\u003e\nReviewed-by: Tung Nguyen \u003ctung.quang.nguyen@est.tech\u003e\nLink: https://patch.msgid.link/20260610124003.3831170-2-michael.bommarito@gmail.com\nSigned-off-by: Jakub Kicinski \u003ckuba@kernel.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "1a9a5bdaccf4fcb41c59fe60fd0600490bcc5698",
      "old_mode": 33188,
      "old_path": "net/tipc/netlink.c",
      "new_id": "8336a9664703fe0f13d9f18e01e32e128e7756f1",
      "new_mode": 33188,
      "new_path": "net/tipc/netlink.c"
    }
  ]
}
