Re: [PATCH] crypto/mcryptd: Check mcryptd algorithm compatability

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, 2016-12-05 at 08:50 -0800, Tim Chen wrote:
> On Mon, 2016-12-05 at 20:34 +0800, Herbert Xu wrote:
> > 
> > On Fri, Dec 02, 2016 at 04:15:21PM -0800, Tim Chen wrote:
> > > 
> > > 
> > > Algorithms not compatible with mcryptd could be spawned by mcryptd
> > > with a direct crypto_alloc_tfm invocation using a "mcryptd(alg)"
> > > name construct.  This causes mcryptd to crash the kernel if
> > > "alg" is incompatible and not intended to be used with mcryptd.
> > > 
> > > A flag CRYPTO_ALG_MCRYPT is being added to mcryptd compatible
> > > algorithms' cra_flags. The compatability is checked when mcryptd spawn
> > > off an algorithm.
> > > 
> > > Link: http://marc.info/?l=linux-crypto-vger&m=148063683310477&w=2
> > > Cc: stable@xxxxxxxxxxxxxxx
> > > Reported-by: Mikulas Patocka <mpatocka@xxxxxxxxxx>
> > > Tested-by: Megha Dey <megha.dey@xxxxxxxxxxxxxxx>
> > > Signed-off-by: Tim Chen <tim.c.chen@xxxxxxxxxxxxxxx>
> > Tim, I think we should instead make mcryptd refuse to generate
> > a non-internal algorithm.  This way the user would not be able
> > to access it at all since they can only request for non-internal
> > algorithms.
> > 
> > Basically you want to check at the start of mcryptd_create_hash
> > that the INTERNAL bit is set on both the type and mask as returned
> > by crypto_get_attr_type.
> I have thought about that.  However, not all internal algorithms
> are compatible with mcryptd. We can still have trouble if some
> random internal algorithm is paired with mcryptd.

You're right.  The mcryptd(alg) should be an internal algorithm itself.
So checking on the INTERNAL flag should be sufficient.

I'll generate another patch that uses the INTERNAL flag for checking.

Tim
--
To unsubscribe from this list: send the line "unsubscribe linux-crypto" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Kernel]     [Gnu Classpath]     [Gnu Crypto]     [DM Crypt]     [Netfilter]     [Bugtraq]

  Powered by Linux