Security for In House Software Development
As the field of software security emerges, you will see many people telling you about “the best way” to do security for your organization. Some of the advice will be very good, but it must also track with your development model. If you do in-house software development, you come up with a different security design that someone working at a large commercial software developer. If you develop under contract to another entity (I call this Development For Hire), you may have your own security lifecycle as well. Today we’ll talk about in-house development.
In House – This kind of software is focused on small teams (relatively) doing work for a specific deployment environment. You can rely on the fact that your installation has a certain number of deployment parameters. The software might run on a single mainframe, or on PC’s configured with the organizational configuration. This simplifies much of your security planning and also reduces the attack surface of the applications you build. Even if you use the same steps in the lifecycle, you will find that you will make different decisions than other software developers about your security.
You may also find that you can depend on the organization (company or government agency) to custom configure the server hosting your application, to further reduce risk. Additionally, these apps often operate within a single authentication and user provisioning environment. All of these controls simplify the security design as you go through development. If this is the case, you can focus more of your security effort on broadening the reach of security mechanisms and on improving the acceptability of security features.
The down side of in-house development models is that you often have fewer people working on security. Developer time can be precious as more diverse effort is expected from fewer people. In that case, you may find that security training is as important as good security design. Make sure that the developers in your organization can get the knowledge they need quickly and efficiently.
Another problem you may experience is the problem of legacy controls. You may have to figure out how to apply security in a shop that uses COBOL for most critical apps. If that’s the case, don’t despair. COBOL is not as easy to exploit as software built in C or C++. Furthermore, as a more verbose and procedural language, it is often easier to spot problems in COBOL than in some of the more modern languages. If you use COBOL, you may need to implement peer code reviews for security instead of using a static analysis tool. I’ve heard of a static analysis tool for COBOL, but haven’t had the chance to look it over. If you have, send me an email and let me know what you think.
As you can see, in-house development carries its own challenges and opportunities. Even if you only have one part time specialist, you can improve the security of software you develop. Good luck.
Next week, I’ll talk about software for hire.
Jim Molini, CISSP, CSSLP
