Commit 681c27c
committed
syscall: remove unneeded path_has_dotdot_component checks
This code was added in commit 30656c5 ("syscall: add
symlink-race-safe do_*_at() wrappers and harden secure_relative_open")
but the justification given is really not particularly convincing.
The stated justification is that RESOLVE_BENEATH does not block some
".." escapes, which is categorically false (if it were true, that would
be a Linux kernel bug and the kernel actually has an extra safety check
at the end of lookup that would render this kind of breakout practically
impossible).
Reading the code, the actual reason appears to be to provide some
consistency between the RESOLVE_BENEATH and fallback per-component
O_NOFOLLOW lookups. However, the O_NOFOLLOW resolver can never have full
parity with the RESOLVE_BENEATH resolvers because RESOLVE_BENEATH permit
symlinks and symlinks can contain ".." components. It seems more prudent
to just allow ".." for modern systems and reject it for older ones. If
truly necessary, there are even ways to support ".." in a cross-platform
way so this could even be seen as a "not-implemented-yet" error rather
than a permanent API contract.
For the really-old systems case (with no O_NOFOLLOW or AT_DIRFD) then
just as we have to accept symlinks (which might contain "..") we might
as well accept bare ".." components. Rejecting ".." for that case is
just pure security theatre.
Fixes: 30656c5 ("syscall: add symlink-race-safe do_*_at() wrappers and harden secure_relative_open")
Signed-off-by: Aleksa Sarai <aleksa@amutable.com>1 parent a2e5edb commit 681c27c
2 files changed
Lines changed: 110 additions & 117 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1677 | 1677 | | |
1678 | 1678 | | |
1679 | 1679 | | |
1680 | | - | |
1681 | | - | |
1682 | 1680 | | |
1683 | 1681 | | |
1684 | | - | |
1685 | | - | |
1686 | | - | |
1687 | | - | |
1688 | | - | |
1689 | | - | |
1690 | | - | |
1691 | | - | |
1692 | | - | |
1693 | | - | |
1694 | | - | |
1695 | | - | |
1696 | | - | |
1697 | | - | |
1698 | | - | |
1699 | | - | |
1700 | | - | |
1701 | | - | |
1702 | | - | |
1703 | | - | |
1704 | | - | |
1705 | | - | |
1706 | | - | |
1707 | | - | |
1708 | 1682 | | |
1709 | 1683 | | |
1710 | 1684 | | |
| |||
1787 | 1761 | | |
1788 | 1762 | | |
1789 | 1763 | | |
1790 | | - | |
1791 | | - | |
1792 | | - | |
1793 | | - | |
1794 | | - | |
1795 | | - | |
1796 | | - | |
1797 | | - | |
1798 | | - | |
1799 | | - | |
1800 | | - | |
1801 | | - | |
1802 | | - | |
1803 | | - | |
1804 | | - | |
1805 | | - | |
1806 | | - | |
1807 | 1764 | | |
1808 | 1765 | | |
1809 | 1766 | | |
| |||
1833 | 1790 | | |
1834 | 1791 | | |
1835 | 1792 | | |
1836 | | - | |
| 1793 | + | |
| 1794 | + | |
1837 | 1795 | | |
1838 | 1796 | | |
1839 | 1797 | | |
1840 | 1798 | | |
1841 | | - | |
| 1799 | + | |
1842 | 1800 | | |
1843 | | - | |
1844 | 1801 | | |
1845 | | - | |
1846 | | - | |
1847 | | - | |
1848 | | - | |
1849 | | - | |
1850 | | - | |
1851 | | - | |
1852 | | - | |
| 1802 | + | |
| 1803 | + | |
| 1804 | + | |
| 1805 | + | |
| 1806 | + | |
| 1807 | + | |
| 1808 | + | |
| 1809 | + | |
1853 | 1810 | | |
1854 | 1811 | | |
1855 | 1812 | | |
1856 | 1813 | | |
1857 | 1814 | | |
1858 | 1815 | | |
1859 | 1816 | | |
| 1817 | + | |
| 1818 | + | |
| 1819 | + | |
| 1820 | + | |
| 1821 | + | |
1860 | 1822 | | |
1861 | 1823 | | |
1862 | | - | |
1863 | | - | |
| 1824 | + | |
1864 | 1825 | | |
1865 | 1826 | | |
1866 | | - | |
| 1827 | + | |
1867 | 1828 | | |
1868 | 1829 | | |
1869 | 1830 | | |
1870 | 1831 | | |
1871 | 1832 | | |
1872 | 1833 | | |
1873 | 1834 | | |
1874 | | - | |
1875 | 1835 | | |
1876 | | - | |
1877 | | - | |
1878 | | - | |
1879 | | - | |
1880 | | - | |
1881 | | - | |
| 1836 | + | |
| 1837 | + | |
| 1838 | + | |
| 1839 | + | |
1882 | 1840 | | |
1883 | 1841 | | |
1884 | 1842 | | |
1885 | 1843 | | |
| 1844 | + | |
| 1845 | + | |
| 1846 | + | |
| 1847 | + | |
1886 | 1848 | | |
1887 | 1849 | | |
1888 | 1850 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
26 | 26 | | |
27 | 27 | | |
28 | 28 | | |
| 29 | + | |
29 | 30 | | |
30 | 31 | | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
31 | 37 | | |
32 | 38 | | |
33 | 39 | | |
| |||
41 | 47 | | |
42 | 48 | | |
43 | 49 | | |
44 | | - | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
45 | 58 | | |
46 | 59 | | |
47 | | - | |
48 | | - | |
49 | | - | |
50 | | - | |
51 | | - | |
52 | | - | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
53 | 66 | | |
54 | | - | |
55 | | - | |
56 | | - | |
57 | 67 | | |
58 | | - | |
59 | | - | |
| 68 | + | |
60 | 69 | | |
61 | | - | |
62 | | - | |
63 | | - | |
64 | | - | |
65 | | - | |
66 | | - | |
67 | | - | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
68 | 79 | | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
69 | 83 | | |
70 | | - | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
71 | 92 | | |
72 | 93 | | |
73 | | - | |
| 94 | + | |
| 95 | + | |
74 | 96 | | |
75 | 97 | | |
76 | 98 | | |
77 | 99 | | |
78 | 100 | | |
79 | | - | |
| 101 | + | |
80 | 102 | | |
81 | 103 | | |
82 | 104 | | |
83 | | - | |
84 | | - | |
85 | | - | |
86 | 105 | | |
87 | | - | |
88 | | - | |
89 | | - | |
90 | | - | |
91 | | - | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
92 | 114 | | |
93 | | - | |
94 | | - | |
| 115 | + | |
| 116 | + | |
95 | 117 | | |
96 | 118 | | |
97 | 119 | | |
98 | 120 | | |
99 | | - | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
100 | 124 | | |
101 | 125 | | |
102 | 126 | | |
| |||
110 | 134 | | |
111 | 135 | | |
112 | 136 | | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
113 | 142 | | |
114 | 143 | | |
115 | 144 | | |
| |||
119 | 148 | | |
120 | 149 | | |
121 | 150 | | |
122 | | - | |
123 | | - | |
124 | | - | |
125 | | - | |
126 | | - | |
127 | | - | |
128 | | - | |
129 | | - | |
130 | | - | |
131 | | - | |
132 | | - | |
133 | | - | |
134 | | - | |
135 | | - | |
136 | | - | |
137 | | - | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
138 | 169 | | |
139 | 170 | | |
140 | 171 | | |
141 | 172 | | |
142 | 173 | | |
143 | | - | |
144 | | - | |
145 | | - | |
146 | | - | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
147 | 178 | | |
148 | 179 | | |
149 | 180 | | |
| |||
0 commit comments