Skip to content

Commit aedddb4

Browse files
f0rm2l1ndavem330
authored andcommitted
NFC: add necessary privilege flags in netlink layer
The CAP_NET_ADMIN checks are needed to prevent attackers faking a device under NCIUARTSETDRIVER and exploit privileged commands. This patch add GENL_ADMIN_PERM flags in genl_ops to fulfill the check. Except for commands like NFC_CMD_GET_DEVICE, NFC_CMD_GET_TARGET, NFC_CMD_LLC_GET_PARAMS, and NFC_CMD_GET_SE, which are mainly information- read operations. Signed-off-by: Lin Ma <linma@zju.edu.cn> Signed-off-by: David S. Miller <davem@davemloft.net>
1 parent 2bd080b commit aedddb4

File tree

1 file changed

+15
-0
lines changed

1 file changed

+15
-0
lines changed

net/nfc/netlink.c

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1664,31 +1664,37 @@ static const struct genl_ops nfc_genl_ops[] = {
16641664
.cmd = NFC_CMD_DEV_UP,
16651665
.validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
16661666
.doit = nfc_genl_dev_up,
1667+
.flags = GENL_ADMIN_PERM,
16671668
},
16681669
{
16691670
.cmd = NFC_CMD_DEV_DOWN,
16701671
.validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
16711672
.doit = nfc_genl_dev_down,
1673+
.flags = GENL_ADMIN_PERM,
16721674
},
16731675
{
16741676
.cmd = NFC_CMD_START_POLL,
16751677
.validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
16761678
.doit = nfc_genl_start_poll,
1679+
.flags = GENL_ADMIN_PERM,
16771680
},
16781681
{
16791682
.cmd = NFC_CMD_STOP_POLL,
16801683
.validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
16811684
.doit = nfc_genl_stop_poll,
1685+
.flags = GENL_ADMIN_PERM,
16821686
},
16831687
{
16841688
.cmd = NFC_CMD_DEP_LINK_UP,
16851689
.validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
16861690
.doit = nfc_genl_dep_link_up,
1691+
.flags = GENL_ADMIN_PERM,
16871692
},
16881693
{
16891694
.cmd = NFC_CMD_DEP_LINK_DOWN,
16901695
.validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
16911696
.doit = nfc_genl_dep_link_down,
1697+
.flags = GENL_ADMIN_PERM,
16921698
},
16931699
{
16941700
.cmd = NFC_CMD_GET_TARGET,
@@ -1706,26 +1712,31 @@ static const struct genl_ops nfc_genl_ops[] = {
17061712
.cmd = NFC_CMD_LLC_SET_PARAMS,
17071713
.validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
17081714
.doit = nfc_genl_llc_set_params,
1715+
.flags = GENL_ADMIN_PERM,
17091716
},
17101717
{
17111718
.cmd = NFC_CMD_LLC_SDREQ,
17121719
.validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
17131720
.doit = nfc_genl_llc_sdreq,
1721+
.flags = GENL_ADMIN_PERM,
17141722
},
17151723
{
17161724
.cmd = NFC_CMD_FW_DOWNLOAD,
17171725
.validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
17181726
.doit = nfc_genl_fw_download,
1727+
.flags = GENL_ADMIN_PERM,
17191728
},
17201729
{
17211730
.cmd = NFC_CMD_ENABLE_SE,
17221731
.validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
17231732
.doit = nfc_genl_enable_se,
1733+
.flags = GENL_ADMIN_PERM,
17241734
},
17251735
{
17261736
.cmd = NFC_CMD_DISABLE_SE,
17271737
.validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
17281738
.doit = nfc_genl_disable_se,
1739+
.flags = GENL_ADMIN_PERM,
17291740
},
17301741
{
17311742
.cmd = NFC_CMD_GET_SE,
@@ -1737,21 +1748,25 @@ static const struct genl_ops nfc_genl_ops[] = {
17371748
.cmd = NFC_CMD_SE_IO,
17381749
.validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
17391750
.doit = nfc_genl_se_io,
1751+
.flags = GENL_ADMIN_PERM,
17401752
},
17411753
{
17421754
.cmd = NFC_CMD_ACTIVATE_TARGET,
17431755
.validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
17441756
.doit = nfc_genl_activate_target,
1757+
.flags = GENL_ADMIN_PERM,
17451758
},
17461759
{
17471760
.cmd = NFC_CMD_VENDOR,
17481761
.validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
17491762
.doit = nfc_genl_vendor_cmd,
1763+
.flags = GENL_ADMIN_PERM,
17501764
},
17511765
{
17521766
.cmd = NFC_CMD_DEACTIVATE_TARGET,
17531767
.validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
17541768
.doit = nfc_genl_deactivate_target,
1769+
.flags = GENL_ADMIN_PERM,
17551770
},
17561771
};
17571772

0 commit comments

Comments
 (0)