Architecture – Should Flawed Specifications Still Be Followed?

ArchitectureethicsSecurityspecifications

I have been assigned to develop an integration to one of my employer's applications to an external system developed by our client. Our client's specification for the integration that has some blatant flaws related to security. The flaws would allow an unauthorized user access to the system to view restricted data.

I have pointed out the flaws and their potential security risks if they are implemented as designed, and provided an alternative without the flaw, but (in short) have been told "do it the way we specified" by the client.

Does a programmer have an ethical responsibility NOT to implement code with known security risks? At what point do a client's requirements outweigh the ethical responsibility we have as software developers to create secure applications?

Best Answer

I think you've done your part by pointing out the problem and suggesting an alternative. If they insist that you do things that expose them to a certain level of risk, you should make sure you have a paper trail (and back-ups of it) showing that they explicitly requested this, knowing the risks involved. If you're really concerned, you could tell them that you'd gladly do what they want, if they first sign some sort of legal document/disclaimer in which they acknowledge the risks associated with what they've asked you to do (and of course get a lawyer to draft such a document). I personally don't know of any precedent for such a document for this situation, but I'm sure you could find a lawyer to help you with this. If your company has a legal department, it might be something they should get involved with if there's a potential for corporate liability. And of course, if it's this serious you should discuss this with your manager as well.

I think the only situation where it might be OK to simply refuse to do the work would be if this is software for a system where the flaw that you're worried about could lead to the system being compromised in such a way that it could result in the very likely loss of life/serious personal injury or some sort of catastrophic property loss.

Related Topic