Archive for the ‘Guests’ Category

Finger 79/tcp # Christey/Martin: Evolution of the CWE Pie Chart

Dave G. | July 10th, 2007 | Filed Under: Guests

  Login: cwe                Name: Steve Christey / Bob Martin      
  Directory: /guests/cwe     Shell: /bin/sh
  On since Wed Jul 10 21:55:00 EDT from www.cwe.org
  No Mail.
  Plan:
  ----------------------------------
  Views expressed by guest bloggers not necessarily 
  those held by Matasano Chargen.

Evolution of the CWE Pie Chart

We thought we would provide some clarification on the CWE pie chart that we published, which was adapted and is now making the rounds in the blogosphere.

The 55/45 chart is a simplification of a pie chart that we presented at Black Hat DC this year. We’re not sure who simplified it, although it is consistent with the original chart, which we presented to demonstrate the utility of CWE, not as an authoritative analysis.

The original chart was constructed as follows. Application security vendors provided us with their internal vulnerability descriptions, which we then mapped to CWEs, creating new CWEs as necessary (we did this in the very early days of CVE, too). At the end of this first round, we had CWE mappings for 6 vendors. We then looked at how much overlap there was between the tools. We found that 55% of CWEs weren’t covered at all, 1% were shared by all 6 sources, and the rest were covered by 1 to 5 sources.

We built the CWE mappings based on what the vendors’ documents said they look for, which has certain limitations. For example, CWE supports multiple levels of abstraction, such as about 8 XSS variants and 15+ directory traversal variants; we only mapped a tool to a “variant CWE” if it specifically mentioned that variant. Also, CWE has about 104 categorization nodes (such as “Authentication Issues”); many of these would not be reported by a tool, which would be looking for more specific children. Finally, some tools include checks for issues that are useful for developers but not necessarily inherent weaknesses.

Finally, many CWEs are design-level or business logic issues, which are difficult if not impossible to detect automatically. CWE also included many issues that aren’t applicable to web software. So, it’s not a surprise that tool coverage would be less than 100%, nor should we expect it.

We expect that the adoption of CWEs will help to make communication more precise. However, the community is in the early stages of adoption, and we think it’s reflected in the original pie chart. Still, it demonstrates how CWE could be useful in identifying opportunities for vendors and consumers to widen their vulnerability coverage.

We did not expect our slide to generate such interest. In light of this, we will conduct a more careful analysis and provide more specific information on methodology, assumptions, and constraints of the statistics. We will also give a more qualitative description of the gaps that we encountered.

Thoughts or feedback are welcome at cwe@mitre.org.

Steve Christey, CWE Technical Lead

Bob Martin, CWE Program Manager

Comment Bubble No Comments

Finger 79/tcp # Ted Julian on Gartner IT Security Summit

Dave G. | June 7th, 2007 | Filed Under: Guests, Industry Punditry

Login: ted Name: Ted Julian Org: App. Security, Inc. Title: VP/Marketing Directory: /guests/dhbg Shell: /bin/sh On since Wed Jun 6 15:55:00 EDT from www.appsecinc.com No Mail. Plan: ---------------------------------- Views expressed by guest bloggers not necessarily those held by Matasano Chargen.

Quick Disclaimer: Some readers will find it odd that we have a VP/Marketing writing a guest blog post. He may describe himself as vendor scum, but we listen to him. You should too. For the record, we are vendor scum too.

To know Dave and Tom is to love them. So when we were at the Gartner IT Security Summit this week and they asked me to write a post about the goings on here I just couldn’t say no. So here you have it, your post from the field on what you missed if you couldn’t join the festivities in DC.

