How do we make bigger better?

2011-01-01

Paul Ducklin

Sophos, Australia
Editor: Helen Martin

Abstract

‘Whilst bigger may not always be better, it is clearly always bigger. And bigness begets bigness.’ Paul Ducklin, Sophos


Table of contents

You’ve probably heard of Alan Kay, the principal designer of the object-oriented language Smalltalk. The original Smalltalk implementation was written by Dan Ingalls – allegedly to settle a bet that only a single page of code would be needed to implement the language [1].

How times have changed! I know I’m being slightly unfair here, proverbially comparing apples with oranges (though in practice they compare quite well [2]), but the current Linux kernel sources consist of some 35,000 files totalling over 400MB in size.

I’d love to tell you how many lines of source code that is, and on any Unix-like system that should be easy:

$ wc $(find . -type f -print)

Use ‘find’ to enumerate a list of all the files in the Linux source tree. Pass that list to ‘wc’, counting the words and lines in each file and producing a total. With 4GB RAM at my disposal, this should be easy. But it isn’t:

-bash: /usr/bin/wc: Argument list too long

Clearly, bigger is not always better.

Nevertheless, computing seems set on interminable expansion. I don’t mean to criticize anyone in particular, but I need an example, and I’ve chosen Adobe. Its entry-level PDF-reading software Reader, is now a 70MB download which asks for over 400MB of disk space.

More interestingly (at least for a threat researcher), Reader now incorporates runtimes for three different programming languages: PostScript, ActionScript and ECMAScript, more commonly known as JavaScript.

In the interest of objectivity, I’ll admit that anti-malware software is getting larger, too. Sophos Endpoint Security for Windows, for instance, is an 80MB download, expanding to around 110MB of disk space.

However, it’s fair to point out that the overall complexity of products in our industry is, to some extent, determined by the sum of the rest of the parts. We aren’t just trying to protect Adobe Reader from attack, or your browser, or your video player, or your operating system, but all of them.

Since your browser contains a JavaScript engine in which attacks can be played out, we need a reasonably complete analogue of that environment to deliver satisfactory malware prevention. We need an analogue of your CPU and operating system, too. We need to know how to unravel complex files (archives, images, software bundles etc.) in a way that takes into account all the known peccadillos of all the commonly used software that consumes those files.

So, whilst bigger may not always be better, it is clearly always bigger. And bigness begets bigness.

For security, this means that the gap between functionality and security in software and services is likely to remain wide, and will probably widen further.

Even if you embrace the ‘thin client’ model – Google’s ChromeOS project springs to mind, in which the browser is just about the only software on your PC – you won’t be free from bigness. Facebook, for example, which exists only in your browser, is an enormous, new and fruitful stamping ground for cybercrooks.

In short, therefore, education and user awareness are always going to be important. In fact, they are probably the most important aspects of computer security, since they continue to protect us when technology cannot.

In the past year, I’ve heard a number of fellow security researchers writing off user education altogether. I think that’s defeatist, and ultimately self-defeating. If education fails, you can blame the students. But you might equally blame the teachers.

And what about Alan Kay? In 2001, he took the intriguing step of starting an organization to investigate how far you might get in the modern world with just 20,000 lines of code. Have a look for yourself – you might be pleasantly surprised [3].

twitter.png
fb.png
linkedin.png
hackernews.png
reddit.png

 

Latest articles:

Nexus Android banking botnet – compromising C&C panels and dissecting mobile AppInjects

Aditya Sood & Rohit Bansal provide details of a security vulnerability in the Nexus Android botnet C&C panel that was exploited to compromise the C&C panel in order to gather threat intelligence, and present a model of mobile AppInjects.

Cryptojacking on the fly: TeamTNT using NVIDIA drivers to mine cryptocurrency

TeamTNT is known for attacking insecure and vulnerable Kubernetes deployments in order to infiltrate organizations’ dedicated environments and transform them into attack launchpads. In this article Aditya Sood presents a new module introduced by…

Collector-stealer: a Russian origin credential and information extractor

Collector-stealer, a piece of malware of Russian origin, is heavily used on the Internet to exfiltrate sensitive data from end-user systems and store it in its C&C panels. In this article, researchers Aditya K Sood and Rohit Chaturvedi present a 360…

Fighting Fire with Fire

In 1989, Joe Wells encountered his first virus: Jerusalem. He disassembled the virus, and from that moment onward, was intrigued by the properties of these small pieces of self-replicating code. Joe Wells was an expert on computer viruses, was partly…

Run your malicious VBA macros anywhere!

Kurt Natvig wanted to understand whether it’s possible to recompile VBA macros to another language, which could then easily be ‘run’ on any gateway, thus revealing a sample’s true nature in a safe manner. In this article he explains how he recompiled…


Bulletin Archive

We have placed cookies on your device in order to improve the functionality of this site, as outlined in our cookies policy. However, you may delete and block all cookies from this site and your use of the site will be unaffected. By continuing to browse this site, you are agreeing to Virus Bulletin's use of data as outlined in our privacy policy.