[ltt-dev] [PATCH UST] Fix insecure library loading (Debian Bug #598309, CVE-2010-3386)

Nils Carlson nils.carlson at ericsson.com
Thu Sep 30 06:18:52 EDT 2010


Comments below.

On Wed, 29 Sep 2010, Mathieu Desnoyers wrote:

> Thanks to Raphael Geissert for spotting this, and to Jon Bernard for forwarding
> the information to us.
>
> Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers at efficios.com>
> CC: Raphael Geissert <geissert at debian.org>
> CC: Jon Bernard <jbernard at debian.org>
> ---
> usttrace |   47 +++++++++++++++++++++++++++++++++++++----------
> 1 file changed, 37 insertions(+), 10 deletions(-)
>
> Index: ust/usttrace
> ===================================================================
> --- ust.orig/usttrace
> +++ ust/usttrace
> @@ -132,27 +132,54 @@ fi
>
>     if [ "$arg_preload_libust" = "1" ];
>     then
> -	if [ -n "${LIBUST_PATH%libust.so}" ] ; then
> -	    export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${LIBUST_PATH%libust.so}"
> +	if [ -n "${LIBUST_PATH%libust.so}" ];
> +	then
> +		if [ -n "$LD_LIBRARY_PATH" ];
> +		then
> +			export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${LIBUST_PATH%libust.so}"
> +		else
> +			export LD_LIBRARY_PATH="${LIBUST_PATH%libust.so}"
> +		fi
> +	fi
> +	if [ -n "$LIBUST_PATH" ];
> +	then
> +		if [ -n "$LD_PRELOAD" ];
> +		then
> +			export LD_PRELOAD="$LD_PRELOAD:$LIBUST_PATH"
> +		else
> +			export LD_PRELOAD="$LIBUST_PATH"
> +		fi
> 	fi
> -	export LD_PRELOAD="$LD_PRELOAD:$LIBUST_PATH"
>     fi
>
> -    if [ "$arg_ld_std_ust" = "1" ];
> +    if [ "$arg_ld_std_ust" = "1" ] && [ -n "${LIBUST_PATH%libust.so}" ];
>     then
> -	if [ -n "$${LIBUST_PATH%libust.so}" ] ; then
> -	    export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${LIBUST_PATH%libust.so}"
> +	if [ -n "$LD_LIBRARY_PATH" ];
> +	then
> +		export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${LIBUST_PATH%libust.so}"
> +	else
> +		export LD_LIBRARY_PATH="${LIBUST_PATH%libust.so}"
> 	fi
>     fi
>
> -    if [ "$arg_preload_malloc" = "1" ];
> +    if [ "$arg_preload_malloc" = "1" ] && [ -n $LIBMALLOCWRAP_PATH ];


All -n tests have to be in "", otherwise they will pass even though the 
string is empty.


>     then
> -	export LD_PRELOAD="$LD_PRELOAD:$LIBMALLOCWRAP_PATH"
> +	if [ -n "$LD_PRELOAD" ];
> +	then
> +		export LD_PRELOAD="$LD_PRELOAD:$LIBMALLOCWRAP_PATH"
> +	else
> +		export LD_PRELOAD="$LIBMALLOCWRAP_PATH"
> +	fi
>     fi
>
> -    if [ "$arg_preload_fork" = "1" ];
> +    if [ "$arg_preload_fork" = "1" ] && [ -n $LIBINTERFORK_PATH ];

Same here.

>     then
> -	export LD_PRELOAD="$LD_PRELOAD:$LIBINTERFORK_PATH"
> +	if [ -n "$LD_PRELOAD" ];
> +	then
> +		export LD_PRELOAD="$LD_PRELOAD:$LIBINTERFORK_PATH"
> +	else
> +		export LD_PRELOAD="$LIBINTERFORK_PATH"
> +	fi
>     fi
>


Looks good otherwise!

/Nils


> # Execute the command
>
> -- 
> Mathieu Desnoyers
> Operating System Efficiency R&D Consultant
> EfficiOS Inc.
> http://www.efficios.com
>
> _______________________________________________
> ltt-dev mailing list
> ltt-dev at lists.casi.polymtl.ca
> http://lists.casi.polymtl.ca/cgi-bin/mailman/listinfo/ltt-dev
>




More information about the lttng-dev mailing list