Friday, September 16, 2005

Thoughts on Software Assurance

Last night I attended a talk at my local ISSA chapter. The speaker was Joe Jarzombek, Director for Software Assurance for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 National Cyber Security Division of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Department of Homeland Security. Mr Jarzombek began his talk by pointing out cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 proposed DHS reorganization creates an Assistant Secretary for Cyber Security and Telecommunications working for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Under Secretary for Preparedness.

This is supposed to be an improvement over cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 previous job held by Amit Yoran, where he lead cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 National Cyber Security Division, under cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Information Analysis and Infrastructure Protection Directorate. According to this story, "Yoran had reported to Robert P. Liscouski, assistant secretary for infrastructure protection, and was not responsible for telecommunication networks, which are cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 backbone of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Internet." Mr Jarzombek said that people who are not Assistant Secretaries are "not invited to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 table" on serious matters.

Turning to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 main points of his presentation, Mr Jarzombek said cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 government worries about "subversions of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 software supply chain" by developers who are not "exercising a minimum level of responsible practice." He claimed that "business intelligence is being acquired because companies are not aware of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir supply chains."

The government wants to "strengcá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n operational resiliency" by "building trust into cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 software acquired and used by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 government and critical infrastructure." To that end, software assurance is supposed to incorporate "trustworthiness, predictable execution, and conformance." Mr Jarzombek wants developers to "stop making avoidable mistakes." He also wants those operating critical infrastructure to realize that "if software is not secure, it's not safe. If software can be changed remotely by an intruder, it's not reliable." Apparently infrastructure provides think in terms of safety and reliability, but believe security is "someone else's problem."

I applaud Mr Jarzombek's work in this area, but I think cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 problem set is too difficult. For example, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 government appears to worry about two separate problems. First cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y are concerned that poor programming practices will introduce vulnerabilities. To address this issue Mr Jarzombek and associates promote a huge variety of standards that are supposed to "raise cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 bar" for software development. To me this sounds like cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 argument for certification and accreditation (C&A). Millions of dollars and thousands of hours are spent on C&A, and C&A levels are used to assess security. In reality C&A is a 20-year-old paperwork exercise that does not yield improved security. The only real way to measure security is to track cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 numbers and types of compromise over time, and try to see that number decrease.

Second, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 government is worried about rogue developers (often overseas and outsourced) introducing back doors into critical code. No amount of paperwork is going to stop this group. Whatever DHS and friends produces will be widely distributed in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hopes of encouraging its adoption. This means rogue developers can code around cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 checks performed by DHS diagnostic software. Even if given cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 entire source code to a project, skilled rogue developers can obfuscate cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir additions.

In my opinion cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 government spends way too much time on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 vulnerability aspect of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 risk equation. Remember risk = threat X vulnerability X asset/impact/cost/etc. Instead of devoting so much effort to vulnerabilities, I think cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 government should divert resources to deterring and prosecuting threats.

Consider cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 "defense" of a city from thieves. Do city officials devote huge amounts of resources to shoring up doors, windows, locks, and so forth on citizen homes? That problem is too large, and thieves would find ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r ways to steal anyway. Instead, police deter crime when possible and catch thieves who do manage to steal property. Of course "proactive" measures to prevent crime are preferred, so cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 police work with property owners to make improvements to homes and businesses where possible.

I asked Mr Jarzombek a question along cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se lines. He essentially said cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 threat problem is too difficult to address, so cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 government concentrates on vulnerabilities. That's not much of an answer, since his approach has to defend all of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 nation's targets. My threat-based approach focuses on deterring and capturing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 much smaller groups of real threats.

Mr Jarzombek cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n said that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 government does pursue threats, but he "can't talk about that." Why not? I understand he and ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365rs can't reveal operational details, but why not say "Federal, state and local law enforcement are watching carefully and we will have zero tolerance for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se kinds of crimes." Someone actually said those words, but not about attacking infrastructure. These words were spoken by Alberto Gonzales, US Attorney General, with respect to Katrina phishers.

This approach would have more effect against domestic intruders, since foreign governments would not be scared by threat of prosecution. However, if foreign groups knew we would pursue cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m with means ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r than law enforcement, we might be able to deter some of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir activities. At cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 very least we could devote more resources to intelligence and infiltration, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365reby learning about groups attacking infrastructure and preventing damaging attacks.

