Jumat, 04 Februari 2005

Shmoocon Begins

I am happy to report that the first Shmoocon has commenced in Washington, DC. Bruce Potter, founder of The Shmoo Group, gave the first talk of the con. The best part in my opinion was his indictment of the Linux development model and his praise of the BSD development model. I found it ironic given I had just blogged on Linux kernel development issues yesterday.

Bruce was followed by Snort developer Brian Caswell, who demonstrated an extension to Snort. It allows arbitrary addition of rules while Snort is running, as a response to Snort viewing packets which it interprets as commands. Theoretically, one could do the following:

1. Run Snort in Caswell mode to watch for attack traffic.
2. Upon identifying attack traffic, determine if adversarial host suffers any vulnerabilities.
3. Upon identifying vulnerabilities in adversarial host, attack it with Metasploit or similar code.
4. Upload precompiled version of Caswell Snort.
5. Repeat.

This is "aggressive self defense," or "Snort as a worm," as Brian's talk put it.

I left during the last presentation of the evening, which was supposed to be a sort of "hacker talk show." It was more of a train wreck than anything entertaining or informative. I will report on Saturday's talks tomorrow evening.

Kamis, 03 Februari 2005

Another Promising Foundstone Spin-Off: Special Ops Security, Inc.

I previously blogged how fellow ex-Foundstoners Kevin Mandia launched Red Cliff Consulting and Clinton Mugge started C-Level Security. I just learned that my friend Erik Birkholz, author of the excellent Special Ops Security book, started his own company: Special Ops Security, Inc. His press release contains the following:

"Specialized security firms Foundstone, @Stake and Guardent were acquired in late 2004 by large, product-only vendors McAfee, Symantec, and VeriSign, creating a void for highly customer-focused security players in the industry. Special Ops Security meets that growing demand for specialized information security knowledge by blending consulting, training and technology into a new hybrid breed of educational solutions for our customers. With the combined talent of Erik Pace Birkholz, Steven Andrés, and Chip Andrews, the company, with a unique all-CISSP certified management team, is committed to delivering tactical and strategic solutions that optimize the people, processes and technology that protect customer data."


I think Erik has a point. If a customer goes to McAfee, Symantec, or Verisign for security consulting, they will end up with a pitch for each company's products or services. In world where best-of-breed security solutions tend to not all come from a single vendor, I think it is useful to have independent security consultants with a view of the "big picture."

The Special Ops books page also mentions three future books on "Tactical Host And Network Security," "Strategic Security," and "Operational Host And Network Security." Good luck Special Ops team! If I need to contact you, I'll be sure to call your number: 888-R-U-OWNED (for real).

A Closer Look at Linux Kernel Development

Last month I wrote a blog entry titled Linux Kernel Development Problems in response to discoveries of new Linux kernel vulnerabilities. I wondered what people were saying about possibly forking the Linux kernel to start a 2.7 branch. I found a fascinating thread from last month with subject starting with 2.7 on the linux-kernel mailing list. In my previous article I cited Ted T'so's contribution to the thread. Here are a few other thoughts on Linux kernel development from that discussion. (For background on the new Linux development model, check here and here.)

My take is simple: I prefer the FreeBSD development process. I avoid 6.0 CURRENT, except for lab test systems, because I know it has zero guarantee of stability. I play with 5.3 STABLE to see what might appear in FreeBSD 5.4. On production systems I run the "security" branch, which only has bug fixes and critical fixes (few are far between, in my experience).

For Linux, I would like to see the old development model resurrected, as it mirrors this approach. The 2.5.z kernel was "CURRENT." The 2.4.z kernel was "STABLE." There wasn't really a "security" branch, but I like the idea of incrementing the .z to address security flaws.

Here is a sample of what the linux-kernel thread posters had to say.

I agree with Bill Davidsen who writes:

"Several of us have suggested that only security fixes and fixes for bugs which resulting in crashes, hangs, filesystem damage and the like be backported to the 2.6.N until 2.6.N+1 is released. No new drivers, schedulers (unless the old one breaks), just fixes."

Adrian Bunk demonstrates that a lot of changes are being made:

"The 2.6.9 -> 2.6.10 patch is 28 MB, and while the changes that went into 2.4 were limited since the most invasive patches were postponed for 2.5, now _all_ patches go into 2.6 ."

Alan Cox lets the world know what he thinks of the 2.6.9 kernel:

"After 2.6.9-ac its clear that the long 2.6.9 process worked very badly. While 2.6.10 is looking much better its long period meant the allegedly 'official' base kernel was a complete pile of insecure donkey turd for months. That doesn't hurt most vendor users but it does hurt those trying to do stuff on the base kernels very badly."

Ted T'so opines that the 2.4 kernel wasn't as stable as everyone seems to remember:

"You have *got* to be kidding. In my book at least, 2.4 ranks as one of the less successful stable kernel series, especially as compared against 2.2 and 2.0. 2.4 was far less stable, and a vast number of patches that distributions were forced to apply in an (only partially successful) attempt to make 2.4 stable meant that there are some 2.4-based distributions where you can't even run with a stock 2.4 kernel from kernel.org. Much of the reputation that Linux had of a rock-solid OS that never crashed or locked up that we had gained during the 2.2 days was tarnished by 2.4 lockups, especially in high memory pressure situations."

Dave Jones from Red Hat posts a Linux distributors point of view. I recommend reading his whole post.

"The delta between 2.6.9 -> 2.6.10 was around 4000 changesets. Cherry picking csets to backport to 2.6.9 at this rate of change is nigh on impossible. You /will/ miss stuff...

So now we're at our 2.6.9-ac+a few dozen 2.6.10 csets and all is happy with the world. Except for the regressions. As an example, folks upgrading from Fedora core 2, with its 2.6.8 kernel found that ACPI no longer switched off their machines for example. Much investigation went into trying to pin this down. Kudos to Len Brown and team for spending many an hour staring into bug reports on this issue, but ultimately the cause was never found.

It was noted by several of our users seeing this problem that 2.6.10 no longer exhibits this flaw. Yet our 2.6.9-ac+backports+every-2.6.10-acpi-cset also was broken. It's likely Fedora will get a 2.6.10 based update before the fault is ever really found for a 2.6.9 backport.

This is just one example of a regression that crept in unnoticed, and got fixed almost by accident. (If it was intentionally fixed, we'd know which patches we needed to backport 8-)"

Felipe Alfaro Solana explains kernel tracking exhaustion:

"I would like to comment in that the issue is not exclusively targeted to stability, but the ability to keep up with kernel development."

Arjan van de Ven believes working on a single code base (2.6) is better than working on 2.7 and 2.6:

"as long as more things get fixed than new bugs introduced (and that still seems to be the case) things only improve in 2.6.

The joint approach also has major advantages, even for quality: All testing happens on the same codebase. Previously, the testing focus was split between the stable and unstable branch, to the detriment of *both*."

David Lang doesn't care so much about kernel quality, since it's the user's responsibility to test it prior to production:

"Sorry, I've been useing kernel.org kernels since the 2.0 days and even within a stable series I always do a full set of tests before upgrading. every single stable series has had 'paper bag' releases, and every single one has had fixes to drivers that have ended up breaking those drivers.

the only way to know if a new kernel will work on your hardware is to try it. It doesn't matter if the upgrade is from 2.4.24 to 2.4.25 or 2.6.9 to 2.6.10 or even 2.4.24 to 2.6.10

anyone who assumes that just becouse the kernel is in the stable series they can blindly upgrade their production systems is just dreaming."

Bill Davidsen explains why Linux distros make money:

"There is a reason why people pay big bucks to Redhat (and others) for a five year contract to back port the bug fixes to the original kernel and software. Barring some huge change I need, I expect to run AS3.0 for four more years for one application, 'learning experiences' are not a good thing."

Jesper Juhl lives at the other end of the stability extreme:

"Every morning when I turn on my machine I grab the latest -bk, build it with my usual config, install that kernel and reboot, then use that as my "kernel of the day". I do this on both my home and work box (well, the work box only does this on mondays) and I've had very little trouble so far."

Richard Moser points out there's more than the 2.4 and 2.6 kernels at play:

"The latest 2.0 version of the Linux kernel is: 2.0.40 2004-02-08 07:13 UTC F V VI Changelog

You have FOUR. 2.6, 2.4, 2.2, 2.0

In my scheme it's time to let go of 2.0; support moves to 2.6, 2.4, 2.2. ~ Development goes to 2.7, in the same way the 2.6 model is done now (so that it's always usable and needs no feature freeze etc before release).
~ In 6 months, 2.2 support is dropped, support moves to 2.8, 2.4, 2.2 with development on 2.9. Support includes bugfixes (security and otherwise) only."

A recurring theme that I don't specifically cite is the burden on those who bundle distros. Several posters implied that it's the responsibility of the distro developers to patch the vanilla kernels into shape for release in Red Hat and so on. Those running vanilla kernels are more or less expected to handle problems themselves. I don't think this is an appropriate answer, but I guess it is realisitc.