First some disclosures are in order, however. Years ago I spent nearly 8 years as an industry analyst. And one of the only places I didn’t work was Gartner. Safe to assume it will be hard for me to resist finding at least some flaws in their logic. Second, while Dave and Tom can post here with some semblance of vendor neutrality – I’m vendor scum, plain and simple. There’s a better than decent chance you’ll find some comment in here about how database security is the most critical and strategic investment enterprises need to make because the threat has changed, attackers have gone pro, they’re after data they can sell and the most efficient way to harvest the maximum amount of this data is by compromising your databases. If you’re not protecting against this threat, you’re throwing good money after bad, or at least putting data security lipstick on the network security pig. Hey, at least I told you up front. That’s more forthcoming and more provocative than when at RSA this year Art Coviello’s big idea was that there’d be no more stand alone security companies – right after RSA got bought by EMC. Or yesterday when Bruce Schneier’s key take-away was that security products will disappear because you’ll buy them with your infrastructure – now that CounterPane is part of BT.

So what are the Gartner gang’s key take aways?

  1. It’s all about Application Security, sorry, I meant application security ;-) You’ve heard the argument before: it’s far less expensive to remove security issues earlier in the development cycle than at production or even worse after a breach. Gartner (and others) have said this before, but to Gartner’s credit, they drilled down quite a bit on this notion. Joseph Feiman did the best job I’ve seen of segmenting the development process (design, architecture, coding, etc.), highlighting the security issues at each stage, approaches you can take to address them, etc. This charming guy has just been made a research fellow so he can chase this idea which is great because I know that by the end of his session I was dying for the next step. That is, drill down into each of these areas to nail the people, process, and technology details. He’s got another session today – so maybe we’ll get more detail. That will be critical since the challenge for IT on this front is to identify quick wins that tide you over while architecting the proverbial great leap forward. Because if payback is restricted to new code working through the whole process and then getting broadly deployed, we won’t be able to witness it. It’ll take 10 years and we’ll all be off to different jobs – a few times over.

  2. The collision of security and compliance. Essentially, it boils down to building a control framework, identifying the universe of controls within that framework, and then mapping them to your disparate compliance initiatives. Don’t run 38 scans for your 38 compliance initiatives. Do run an uber-scan once and take what you need from it for each initiative. This way, you can minimize the redundant gruntwork associated with a one-off, reactive approach and minimize the risk that you’re so busy getting the auditors what they need that you take your eye off the security ball. Good security should make compliance easy. Other than getting the auditors off your back, I don’t know what good compliance gets you.

    Here too, the idea is not new or particularly unique, but Gartner drilled down to make it more actionable. For example, the “distinguished” Mark Nicollet and much respected (and ironically vendor-scum turned enlightened analyst) Paul Proctor detailed how this works, frameworks you can use (ex. ISO 27001, COBIT), infrastructure you might apply this to (like databases – hey, maybe these guys aren’t so bad?).

    I’ve got two nits to pick on the many compliance discussions. One is the notion of audit. Like security, auditing is a process, not a product. It spans scanning, monitoring / detection, configuration, logging, and god knows what else. Actually, he/she probably doesn’t know or care, but you’re auditor might tell – for some cash, on a quarterly basis. Anyway, in the same way you can compliance yourself out of security; you can audit yourself into oblivion. In my simple mind, audits are simply an awesome corollary benefit of good vulnerability management. Specifically, scans get you the reporting you need to document that you’ve established the appropriate controls. Meanwhile, monitoring helps you flag violations of those controls in a timely fashion. To Gartner’s credit they’ve bolted this notion on to their vulnerability management lifecycle – they just need to be consistent by carrying this through the rest of their research and keep running with it. I think this is a big idea and from a writing cool research perspective, so far they’ve buried the lead.

    My second gripe is the notion of privileged user monitoring. It came up a ton. Ironically, so did the conflicting but spot-on notion that knowing the true user is virtually impossible given account pooling and other crippling complexity. So, how are we supposed to monitor privileged users if it’s impossible to know who they are?

    More achievable and probably more valuable is simply monitoring privileged activity. For example, in my “I’ve got a database security hammer and all I see is nails” world, it isn’t too hard to identify what columns in the database matter most (like maybe the credit card number column) and then simply monitor all activity against it, independent of the user. The wily external hacker compromises wireless to get on the corporate LAN and gain privilege on the database? The insidious insider DBA runs a select * against the credit card column? It’s all the same to us, they try to rob the database – we’ve got ‘em.

    Over time monitoring systems will integrate with other infrastructure (SIM / SIEM, directories, IAM, and so on) to help get to the true user. But at least today you can get an early warning system which if you’re lucky will flag a reconnaissance attempt so you can avoid a breach altogether. If you’re not so lucky, you’ll still know fast and can do some quick old-fashioned forensics to contain the damage and try to catch the bad guy.

  3. The bad guys are crafty and you should be VERY scared. Details about different break-ins have been sprinkled throughout this thing, but as usual Avivah Litan’s prezo was chock-a-block with details about who the bad guys are, how they’ve pulled off different heists, and what they got away with. And Greg Crabb from the Postal Service (the guys who deliver the mail, not the band – though that’s also a worthy topic) had some great war stories - including pictures! Later today, Rich “The Mogul” Mogull looks to add to the booty with his talk, “Involuntary Data Security Case Studies.”

    Even jaded security veterans can’t resist fodder like this. It’s a necessary reminder that threat has changed and more of the same won’t save us.

