There are some good reasons why cloud computing is growing so rapidly.
First of all there are the technology enablers: Bandwidth and computing power is cheap. Software development is more accessible than ever. Small software teams can develop great products and distribute it world wide instantly.
But cloud computing goes beyond supply-side economics and directly to the heart of the demand-side – the customer who consumes IT.
Consuming computing as a utility simplifies life for a business. It’s easy to understand (unlike data security technology) and it’s easy to measure economic benefit (unlike governance, risk and compliance activities).
Cloud computing is more than an economic option; it’s also a personal option. Cloud computing is an interesting, almost revolutionary consumer alternative to internal IT systems due to it’s low cost and service utility model.
Current corporate IT operations provide services to captive “users” and empower management (historically, information technology has its roots in MIS – management information systems). When IT vendors go to market, they go to the CxO executives. All the IT sales training and CIO strategies are based on empowering management and being peers in the boardroom. Sell high, don’t sell low. After all, employees don’t sign checks.
But cloud computing is changing the paradigm of top-down, management-board decision-based IT. If you are a sales professional and need a new application for your business unit, you can acquire the application like a smart phone and a package of minutes. Cloud computing is a service you can buy without a corporate signature loop.
An employee in a remote sales office can sign up for Salesforce.com ($50/month for 5 sales people) or Google Apps (free up to 50 users) and manage software development on github.com (free for Open Source).
So far – that’s the good news. But – in the Cloud of rich Web 2.0 application services, we are not in Kansas anymore. There is a very very good reason to be worried. With all the expertise of cloud security providers – the Web 2.0 service they provide is only as secure as the application software itself.
The current rich Web 2.0 application development and execution model is broken.
Consider that a Web 2.0 application has to serve browsers and smart phones. It’s based on a heterogeneous server stack with 5-7 layers (database, database connectors, middleware, scripting languages like PHP, Java and C#, application servers, web servers, caching servers and proxy servers. On the client-side there is an additional heterogeneous stack of HTML, XML, Javascript, CSS and Flash.
On the server-side, we have
- 2-5 languages (PHP, SQL, tcsh, Java, C/C++, PL/SQL)
- Lots of interface methods (hidden fields, query strings, JSON)
- Server-side database management (MySQL, MS SQL Server, Oracle, PostgreSQL)
On the client side, we have
- 2-5 languages ((Javascript, XML, HTML, CSS, Java, ActionScript)
- Lots of interface methods (hidden fields, query strings, JSON)
- Local data storage – often duplicating session and application data stored on the server data tier.
A minimum of 2 languages on the server side (PHP, SQL) and 3 on the client side (Javascript, HTML, CSS) turns developers into frequent searchers for answers on the Internet (many of which are incorrect) driving up the frequency of software defects relative to a single language development platform where the development team has a better chance of attaining maturity and proficiency. More bugs means more security vulnerabilities.
Back end data base servers interfaced to front end scripting languages like C# and PHP comes built-in with vulnerabilities to attacks on the data tier via the interface.
But the biggest vulnerability of rich Web 2.0 applications is that message passing is performed in the UI in clear text – literally inviting exploits and data leakage.
The multiple interfaces, clear text message passing and the lack of a solid understanding of how the application will actually work in the wild guarantee that SQL injection, Web server exploits, JSON exploits, CSS exploits and application design flaws that enable attackers to steal data will continue to star in today’s headlines.
Passing messages between remote processes on the UI is a really bad idea, but the entire rich We 2.0 execution model is based on this really bad idea.
Ask a simple question: How many ways are there to pass an array of search strings from a browser client to a Web server? Let’s say at least two – comma-delimited strings or JSON-encoded arrays. Then ask another question – do Mozilla (Firefox), Webkit (Chrome) and Microsoft IE8 treat client data transfer in a uniform, vendor-neutral standard way? Of course not. The list of Microsoft IE incompatibilities or different interpretations of W3C standards is endless. Mozilla and Webkit transmit UTF-8 url-encoded data as-is in a query string sent to the server. But, Microsoft IE8 takes UTF-8 data in the query string and converts it to ? (yes question marks) in an XHR transaction unless the data has been previously uri-encoded. Are browser incompatibilities a source of of application bugs? Do these bugs lead to software security vulnerabilities? Definitely.
So, it’s really easy to develop cool Web 2.0 applications for seeing who’s hot and who’s not. It’s also cheap to deploy your totally-cool social networking application on a shoestring budget. Facebook started with a budget of $9,000 and so can you.
But, it’s also totally easy to hack that really cool rich Web 2.0 application, steal personal data and crash the system.
A standard answer to the cloud security challenge is writing the security into the contract with the cloud service provider.
Consider however,who is the customer of that cool social media application running in the cloud on some IaaS (infrastructure as a service). If you are a user of a cool new free application, you cannot negotiate or RFP the security issues away, because you are not the customer. You generate content for the advertisers, who are the real customers.
With a broken development and execution model for rich Web 2.0 applications, the cloud computing model of software as a service utility is not sustainable for all but the largest providers like Facebook and Salesforce.com. The cost of security is too high for the application provider and the risk of entrusting valuable business IP and sensitive customer data to the cloud is unreasonable. Your best option is to hope that your cool Web application will succeed small-time, make you some cash and enable you to fly under the radar with a minimal attack surface.
Like your first girl friend told you – it’s not you, it’s me.
It’s not the IT infrastructure, it’s the software.