Since I'm discussing software assurance, I found a few interesting sites hosted by Fortify Software. The Taxonomy of Coding Errors that Affect Security looks very cool. The Fortify Extra is a newsletter, which among ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r features includes a "Who's Winning in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Press?" count of "good guy" and "bad guy" citations. This site is not yet live, but in October DHS will launch buildsecurityin.us-cert.gov. The Center for National Software Studies was mentioned last night.

Also, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 2nd Annual US OWASP Conference will be held in Gaicá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365rsburg, MD 11-12 October 2005.

5 comments:

Anonymous said...

I work for a federal department which recently completed a C&A review. Very little of what sysadmins routinely do was changed as any result. Getting cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 information in all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 blocks on an 80 page Word document exactly right was cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hard part. The inspection was also MS specific. Not one inspector even looked at my BSD and linux systems. I was looking forward to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 opportunity of objectivley comparing open-source systems with Microsoft but it never happened.

It was only a paperwork exercise. Too bad it's lasted 20 years.

John Ward said...

The government should be more concerned with catching threats. It is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 vendor’s responsibility to minimize cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 number of vulnerabilities in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir product. And some ridiculous certification process is not cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 answer. A product may have passed some smoke-and-mirrors C&A process, but still be a piece of crap. Mr. Jarzombek is not cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 only one who wants developers to stop making “avoidable mistakes”. The issue is with education, not certification. A certification is nothing more than a piece of paper; it doesn't mean that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 developer is proficient in anything. Take cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 MCP for example. I have worked with tons of MCPs who basically went through cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 motions for certification, but for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 life of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y couldn't actually write any solve any sort of problems, develop solutions, or write any “real” code. Developers typically do not learn how to write secure I/O to prevent buffer overflows, proper memory management, or even something as more basic as don't use C for tasks where a higher-level language with type-safe strings and array bound checking would be more appropriate. Granted, languages like Pascal are not immune from buffer overflows, but cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y are much less frequent due to things like bounds-checking and variable length strings. If developers would learn something ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r than C and add more languages to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir development arsenal, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y would learn how to pick cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 proper language for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 task, applications would be much more secure.

And as far as "rouge programmers", if companies allow cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir internal or outsourced programmers to write obfuscated code for any reason, it’s a reflection of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 quality of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 company and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir product. If cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y outsourced code to be merged into cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir product without review from a senior developer, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y are asking for trouble. The standards for development need to be changed across cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 board. For example, I require all of my developers to write cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir code in easy to follow logical blocks that are clearly commented, and I require code to undergo peer review by anocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r developer. If those requirements are not met, I make cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m do it over. There is no place in production code for obfuscated code, because cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 coders who write that are show offs, and I have no tolerance for “cowboy programmers”.

The biggest issue is with PHB's who make cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 product decisions in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir organization. Too often you have cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se jack asses pick a product based on what cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 sales force have sold cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m on. A company can have a first-string, world-class sales force but a third rate product. Managers are not knowledgeable to know what to look for in products, and as a result, usually pick garbage with potential vulnerabilities.

These are all issues that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 industry needs to address within itself. I don’t agree that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se problems are too difficult to deal with. The industry used to apply certain standards to software back in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 day. The problem now is that programmers are a dime a dozen and lazy to boot. We have too many of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Gen-X and Gen-Y kids who decided to hop on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 IT bandwagon when it was cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 booming industry, and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y did not have cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 proper mental aptitude to be programmers. As a result, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 market is saturated with garbage programmers, even more so after cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 bubble burst.

Anonymous said...

I think your 'thoughts' and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 comments are very relevant, but
what about cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 [security] quality of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 code? I know that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365
threat angles are covered by ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r govt orgs and yes, of course
it's too piecemeal and uncoordinated - much like ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r intelligence
efforts. And I too have a low opinion of how well standards and
particularly certifications can improve cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 situation.

I'm still of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 opinion that building high quality code is better
from a security viewpoint than poor code, and even that can be vastly
improved by refocusing on particular flaws that have defintie
security impacts. And we certainly could use new ideas for proper
testing (resources are always a problem). I think cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 software
assurance angle is correct in addressing this area.

John Ward said...

I totally agree with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Anonymous poster. The problem is most programmers are not introduced to secure programming practices from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 very beginning. For example, when someone is learning C, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 first thing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y learn for I/O is something like:

char input_buffer[20];
gets(input_buffer);

Instead, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y should learn is:

char input_buffer[20];
fgets(input_buffer, 20, stdin);

First impressions go a long way, and if secure programming is introduced from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 get go cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n it will stay with developers. Better quality coding = more secure code. Certifications do not teach this eicá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r.

Anonymous said...
This comment has been removed by a blog administrator.