The major gripe I heard from attendees was the increased amount of vendor advertising –vendor prezos at meals, vendor tracks throughout the day sandwiched between the Gartner prezos, and so on. A few people I talked to said they’d pay more to do away with it.

Comment Bubble 1 Comment

Finger 79/tcp # Top Influencers You Might Not Have Heard Of (Or Not Enough)

Dave G. | March 19th, 2007 | Filed Under: Guests

Login: stevec                   Name: Steve C.
Directory: /guests/stevec      Shell: /bin/csh
On since Mon Mar 19 19:55:00 EDT 
No Mail.
Plan:
----------------------------------
Views expressed by guest bloggers not necessarily those held by
Matasano Chargen.

Disclaimer: this is personal opinion, based on 15 minutes of thought, and is in no way associated with my professional work, except in the sense that identifying the influencers is an important step in the maturity of this young industry. Lame attempts at humor are mine.

Stefan Esser. invented most of the new PHP variants, tore the language apart with his l33t love. And this was BEFORE the month of PHP bugs.

str0ke. milw0rm, what more be said? You don’t need to flood the world with every bug under the sun to have an impact.

Alan Paller. the head of SANS gets things done at high echelons of government and industry. Both expresses and evokes opinions.

Luigi Auriemma there’s only a drop in the bucket for research into video games, and he’s the only one making a splash. When you entertain thoughts about disclosure rules, don’t leave him out in the cold.

Pascal Meunier. did you know that there’s a web site with materials for secure programming education in academia, complete with syllabus ideas? For free?

retrogod. complicated PHP research packaged in ready-made, multi-stage sploitz for compromising gazillions of web sites. Hey, we’re talking influence here.

Tavis Ormandy. whether it’s Google or Gentoo security, it’s all good.

FX. had a quiet year, but let’s not forget him, shall we?

Michal Zalewski. why this guy isn’t a rock star like H D Moore is a mystery. Simultaneous breadth and depth is rare.

Window Snyder. Chief Something-Or-Other. Dared to remove feature bloat from Firefox in order to reduce attack surface. The gall of it all, practicing what you preach!

Alexander Kornbrust. puts the pressure on Oracle along with David Litchfield and Cesar Cerrudo.

Georgi Guninski. said goodbye to disclosure this year, yet still much better than most.

Mark Dowd. duh.

Tan Chew Keong. has the audacity to audit major third-party libraries on the Windows platform, affecting dozens of products in countless installations.

KAPDA (organization). leading Iran’s entry into the scene. truuend5, in particular.

Tom Ferris. he’s the guy who finds a lot of Apple user application bugs, remember?

Gadi Evron. oh wait, wrong list. You’ve heard him. Of him, I mean.

Juha-Matti Laurio. tries to track Microsoft zero-days and provide useful information.

Comment Bubble 14 Comments

Finger 79/tcp # John McDonald: Answers To Challenge #2

