Network security and the federated social web

Evan Prodromou's picture

I woke up this morning to news of the onMouseOver XSS attack that was running through Twitter at the time. Users of StatusNet should be happy to note that the bug does not seem to affect our software -- even for notices imported from Twitter. I wanted to take this opportunity to discuss security issues in a federation context.

Firstly, kudos to Twitter engineers for identifying the problem, fixing it, and rolling out new code so quickly. An exploited security flaw in a production Web environment is extremely hard to deal with, and it's impressive that they handled it so well. Bob Lord's blog post covers it in detail.

It's easy to criticize Twitter for having the exploitable bug in the first place; it's also unfair. Anyone can see a bug after it's been revealed and exploited. Identifying latent bugs in an existing codebase is a maddeningly difficult effort. Making bug-free, secure code is a process, not a final goal -- there's always one more thing to fix, one more test to run, one more complex conjunction of different factors that results in an error.

There's nothing magical about Free and Open Source software to keep these kinds of problems from popping up. Linus's law ("given enough eyeballs, all bugs are shallow") does seem to cut down on the severity of problems, and there's a great advantage in letting security analysts see affected code so they provide fixes as well as reports of problems. But I don't think any project should claim security benefits just because their software is open source.

At StatusNet, we've had several security alerts; we've tried to be pro-active about known issues and get them fixed before they become problems. I can't commit to never having bugs; no one can. But I can commit to a culture of continuous improvement, responsiveness to reports from security experts, and transparency about problems with the software. Our record so far has been good and our reputation and relationship with security pros seems strong; I'm committed to continuing to earn them both.

One advantage that we do have over Twitter, in this regard, is a heterogeneous network. Just as disease-causing microorganisms rarely attack more than one host species, networks of mixed codebases and databases are more resistant (but not perfectly resistant!) to attacks by digital worms and viruses.

Using the standards in the OStatus suite, users of StatusNet can follow other users on Google Buzz, Posterous, Tumblr, WordPress, as well as the tens of thousands of sites on the cloud service and the thousands of public StatusNet sites on the Internet. Simply put, it is exponentially harder to make and propagate malware that attacks many different platforms, with many different account databases, all at the same time. A single compromised site poses limited danger to the rest of the network.

As federated social web technologies and software continue to roll out, I hope that security issues play a part in the public discussion of their advantages. The more important social software becomes to our work and personal lives, the more dangerous the kind of attack seen today becomes.


@zach @evan, As i said,

@zach @evan, As i said, requests to API are getting timed out. It includes authorizing accounts via OAuth and in general posting via API.

re: @zach @evan, As i said,

We're not seeing this problem in general. Please contact me by email (zach[at], and we'll try to iron out the issue you're having.

I think you guys should be

I think you guys should be more worried about timeouts on your platform API instead of attacking Twitter.

re: I think you guys should be


We're unaware of any problems with our API timing out. Could you be more specific about the problem you're encountering?



Not at all

I'm not attacking Twitter; I'm pointing out that centralized systems are more susceptible to security attacks.

What problem are we having on the API? What's timing out?

Post new comment

Please note that blog comments are not monitored by our support staff. If you need assistance please visit our forums at or see the Support page for other options.
The content of this field is kept private and will not be shown publicly.
This question is for testing whether you are a human visitor and to prevent automated spam submissions.
Enter the characters shown in the image.