OpenXDAS

A free distributed audit service

Download the whole article as PDF

Short URL: http://fsmsh.com/1805

Write a full post in response to this!


No one would argue that software auditing is not an important feature of mission critical applications. If a software based process is critical to the life of your company, then so is the security and access control surrounding resources managed by that software based process. Auditing is the way you track who did what to what and when it happened. Lately, however, the software industry has been lackadaisical at best regarding auditing. Off the shelf software developers either care about auditing, or they don’t. When they do care, they either create elaborate custom auditing solutions that don’t inter-operate with existing tools, or they simply send a few extra messages to the system logging facility and call it auditing—more often the latter. This article is about the benefits of the Open Group’s Distributed Auditing Service (XDAS), and particularly about OpenXDAS, a free software implementation of the XDAS standard sponsored by Novell.

A quick history of software auditing

In the early days of computers, software was almost a by-product. When companies like IBM and Hewlett Packard were custom-manufacturing large mainframe computer systems for banks, businesses and institutions the software was free. Heck, if you bought a computer back then, you probably just blew any budget you might have had for software, anyway! But that’s the way things were done. Computer hardware was so expensive that hardware manufacturers would write and maintain custom software for their customers—almost as a fringe benefit.

As requirements were collected, software developers would try to find a fit between existing software they’d already written, and the software system that would fall naturally out of the requirements gathering process. Sometimes, only small changes were necessary to the customer’s process in order to reuse an existing package already written for a previous customer. At that point, negotiations between customers and developers would result in the ability to reuse some existing software, with perhaps a few customizations. But since computers were a big deal back then, customers were willing to change their processes significantly in order to accommodate the “requirements” of the computer.

Heck, if you bought a computer back then, you probably just blew any budget you might have had for software, anyway!

Over the last 30 years, the roles of hardware and software have become juxtaposed. As elaborate general purpose software systems were developed, hardware manufacturers found it more and more difficult to sell their wares to a customer based on the merits of the hardware. Customers began to expect all of the features of certain well-known software systems from their hardware vendors. Slowly vendors began to make the transition to selling the software for real money, while nearly giving away the hardware.

Free market pressures have pushed this paradigm to the limit in recent years with common off the shelf (COTS) software packages. It now costs far less for both hardware and software than it ever has, but the ratio of software prices to hardware prices has stabilized at around two to one (respectively). For a real world example, a reasonably high-end Intel processor-based CAD/CAM system today costs about US$3000. But a copy of AutoCAD 2006 costs twice that amount, at around US$6000.

What’s happened to our priorities?

Unfortunately, those same free market pressures that brought (relatively) cheap hardware and COTS software to market have also hurt software quality. Software features that are not readily visible to CEOs such as auditing have slipped through the cracks. Software security architects often know the advantages of software auditing, but don’t have the clout they need with their engineering and product managers to ensure that auditing is a well-designed aspect of their company’s software products. Auditing is not sexy and, much like insurance policies or regular backups, it’s not missed until there’s a problem.

There’s no doubt about it—our priorities have degraded to the point where we’re willing to settle for whatever we can get these days with regard to software auditing or other important back-end features.

Auditing vs. logging

Let me lay it on the line for you. Logging is not auditing. It’s really that simple, and yet we’re being sold a bill of goods these days by software vendors who don’t really understand proper software auditing anymore than we consumers do.

By logging, I mean either the use of existing logging systems as the Unix Syslog facility, or the Windows application and security event logs. Or, even more simply, the use of a file-based logging system, where software sends messages to the log file whenever something happens that is considered worthy of such a message. Often what’s considered worthy is extremely subjective—arbitrary really—as developers are given the task to “log something”, so sales people can spout terms like auditing and logging with some degree of integrity.

But auditing is really very much more than logging. Logging allows a system to send free-form informational messages to the console or to a log file. Log messages are really designed from the start to be read by humans. They contain informational text messages such as, “Xenobar system successfully started on 3 Oct, 2006 at 15:32”, or “Footech subsystem loaded properly”. Audit messages, on the other hand, should be machine readable. Not that they should be unreadable by humans, but rather that they should be easily parsed and categorized by software.

Logging is not auditing. It’s really that simple