Dave G. | November 14th, 2006 | Filed Under: Guests

Login: jm                   Name: John McDonald
Directory: /guests/jm      Shell: /bin/zsh
On since Fri Nov 10 08:55:00 CDT from shaolin
No Mail.
Plan:
----------------------------------
Views expressed by guest bloggers not necessarily those held by
Matasano Chargen.

In the first challenge, you can see that there is a variable relationship between maxsize and ptr. maxsize is supposed to track the amount of space left in the buffer, and ptr points to the next place to write in the banner buffer. The vulnerability here is that the relationship between these variables is invalidated right after the concatenation of the origin IP string. Look at this again:

ptr += strlen(ptr);
maxsize -= strlen(ptr);

ptr is correctly updated to point past the origin IP string. However, maxsize isn’t changed, because strlen(ptr) is going to be 0. The operations were done in the wrong order; maxsize should have been updated first, before ptr was moved to point the end of the string. Thus, there is a buffer overflow possible in the vsnprintf( ) because maxsize will be off by the length of the origin IP string.

Looking at the second challenge, consider what happens when a match for the dangerous environment variable is found:

if (*vp == '\\0' && *ep++ == '=') {
char **P;

for (P = env;; ++P)
if (!(*P = *(P + 1)))
break;
}
env++;

The program eliminates this environment variable by shifting the following environment variables back one position in the env array, overwriting the “evil” variable. The problem is that, once this is accomplished, the env pointer is incremented before the search for evil environment variable continues. So, say you had this env array:

env -> LD_PRELOAD=/tmp/evil.so
LD_PRELOAD=/tmp/evil.so
TERM=vt100
MARK=lazy.australian.making.me.write.his.answers

So, it matches LD_PRELOAD and shifts the following environment variables back one to overwrite it:

env -> LD_PRELOAD=/tmp/evil.so
TERM=vt100
MARK=lazy.australian.making.me.write.his.answers

Then, it incorrectly increments env:

LD_PRELOAD=/tmp/evil.so
env -> TERM=vt100
MARK=lazy.australian.making.me.write.his.answers

Oops! Like all good bugs, this bug was originally found in Linux by Solar Designer ages ago. Astute readers may have noticed that it still affects certain modern day Internets.

Ok, the third challenge. We were shooting for a good example of an RLIMIT bug. So, the goal in this attack would be to have the write() of the very last password entry return immediately after writing the username and the colon character. This would leave the user without a defined password. On Linux, you could use RLIMIT_FSIZE to dial in the exact byte at which you wanted this to occur. This could cause the SIGXFSZ signal to be sent, but the signals were blocked. (Also, your signal mask is inherited in a suid so you could have that signal be ignored in your exploit.)

As far as the competitors go:

Adam Morrison was the only one to see where we were going with the third one. However, he didn’t answer the other two challenges, though god knows he could have easily.

So, it basically comes down to Kasperle and Mangoboy. Kasperle’s analysis was awesome, but in the end we think that mangoboy’s figured out the the more exploitable condition and his suggestion of creatively filling up the disk is plausible.

We didn’t think of that vector when crafting this challenge, though daveg came up with it along with the rlimit attack within a few minutes. So, it was a tough call, but the winner of this challenge is mangoboy.

Comment Bubble 5 Comments

Finger 79/tcp # McDonald, Dowd and Schuh Challenge: Part 2

Dave G. | November 13th, 2006 | Filed Under: Guests

Login: mdowd Name: Mark Dowd Directory: /guests/mdowd Shell: /bin/ash On since Tue Sep 26 21:55:00 CDT from ??? No Mail. Plan: ———————————- Views expressed by guest bloggers not necessarily those held by Matasano Chargen.

UPDATED (11/14/06 10:33AM/Eastern): This contest is closed. We need to do some judging. I approved all of the comments and answers in the meantime.

UPDATED (11/13/06 7:12PM/Eastern): The prize remains unclaimed. Challenge #3 may be OS specific, but we know it works on at least one OS (Linux).

