2020-05-03 03:33:51

by Siddharth Gupta

[permalink] [raw]
Subject: [PATCH v2] scripts: headers_install: Exit with error on config leak

Misuse of CONFIG_* in UAPI headers should result in an error as it exposes
configuration of different targets to userspace.

Signed-off-by: Siddharth Gupta <[email protected]>
---
scripts/headers_install.sh | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/scripts/headers_install.sh b/scripts/headers_install.sh
index a07668a..94a8335 100755
--- a/scripts/headers_install.sh
+++ b/scripts/headers_install.sh
@@ -64,7 +64,7 @@ configs=$(sed -e '
d
' $OUTFILE)

-# The entries in the following list are not warned.
+# The entries in the following list do not result in an error.
# Please do not add a new entry. This list is only for existing ones.
# The list will be reduced gradually, and deleted eventually. (hopefully)
#
@@ -98,18 +98,19 @@ include/uapi/linux/raw.h:CONFIG_MAX_RAW_DEVS

for c in $configs
do
- warn=1
+ leak_error=1

for ignore in $config_leak_ignores
do
if echo "$INFILE:$c" | grep -q "$ignore$"; then
- warn=
+ leak_error=
break
fi
done

- if [ "$warn" = 1 ]; then
- echo "warning: $INFILE: leak $c to user-space" >&2
+ if [ "$leak_error" = 1 ]; then
+ echo "error: $INFILE: leak $c to user-space" >&2
+ exit 1
fi
done

--
Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project


2020-05-04 07:21:18

by Masahiro Yamada

[permalink] [raw]
Subject: Re: [PATCH v2] scripts: headers_install: Exit with error on config leak

On Sun, May 3, 2020 at 12:29 PM Siddharth Gupta <[email protected]> wrote:
>
> Misuse of CONFIG_* in UAPI headers should result in an error as it exposes
> configuration of different targets to userspace.


Sorry, I missed to point out this.

This statement is not precious; it does not expose the kernel
configuration at all.

include/generated/autoconf.h is not available from userspace.
So, all the CONFIG options are undefined.

Could you reword the commit somehow?





>
> Signed-off-by: Siddharth Gupta <[email protected]>
> ---
> scripts/headers_install.sh | 11 ++++++-----
> 1 file changed, 6 insertions(+), 5 deletions(-)
>
> diff --git a/scripts/headers_install.sh b/scripts/headers_install.sh
> index a07668a..94a8335 100755
> --- a/scripts/headers_install.sh
> +++ b/scripts/headers_install.sh
> @@ -64,7 +64,7 @@ configs=$(sed -e '
> d
> ' $OUTFILE)
>
> -# The entries in the following list are not warned.
> +# The entries in the following list do not result in an error.
> # Please do not add a new entry. This list is only for existing ones.
> # The list will be reduced gradually, and deleted eventually. (hopefully)
> #
> @@ -98,18 +98,19 @@ include/uapi/linux/raw.h:CONFIG_MAX_RAW_DEVS
>
> for c in $configs
> do
> - warn=1
> + leak_error=1
>
> for ignore in $config_leak_ignores
> do
> if echo "$INFILE:$c" | grep -q "$ignore$"; then
> - warn=
> + leak_error=
> break
> fi
> done
>
> - if [ "$warn" = 1 ]; then
> - echo "warning: $INFILE: leak $c to user-space" >&2
> + if [ "$leak_error" = 1 ]; then
> + echo "error: $INFILE: leak $c to user-space" >&2
> + exit 1
> fi
> done
>
> --
> Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
> a Linux Foundation Collaborative Project



--
Best Regards
Masahiro Yamada

2020-05-06 01:47:53

by Siddharth Gupta

[permalink] [raw]
Subject: Re: [PATCH v2] scripts: headers_install: Exit with error on config leak


On 5/4/2020 12:18 AM, Masahiro Yamada wrote:
> On Sun, May 3, 2020 at 12:29 PM Siddharth Gupta <[email protected]> wrote:
>> Misuse of CONFIG_* in UAPI headers should result in an error as it exposes
>> configuration of different targets to userspace.
>
> Sorry, I missed to point out this.
>
> This statement is not precious; it does not expose the kernel
> configuration at all.
>
> include/generated/autoconf.h is not available from userspace.
> So, all the CONFIG options are undefined.
>
> Could you reword the commit somehow?
>
Sure. I just meant that if a CONFIG_* is present in the UAPI header it
can be set in a
userspace application that includes the header to manipulate the control
flow in a
kernel that might support multiple targets.

I'll update the commit text and send out an updated patch.

Thanks,
Siddharth

>
>
>
>> Signed-off-by: Siddharth Gupta <[email protected]>
>> ---
>> scripts/headers_install.sh | 11 ++++++-----
>> 1 file changed, 6 insertions(+), 5 deletions(-)
>>
>> diff --git a/scripts/headers_install.sh b/scripts/headers_install.sh
>> index a07668a..94a8335 100755
>> --- a/scripts/headers_install.sh
>> +++ b/scripts/headers_install.sh
>> @@ -64,7 +64,7 @@ configs=$(sed -e '
>> d
>> ' $OUTFILE)
>>
>> -# The entries in the following list are not warned.
>> +# The entries in the following list do not result in an error.
>> # Please do not add a new entry. This list is only for existing ones.
>> # The list will be reduced gradually, and deleted eventually. (hopefully)
>> #
>> @@ -98,18 +98,19 @@ include/uapi/linux/raw.h:CONFIG_MAX_RAW_DEVS
>>
>> for c in $configs
>> do
>> - warn=1
>> + leak_error=1
>>
>> for ignore in $config_leak_ignores
>> do
>> if echo "$INFILE:$c" | grep -q "$ignore$"; then
>> - warn=
>> + leak_error=
>> break
>> fi
>> done
>>
>> - if [ "$warn" = 1 ]; then
>> - echo "warning: $INFILE: leak $c to user-space" >&2
>> + if [ "$leak_error" = 1 ]; then
>> + echo "error: $INFILE: leak $c to user-space" >&2
>> + exit 1
>> fi
>> done
>>
>> --
>> Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
>> a Linux Foundation Collaborative Project
>
>