Open Source: Time to Pay Up

Shawna McAlearney just published a sequel to her earlier article on Tenable charging for Nessus plug-ins. The new article discusses issues associated with development of open source projects and features this quote:

"'Completely cost-free open source projects will always exist. However, users of some of the more complex projects, especially those with commercial applications, should realize that development isn't a cost-free endeavor,' said Richard Bejtlich, technical director for the Monitoring Operations Division of ManTech's Computer Forensics and Intrusion Analysis group."

Rabu, 02 Februari 2005

Pre-Review: Professional Assembly Language

Many Amazon.com reviewers seem to post reviews without reading the book in question. I imagine they do so to achieve "first post" status and to gather reviews to boost their Amazon.com ranking. My policy is to read every book I review. I only post reviews of books I did not completely read if I feel the book in question is poorly written. I will not waste time continuing to read a bad book, so I will warn potential readers to stay away.

Nevertheless, I receive several books per month -- sometimes a dozen. I also maintain an Amazon.com Wish List showing books I would like to check out and my TaoSecurity Reading page displays books I intend to read.

Beginning today I intend to post a "pre-review" of books in my possession that I believe warrant additional scrutiny. Sometimes I will just alert readers to new books that look promising, but in most cases I plan to eventually read and review the book at Amazon.com. Given my reading backlog and my reading plan, some pre-reviewed books may not get Amazon.com reviews until weeks or months after I receive them.

My first pre-review is for Richard Blum's Professional Assembly Language. I specifically requested this book from Wiley (who owns the Wrox imprint). Based on reading the preface and skimming the book, I am really looking forward to reading it. I liked Richard's earlier book Network Performance Toolkit: Using Open Source Testing Tools. Richard uses all GNU tools for his examples, which makes it easy for readers to follow along. All of his assembly language appears in AT&T syntax, rather than Intel syntax. However, as of Binuntils 2.10, the GNU Assembler supports Intel output. Intel assembly syntax is more popular. For example, see this LURHQ reverse engineering paper.

Once I read the book, I will post an Amazon.com review as usual.

Senin, 31 Januari 2005

Review of Forensic Discovery Posted

Amazon.com just posted my five star review of Forensic Discovery. I read a pre-publication draft of the book which resulted in my quote on the Addison-Wesley site. From the review:

"Farmer and Venema do for digital archaeology what Indiana Jones did for historical archaeology. 'Forensic Discovery' unearths hidden treasures in enlightening and entertaining ways, showing how a time-centric approach to computer forensics reveals even the cleverest intruder. I highly recommend reading this book."

In the chapter 7 (available online as a .pdf) Farmer and Venema mention the Veeco Nanotheater. Veeco makes products which can scan the surface of disks at nanotechnology scales. They show the image at right, and describe it as "residuals of overwritten information on the sides of magnetic disk tracks." This demonstrates the difficulty of truly "destroying" digital evidence. Forensic Discovery explains the problem this way:

"Although memory chips and magnetic disks are designed to store digital information, the underlying technology is analog. With analog storage of digital information, the value of a bit is a complex combination of past stored values. Memory chips have undocumented diagnostic modes that allow access to values smaller than a bit. With modified electronic circuitry, signals from disk read heads can reveal older data as modulations on the analog signal."

At 198 pages this book is a quick read, which explains how I was able to read and review it while writing a new book!

Minggu, 30 Januari 2005

Creating favicon.ico Files

Visitors to TaoSecurity.com may notice that the icon appearing in the Web browser address bar has changed from the FreeBSD daemon to the yin-yang "S" pictured at left. I created this icon using the following process, detailed by DHCPDump author Edwin Groothuis.

First I used xv to crop the TaoSecurity logo, set the image size at 16x16, and save the image (taosecurity.png) in png format.

Next I installed Netpbm using the graphics/netpbm FreeBSD port. Once installed I executed the following command to convert my png file to the desired favicon.ico:

orr:/home/richard$ pngtopnm taosecurity.png | ppmtowinicon -output favicon.ico

When done I had the icon I needed:

orr:/home/richard$ file favicon.ico
favicon.ico: ms-windows icon resource - 1 icon

I copied the favicon.ico file to my Web root, and then added the following to the HEAD section of my index.html file:

<LINK REL="SHORTCUT ICON" HREF="favicon.ico">

I had to clear my Web browser cache to see the new icon. Incidentally, I don't see the icon in Internet Explorer. Using Firefox, I do see it.