The software I’m talking about here is called security analysis software. Entire companies have become prosperous by providing security analysis software that spends literally 90 percent of its CPU cycles just parsing and categorizing human readable log messages. They spend most of their time trying to heuristically extract minuscule bits of security-relevant information from near useless log messages pumped out by mission critical software packages. The Sentinel product by eSecurity (recently acquired by Novell) is an example of such a security analysis software package.

And now, consider what happens when a new version of Xenobar is shipped, and the latest developer working on this version decides to change all of the log messages throughout the program because he doesn’t like the format used by the previous developer. After all, they’re just log messages, right?

“But,” you say, “if a company recognized that security analysis software would be designed to read their log messages, could they not provide a well-defined format, and then ensure that it never changes from version to version?” Sure, and this has been done before. Novell’s eDirectory product, for example, contains a trace facility that is widely used by eDirectory customers for many reasons—including system auditing. This trace facility was originally intended to be used only as a debugging tool by eDirectory engineers, but they soon discovered that several key customers were relying on third-party tools to parse eDirectory trace logs, in order to extract information critical to their business processes. After that, the developers were ordered not to change the format of most of the trace messages between versions. It’s sad really, because now this debugging tool can no longer be used effectively for its original purpose—to help engineers find and fix defects in the product.

Proper auditing demands three key features:

  1. An application programmer’s interface or API, entirely separate from the logging facility.
  2. A common standardized audit event record format.
  3. A common standardized audit event taxonomy (a set of events with associated well-defined and documented semantic meanings).

The Bandit Project—the future of identity?

Novell has always been a market leader in enterprise-level identity services. Since the acquisition of SuSE Linux several years ago, Novell has also become a leader in providing standards-based free software solutions for the enterprise.