Obligatory book plug:

We recently finished a book called “The Art of Software Security Assessment: Identifying and Preventing Software Vulnerabilities”. It’s
all about finding security vulnerabilities in software, covering design
review through implementation review across a wide variety of
technologies, including Unix, Windows, network software, and the Web. It
will be published by Addison-Wesley on November 20th, who have provided
a sample chapter.

Note: In our previous post to this blog we indicated that the book would
be available on November 15th. The reason for the date change is that
there was evidently a problem with printing, which has delayed the book
by a few days. Sorry for the inconvenience!

But enough chat, on with the challenges!

Here’s the first one. Assume getoriginip() is only going to be 16 bytes maximum, and that you can provide a very long string to be placed in the
banner through the varargs. Also, assume that there isn’t a format string issue.

int banner(int origin, char *fmt, …) { char buf[1024], *ptr = buf, *origin_string; size_t maxsize = sizeof(buf) - 1; va_list ap; … switch(origin){ case LOCAL: origin_string = “Local Connection”; break; case REMOTE: origin_string = “Remote Connection”; break; default: origin_string = “Unknown Connection”; break; } sprintf(ptr, “|%s| “, origin_string); maxsize -= strlen(ptr); ptr += strlen(ptr); … sprintf(ptr, “%s: “, get_origin_ip()); ptr += strlen(ptr); maxsize -= strlen(ptr); … va_start(ap, fmt); vsnprintf(ptr, maxsize, fmt, ap); va_end(ap);


This next one contains some code to remove a variable from the program
environment, say to strip out LD_PRELOAD for a setuid program in ld.so.
Assume you can specify any environment you want, but this code will be
run after an execve() so it’s guaranteed to be somewhat well-formed. The
first argument, var, is a pointer to the name of the environment
variable to be stripped out:

static void _dl_unsetenv(const char *var, char **env) { char *ep; while ((ep = *env)) { const char *vp = var; while (*vp && *vp == *ep) { vp++; ep++; } if (*vp == ‘\\0′ && *ep++ == ‘=’) { char **P; for (P = env;; ++P) if (!(*P = *(P + 1))) break; } env++; } }

Lastly, let’s consider a program that is running with setuid root
privileges and writing to a sensitive file. The file is line-based and
contains username/password pairs of the form “username:password”. If
“password” is omitted, then that user has no password. Assume that when
the function is called, the users credentials that correspond to
“username” have already been established, and this function updates
their password. You can also assume that the file_entries list has been
filled out by reading in the information from the privileged
(non-readable) password file, and that the /data directory is not
writable by non-root users. Here’s the code:

#define TEMP_PASSWORD_FILE “/data/passwords.tmp” #define PASSWORD_FILE “/data/passwords” struct password_entry { unsigned char user[32]; unsigned char pass[32]; struct password_entry *next; }; struct password_entry *file_entries; int update_password(unsigned char *username, unsigned char *password) { int i, fd, rc = -1; struct password_entry *ent; if(!username || !password) return -1; for(i = 0; password[i]; i++) { if(!isalnum(password[i])) return -1; } block_signals(); umask(022); if((fd = open(TEMP_PASSWORD_FILE, O_RDWR|O_CREAT|O_EXCL|O_NOFOLLOW, S_IRUSR|S_IWUSER)) < 0) { unblock_signals(); return -1; } for(ent = file_entries; ent; ent = ent->next) { unsigned char buffer[256]; if(strcmp(ent->user, username) == 0) snprintf(buffer, sizeof(buffer), “%.32s:%.32s\\n”, ent->user,password); else snprintf(buffer, sizeof(buffer), “%.32s:%.32s\\n”, ent->user,ent->pass); if(write(fd, buffer, strlen(buffer)) < 0) goto epilog; } rc = rename(TEMP_PASSWORD_FILE, PASSWORD_FILE); epilog: close(fd); unlink(TEMP_PASSWORD_FILE); unblock_signals(); return rc; }

Comment Bubble 24 Comments

The Dowd, McDonald and Schuh Challenges: Now with Prizes

Dave G. | November 10th, 2006 | Filed Under: Guests, Uncategorized

Mark, John and Justin have generously offered up a free copy of their upcoming book (THANKS GUYS!) to the first person that correctly answers all of the challenges within one of the challenge posts. Our first winner is:

Liudvikas Bukys

And a reminder that the next challenge will be posted on Monday, Nov 13th at 12PM/Eastern.

Updated: Got the date wrong… its correct now.

Comment Bubble 1 Comment

Finger 79/tcp # John McDonald: Answers To Challenge #1

Dave G. | November 10th, 2006 | Filed Under: Guests

Login: jm                   Name: John McDonald
Directory: /guests/jm      Shell: /bin/zsh
On since Fri Nov 10 08:55:00 CDT from shaolin
No Mail.
Plan:
----------------------------------
Views expressed by guest bloggers not necessarily those held by 
Matasano Chargen.

Ok, so let’s go over the first challenge:

int print_msb(int number)
{
  ...
  char buf[sizeof("255")];
  sprintf(buf, "%u", number >> 24);
  ...
}

This code is attempting to isolate the most significant byte of the integer argument number. It does this with a right shift, but because the number is a signed int, an arithmetic right shift is performed instead of a logical right shift. (google Intel’s “sar”) This means that the sign bit will be propagated as the number is shifted. So, if the number was -1, it would have a bit pattern of 11111111 11111111 11111111 11111111. After the right shift, it would still have this same bit pattern. Thus, the buffer buf won’t be big enough to hold the unsigned decimal ascii representation of the number, and a buffer overflow will be possible.

Now for the second one:

int bank1[1000], bank2[1000];
...
void hashbank(int index, int value)
{
  int *bank = bank1;
  if (index<0) {
    bank = bank2;
    index = -index;
  }
  bank[index % 1000] = value;
}

This is a demonstration of something we’ve dubbed the Leblancian Paradox, as the formidable David Leblanc showed it to us. So, in two’s complement arithmetic, to negate a number, you invert all the bits and add one. So what happens when you negate the number 0x80000000? Here’s the bit pattern:

10000000 00000000 00000000 00000000

Invert the bits, and you get:

01111111 11111111 11111111 11111111

Add one, and you get:

10000000 00000000 00000000 00000000

Neat, huh? So, in the above code, if you provide an index of 0x80000000, the unary negation doesn’t change the value of index. Thus, the code places value into offset 0x80000000 % 1000. Now, index is a signed integer type, so the result of this modulus operation will actually be -648. Thus, the memory behind the bank2 array will be modified! Now, we probably should have switched the order of bank1 and bank2 or added a fake void *gEXTRASUPERCRITICALFUNCTIONPOINTERSPLEASEFORTHELOVEOFGODDONOTOVERWRITE[1024] somewhere, but hopefully you can see how this could be a ruxer.

Congrats to the following Chargen superstars:

Liudvikas Bukys

Ian

James Lee

Mangoboy

cneckar

Kasperle

Matt

Next challenge will be post on Monday, November 13th at 12PM/EST.

Comment Bubble 1 Comment

Finger 79/tcp # McDonald, Dowd and Schuh Challenge: Part 1

Dave G. | November 9th, 2006 | Filed Under: Guests

Login: jm                   Name: John McDonald
Directory: /guests/jm       Shell: /bin/zsh
On since Tue Sep 26 21:55:00 CDT from ???
No Mail.
Plan:
----------------------------------
Views expressed by guest bloggers not necessarily those held by 
Matasano Chargen.

Mark Dowd, Justin Schuh, and I recently finished a book called “The Art of Software Security Assessment: Identifying and Preventing Software Vulnerabilities”. It’s all about finding security vulnerabilities in software, covering design review through implementation review across a wide variety of technologies, including Unix, Windows, network software, and the Web. It will be published by Addison-Wesley on November 15th, who have provided a sample chapter.

We’re thrilled that Matasano has given us the opportunity to talk about our book. So, we’ve decided to do a series of little mini-challenges to give you a taste for the kinds of things we cover. We’ll give the solutions in a follow-up post.

Let’s start with some interesting C idiosyncrasies. The goal for these is to corrupt memory that you shouldn’t be able to affect. Exploitability of these synthetic bugs would admittedly be difficult, but the underlying language mechanics are worth keeping in mind when auditing real-world code. Here’s the first one (assume you can completely control ‘number’):

int print_msb(int number)
{
  ...
  char buf[sizeof("255")];
  sprintf(buf, "%u", number >> 24);
  ...
}

Here’s the second one (assume you can completely control ‘index’ and ‘value’):

int bank1[1000], bank2[1000];
...
void hashbank(int index, int value)
{
  int *bank = bank1;
  ...
  if (index<0) {
    bank = bank2;
    index = -index;
  }
  bank[index % 1000] = value;
}

Put the answers in comments. Explain how and why.

Also, a quick plug: Chris Wysopal, Lucas Nelson, Matasano’s own Dino Dai Zovi, and Elfriede Dustin have a brilliantly titled book coming out on Nov. 27th. It’s also being published by AW, and it should complement our book nicely. The title is “The Art of Software Security Testing,” and it’s all about empowering quality assurance personnel with a sophisticated, battle-tested process for testing software security.

Comment Bubble 12 Comments

Finger 79/tcp # frank@ccc.de: Voting Machine Security

Dave G. | October 6th, 2006 | Filed Under: Guests

Login: frank                   Name: Frank Rieger
Directory: /guests/frank       Shell: /bin/ksh
On since Tue Sep 26 21:55:00 CDT from ccc.de
No Mail.
Plan:
----------------------------------
Views expressed by guest bloggers not necessarily those held by 
Matasano Chargen.

One of the things that kept the Chaos Computer Club busy in the last couple of weeks was to take part in the mission of the dutch campaign, “We dont trust voting computers”. I never imagined that building a chess board for a voting computer out of paper and magnetic euro-cent coins might be necessary to preserve the last remains of democracy…

Chess Vote
The reason for playing chess on a Nedap voting computer was that Mr. Groenendaal from Nedap claimed that the Nedap systems are “dedicated special purpose machines” and not ordinary computers and therefore could not be used to play chess. He also used the famous last words spoken by so many companies “Hackers have absolutely no chance”.

Well. A few weeks later the hackers owned the Nedap boxes inside out. We played chess on them, we manipulated votes and we could detect what has been voted from across the street, using compromising (spurious) emissions, aka. TEMPEST. I am particularly happy that we managed to demonstrate a simple TEMPEST attack, as it is the first time (at least as far as I know) that this method was used for a “good” purpose. I do not recall a similar complete and utter defeat of a systems vendor in the last years.

Go and read the technical report paper. It is entertaining and may give you fresh ideas for your own pet projects. The details of the reengineering effort can be found here.

The battle now moves on to the legal department. We showed on the technical side that voting computers are not fulfilling the legal requirements for an election (for Germany and the Netherlands at least). The next step is to convince or, if necessary, force by legal means the government to acknowledge the technical findings and revoke the certification of voting computers.

Comment Bubble 3 Comments

Finger 79/tcp # dcox@bpointsys.com: Black and White

Dave G. | October 2nd, 2006 | Filed Under: Guests

Login: dcox                   Name: Dennis Cox
Org: Breakingpoint Systems    Title: Chief Technology Officer
Directory: /guests/dcox       Shell: /bin/ksh
On since Tue Sep 26 21:55:00 CDT from bpointsys.com
No Mail.
Plan:
----------------------------------
Views expressed by guest bloggers not necessarily those held by 
Matasano Chargen.

Black and White

Recently, an article entitled “Animal activists free 15,000 farmed fish to their deaths” by Valerie Elliot was published in the Times Online (UK). It’s a wonderful article (in fact, there was a SciFi Movie about a similar topic in which everybody was turned into killer mad Zombies) stating that the Animal Liberation Front “freed” 15,000 halibut to the open oceans. All the halibut died.

This is a pretty standard phenomenon. If you are black and white in your beliefs you’re going to wind up killing a bunch of things.

As another example, let’s take a touchier subject - Religion. Certain religions believe that if you don’t believe in “X”, you will not be saved. In addition, you must not be a very nice person because all nice people believe in “X”. So if someone makes a joke about “X”, he must be evil because “X” is great and no one should make fun of “X”. Solution? Kill everybody that doesn’t believe in “X”!

Black and White. It either is or isn’t.

The security industry is made up of quite a few folks who are what I consider, Black and White people; People that believe in the darndest things! For example, take the recent bump key hype that finally made it to the media. The Security Expert on the news said “You shouldn’t bother locking your door because anybody could break in with no trouble at all”. What a black and white response and what an idiot, I say! It is impossible to have a conversation (I define a conversation as “listening AND talking”.) with someone that thinks in Black And White. Nothing is ever secure enough, so why bother securing at all, they argue. When I was working for TPTI I heard that all the time. Regarding blocking attacks – Man I can evade that stuff so easily. It can’t stop this or that, and the recent full disclosure threads on anti-virus (granted I personally think anti-virus is a joke) when signatures were bypassed with simple changes to case sensitivity proves their point… The security folks are right - they are flawed, they are not perfect, and they don’t get you 100% protection.

That being said, it’s really about mitigating risk. A seat belt may or may not save your life, but it will increase the odds for most cases across the board. Sure, there is that one case in Montana back in 1982 where someone died because of a seatbelt (B&W person will send me a link, I’m sure!), but generally the rule of thumb is that if you wear a seatbelt, you will have a better chance of survival and less major injuries in an accident.

If you use a Firewall, IPS, 802.1x (HUGE FAN!), or AntiVirus you may get infected and typically you, your network, and your computer will run a lot slower because of it. (Ugh!) But, you will have a better chance of surviving the next worm. That’s what it is all about - it’s about staying alive and not about being perfect, survival of the fittest. Now, what’s the cost? If $$$ gives me a 40% better chance to survive versus $$$$ which gives me 45% chance, is the higher cost worth it? Now that depends on your business, and it depends on your point of view.

So what’s the point of this rant? If you’re in security then you’re an influencer. I’ve been watching this trend for a while now, you most likely are causing more problems then good. See it’s that silly Black and White mentality that you have developed about security. Don’t misunderstand me - I’m all for calling out peoples security problems in their products. In fact it’s all fair in my opinion to say as little or as much as want in regards to marketing that is shady. HECK! Make a video and give no data and make a big splash with the media all you want at a big security show. Make the whole thing like a bad TV show about people in a airplane crash stranded on a island. Let the mystery run on for months and months. What I dislike is people acting like Bruce Schneier, who I think of as the the Rush Limbaugh of Security. Bruce talks about the TSA in the same way that Rush talks about Ted Kennedy, bringing up 9/11 as often as Rush brings up Chappaquiddick. Writing about how insecure and bad things are - and how smart he is. How what we are doing is making the world a horrible place. Complaining about the insecurities of Airport checkins, tell everybody that it does more harm then good. Even though the TSA just found a women with a loaded handgun trying to get on a plane the other day. People that spread that kind of message are causing people to IGNORE security - saying there is no hope at all (cause that’s the message you are giving them). Sadly, it’s a message that’s that may actually be far worse then no message at all. Try solving some of the security problems - instead of just talking about how insecure things are.

Remember, if you free the farmed fish - they will most likely die in the open water. Not just one, but all of them. Best to think of another method. Oh when they all die, nobody will listen to you rant about squids.

Comment Bubble 20 Comments

Who We Are

Matasano is a team of internationally respected security experts who have led security efforts at @stake, Microsoft, ISS, Secure Computing, Arbor Networks, Secure Networks, Bloomberg, Sandia Labs, and others. Read more about our team and how we can help you today.