Adblock Plus and (a little) more
More extension puzzles · 2009-02-11 17:42 by Wladimir Palant
Since Haploid solved my previous puzzle way too fast, here is another one: what is that page really trying to load? And why is it that NoScript and Adblock Plus disagree so much on that — none of the dozen domains NoScript is showing show up in Adblock Plus and the one request showing up in Adblock Plus doesn’t show in NoScript.

Analyzing huge piles of code · 2009-02-10 23:37 by Wladimir Palant
Back in August, at the Firefox Summit, I promised Giorgio Maone to properly analyze NoScript. Trust me, better that than the alternative. And it is not that I forgot. I tried, really. Problem is, Giorgio isn’t a big friend of modularization. Most of NoScript code is contained in two files, one being 2000 and the other whooping 8000 lines long, all of its 500 features nicely intertwined. He isn’t a big fan of documentation either, keeping code comments to a minimum as to prevent code bloat. Finally, he isn’t a big fan of consistency and made sure that each feature is triggered only under its very unique conditions. In short, the code is a mess.

Five wrong reasons to use eval() in an extension · 2009-02-06 13:35 by Wladimir Palant
One of the most overused JavaScript features is the eval()
function. I have seen it used in very many extensions but only a few actually had a good reason to use it. So I want to go through all the wrong reasons one would use eval()
.

Vulnerable extensions survey · 2009-02-05 16:49 by Wladimir Palant
I spent in total something like 10 hours searching 78 of the top 100 extensions for signs of unsafe interactions with the web (yes, I failed downloading the extensions that are hidden behind a EULA, will do better next time). The result: 14 extensions with severe vulnerabilities (typically the kind of vulnerability that lets a web page take over your browser and even the computer if your browser runs with administrator privileges) and several proof of concept exploits. The good news: I don’t think that I missed too many vulnerable extensions, when I searched for more patterns I just kept finding new issues in the extensions that were already known to be vulnerable. More good news: none of the top 10 most popular extensions made the list. The bad news: many of the remaining extensions didn’t make this list simply because they don’t interact with the web or only interact with the web in ways that are relatively unproblematic. Some others were just too messy to get an overview in reasonable time, so it was impossible to understand whether questionable coding practices actually caused security issues.

Displaying web content in an extension - without security issues · 2009-01-28 12:02 by Wladimir Palant
Over the last few years I reported a bunch of security vulnerabilities in various extensions and by far the most common issue was: “Extension Foo allows execution of remote code in privileged context”. Typically, an RSS reader extension would take the content of the RSS feed (HTML code), format it nicely and insert into the extension window. The issue that is overlooked here is that the RSS feed could contain some JavaScript code and it would then execute with the privileges of the extension — meaning for example that it would get full access to the browser (cookies, history etc) and to user’s files. pdp discovered a similar issue in the Firebug extension that uses an HTML-based templating system and forgot to sanitize some input received from the webpage.

Now it got me as well · 2009-01-15 23:24 by Wladimir Palant
Giorgio knew very well of course that I was only waiting for a chance to tag him, so he tagged me first. Argh… Whatever, here are the rules:

Deobfuscating JavaScript · 2009-01-12 17:28 by Wladimir Palant
A few months ago I read a post in the WebSense Security Labs blog: The Ultimate Deobfuscator. Wow, pretty impressive hacking effort and nice tricks to hook JavaScript eval()
function and document.write()
in Internet Explorer. But couldn’t you use JS Debugger hooks in Firefox to do the same thing with only a few lines of code? And then maybe even more generic because eval()
and document.write()
are certainly not the only ways to generate JavaScript code on the fly (out of the top of my head: changing window.location
to a JavaScript URL, event handler attributes or setTimeout()
with a string parameter).

On the new Ctrl+Tab behavior · 2009-01-09 12:23 by Wladimir Palant
While I usually spend most of my time with stable browser versions, I still use Minefield frequently. And Minefield builds now have the new Ctrl+Tab behavior again. While this feature will certainly help most users navigate around their tabs, I cannot help myself disliking it. And now I finally understand my problem: usually I don’t even look at the screen when switching tabs.

EasyList and EasyElement got merged · 2009-01-06 11:51 by Wladimir Palant
After some discussion Rick decided that keeping EasyList and EasyElement separate is no longer necessary. Today they were combined into one subscription and I created redirects to make sure everybody using EasyElement or one of the combined subscriptions containing EasyElement gets updated automatically. Just to let everybody know that there is only EasyList and EasyPrivacy now. Adblock Plus will also recommend “plain” EasyList again starting with version 1.0.1.

Microsoft joining the ranks of referrer spammers? · 2008-12-19 08:52 by Wladimir Palant
I just noticed an unusually high amount of requests in my logs with referrer being Live Search, all with the same search request. Now that doesn’t make sense because I usually get very few people from there, about 0.5% of the requests referred by Google. And I just don’t believe that everybody suddenly decided to search for “adblockplus”. Finally, all requests came in for http://adblockplus.org/ and were redirected to http://adblockplus.org/en/ — but Live Search doesn’t even list the main page, it links directly the the English one (or German, or French, depending on your location).