The Bandit Project (http://www.bandit-project.org) is a free software effort sponsored by Novell to support the best free software identity infrastructure components on the internet today. If Bandit Project administrators can’t find a required identity infrastructure component, then they create a free software project around the missing concept, using existing open networking standards whenever possible.

Besides OpenXDAS, the Bandit Project sponsors a role calculation engine based on the RBAC standards, an authentication credential store called CASA, and an identity attribute service (IDAS) provider for the Higgins identity framework. Higgins is an Eclipse technology project designed to bring identity providers together into a single authentication realm that can be used by service providers and consumers on the internet, as well as within the enterprise.

Novell and the Bandit Project are primary sponsors of the OpenXDAS project. Bandit Project members consider software auditing a required part of a well-rounded identity services infrastructure component set. Bandit Project identity infrastructure components are designed to work equally well in the free software world and at the enterprise level. By providing free identity services infrastructure components, Novell promotes one of its primary goals—to grow the industry.

Don't miss out on the other pages!
123next ›last »

Write a full post in response to this!

0

Do you like this post?
Vote for it!

Copyright information

Verbatim copying and distribution of this entire article is permitted in any medium without royalty provided this notice is preserved.

Biography

John Calcote: John Calcote has worked in the software industry for over 25 years, the last 17 of which were at Novell. He's currently a Sr. Software Engineer with the LDS Church working on open source projects. He's the project maintainer of the openslp project, the openxdas project, and the dnx project on sourceforge.net. He blogs on open source, programming and software engineering issues in general at http://jcalcote.wordpress.com.

undefined's picture

correction, confusion, and a question

Submitted by undefined on Wed, 2007-05-23 08:07.

Vote!
0

first, a correction: CORBA is maintained by the OMG, not the Open Group (though the Open Group has a validation suite for ORBs called CORVAL).

second, my initial confusion: it took me until the bottom of the first page to realize what you meant by "software auditing". first i thought, "good, we need an open source alternative to Coverity's Prevent (fka Standford Checker)." then i realized you weren't talking about that kind of "software auditing", so then i thought, "can't we just get behind auditd and snare so we have at least one standard linux audit subsystem?" then i finally realized you were talking about a library for standardized application self-reporting. (maybe i'm just slow or have been thinking about those other things way too much. ;-)

third, my lingering question: is what you described really called "auditing"? yeah, i guess a common definition (http://dictionary.reference.com/search?q=audit) doesn't require a "third party", "outside observer", etc, but no one takes a self-audit seriously. and when it comes to security, there are too many reasons not to trust a self-audit (mistakes, misunderstandings, subversion, rogue). The correlation between events and audit messages gets overlooked, are misinterpreted, or are subverted (buffer overflow, code injection).

is the "auditing" concerning the application's upstream or downstream (humans and/or other processes)? so that an application's use of openxdas is not to audit the application itself, but to verify upstream (verify the user's actions) and/or downstrean (the application says it connected to the database, but the database didn't report it)? is it to create a composite picture of the whole system, like interviewing everybody at the scene of an accident to piece together what really happened (like the blind men each describing a different part of the elephant)?

on the first page you make a big deal about the differences between logging and auditing, but from my single-application security-critical perspective, your "auditing" is really nothing more than "standardized self-reporting".

John Calcote's picture

Response to confusion and question

Submitted by John Calcote on Mon, 2007-07-09 19:34.

Vote!
0

Hmmm...Interesting viewpoint. So what you're saying is that the only proper way to do a secure audit is to build and install a trusted kernel-level service that monitors and reports on system calls made by user-space applications?

This would certainly solve the problem of instrumenting packages - all packages are automatically instrumented - to the degree that they can be using this method.

I don't actually disagree with this approach. The problem I have with it is that many companies write software for multiple platforms, and they would like to have audit records (events) reported on all of their target platforms. But each platform has a different set of system services - or at the very least different names for the same classes of services. Who's going to write it, and who's going to standardize it, so that everyone will want to use it?

Novell has been doing what you call self-auditing for decades. People not only trust it, but they want it. The fact is, system administrators tend to trust the software they purposely install - foolish notion perhaps, but true, nonetheless. They trust it to do what it was advertised to do - but more to the point (and definitely less foolish), they trust it to send proper audit information to audit servers.

I appologize for not being more clear on the nature of XDAS in the first place. I see now as I re-read the article with this thought in mind that you are correct - the context is not very well defined up front.

undefined's picture

i admit, it's semantics

Submitted by undefined on Mon, 2007-07-09 22:21.

Vote!
0

yes, the ultimate assurance would be a formally verified kernel (see "EAL 7" and MILS, "Multiple Independent Levels of Security") that reported application behavior. but that's not always necessary, just as an IRS "audit" is not to the same level as a criminal court case (with evidence, witnesses, jurors, judge, etc).

what's necessary? depends on the requirements and what level of security/assurance is needed. there are 7 levels of EAL because each successive level costs more to implement and the insurance shouldn't cost more than the respective risk (you don't buy a $1000 safe to protect $100).

but i think my hang-up was in semantics: "auditing" communicates to me a third-party/outside-observer arrangement, where what you describe is "logging" or "reporting".

examples of auditing:

  • linux kernel audit subsystem ("auditd"): kernel reports on user-land syscalls
  • NTFS "auditing": NTFS reports on user & system file actions
  • IRS "audit" (for americans): IRS scrutinizes supporting documentation and recalculates tax return comparing it to submitted tax return

examples of logging/reporting:

  • Windows event log: applications & system report on themselves
  • syslog: applications & kernel report on themselves
  • SMART ("Self-Monitoring, Analysis, and Reporting Technology"): hard drive reports on itself

okay, the event log and syslog are not good examples because they actually contain both "logs" (from the applications about themselves) and "audits" (NTFS auditing output ends up in the event log, pam login failures go to syslog).

logging is useful in friendly situations when you trust the reporter (debugging, record keeping), where auditing is required in adversarial situations where the reporter needs to be reasonably trusted (if only due to degrees of separation, no "conflicts-of-interest", bypartisan, etc).

if Novell (Netware, i presume) is reporting on file system permissions exercised by the users, then i would call that "auditing" (the users). if Novell is reporting on administrative actions (creating a new user, changing user permissions, etc) then i would call that "auditing" (the administrators, as that is probably who initiated the action). but if Novell is reporting on what itself did (wrote 80 MB to the network, sustained 20 MB/s to the disk array, wrote a file to disk), then that's "logging".

logging and auditing are both useful (and even more useful when standardized across platforms/systems to facilitate processing), but they are not the same and, imho, should not be used interchangeably.



Two fantastic free software companies that make Free Software Magazine possible:

Other sites

Odiogo