On Mon, 21 Jun 2010 03:02:53 +0300, BCS <n...@anon.com> wrote:

import my.dll;

void fn()
{
    auto data = get.userUncheckedInput();
my.dll.doSomething(data); // if doSomething dosn't check it's inputs, then this can cause a security flaw
}

Yes that's your dll's user's fault but adding the checks solves it even so. To boot, it reduces your support cost (as long as people read error message) and prevents the user from having to debug starting deep inside your dll.

A well-designed application needs to validate unsafe user input exactly once (assuming the process of validation is the same). DLL interfaces must specify whether the input/output can be considered safe or not.
Not doing so results in either security holes or redundant code.

And you can bet that every byte of data shipped back and forth via IPC is validated more than an air traveler at a TSA checkpoint.

Obviously, no argument here.

As for the case where the dll is local, never attribute to malice that which can be adequately explained by stupidity. Unless you have source, you can't assume that the data coming out doesn't conation unvalidated user input and you should always assume that someone malicious will get ahold of that sooner or later.

Unless you have the source, you can't assume that simply loading the DLL will not create a security hole.

Trusting the DLL but not trusting the data it gives you is a plausible case. As I said before, this simply needs to be well-defined, and validation doesn't have to happen exactly at the DLL boundary.


-- Best regards,
 Vladimir                            mailto:vladi...@thecybershadow.net

Reply via email to