<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Tiger Technologies Blog &#187; Useful Tips</title>
	<atom:link href="http://blog.tigertech.net/category/useful-tips/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.tigertech.net</link>
	<description>Behind the scenes at tigertech.net</description>
	<lastBuildDate>Fri, 12 Mar 2010 08:08:52 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>WP Super Cache and FeedBurner</title>
		<link>http://blog.tigertech.net/posts/wp-super-cache-and-feedburner/</link>
		<comments>http://blog.tigertech.net/posts/wp-super-cache-and-feedburner/#comments</comments>
		<pubDate>Fri, 29 Jan 2010 23:56:15 +0000</pubDate>
		<dc:creator>Ken</dc:creator>
				<category><![CDATA[Tales From the Support Team]]></category>
		<category><![CDATA[Useful Tips]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://blog.tigertech.net/?p=980</guid>
		<description><![CDATA[We&#8217;ve got a lot of customers running WordPress, and we definitely recommend running WP Super Cache to improve performance. It can help dramatically!
But recently we&#8217;ve seen a number of our customers getting hammered by a ton of requests from FeedBurner. Usually the request is of this form:
/somepost?utm_source=feedburner&#038;utm_medium=feed&#038;utm_campaign=SomeCampaignString
We&#8217;ve also seen FeedBurner going crazy and making thousands [...]]]></description>
			<content:encoded><![CDATA[<p>We&#8217;ve got a lot of customers running WordPress, and we definitely <a href="http://support.tigertech.net/wordpress-performance">recommend running WP Super Cache to improve performance</a>. It can help dramatically!</p>
<p>But recently we&#8217;ve seen a number of our customers getting hammered by a ton of requests from FeedBurner. Usually the request is of this form:</p>
<p>/somepost?utm_source=feedburner&#038;utm_medium=feed&#038;utm_campaign=SomeCampaignString</p>
<p>We&#8217;ve also seen FeedBurner going crazy and making thousands of duplicate requests. One of the sites we host has gotten 45,000 simple status requests (HTTP &#8220;HEAD&#8221; requests) from FeedBurner today, for no good reason that we can see.</p>
<p><span id="more-980"></span></p>
<p>Unfortunately, the default rules of WP Super Cache prevent it from caching any request with a query that contains an equal sign. So all of these requests are being unnecessarily run freshly each time, rather than being served from the cache.</p>
<p>There&#8217;s an easy fix to this. Open your Web site&#8217;s .htaccess file. Look for the section of lines for WP Super Cache, and find the line which tests <kbd>%{QUERY_STRING}</kbd>. Insert this new line of text immediately above the existing line:</p>
<p><code>RewriteCond %{QUERY_STRING} ^utm_source=(feedburner|twitterfeed) [OR]</code></p>
<p>The new line (ending with <kbd>[OR]</kbd>) must come before the existing <kbd>%{QUERY_STRING}</kbd> line. After inserting, the two lines should look exactly like this:</p>
<p><code>RewriteCond %{QUERY_STRING} ^utm_source=(feedburner|twitterfeed) [OR]<br />
RewriteCond %{QUERY_STRING} !.*=.*</code></p>
<p>There are two very similar blocks right next to each other in the .htaccess file. Be sure to add the new line to the same place in each block.</p>
<p>That&#8217;s the only change you&#8217;ll have to make! WP Super Cache will now be able to cache requests for normal pages that come from FeedBurner or Twitterfeed. If your Web site was being abused by FeedBurner (or Twitterfeed), you should see a definite improvement.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tigertech.net/posts/wp-super-cache-and-feedburner/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Super-fast database writes with INSERT DELAYED</title>
		<link>http://blog.tigertech.net/posts/insert-delayed/</link>
		<comments>http://blog.tigertech.net/posts/insert-delayed/#comments</comments>
		<pubDate>Tue, 26 Jan 2010 00:20:13 +0000</pubDate>
		<dc:creator>Ken</dc:creator>
				<category><![CDATA[Tech Corner]]></category>
		<category><![CDATA[Useful Tips]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[performance]]></category>

		<guid isPermaLink="false">http://blog.tigertech.net/?p=973</guid>
		<description><![CDATA[Many Web sites write data to a database. Usually, the data absolutely must be properly saved, so the default way of adding records (using an SQL &#8220;INSERT&#8221; statement) ensures that the data is permanently stored on the server&#8217;s disks. Doing that takes a relatively long time in computer terms &#8212; it&#8217;s much slower than most [...]]]></description>
			<content:encoded><![CDATA[<p>Many Web sites write data to a database. Usually, the data absolutely must be properly saved, so the default way of adding records (using an SQL &#8220;INSERT&#8221; statement) ensures that the data is permanently stored on the server&#8217;s disks. Doing that takes a relatively long time in computer terms &#8212; it&#8217;s much slower than most things computers do.</p>
<p>In some cases, you might be storing data that&#8217;s not quite so important. And if it means your application can run much faster, you might be willing to risk a very small chance of data loss. That&#8217;s where MySQL&#8217;s &#8220;INSERT DELAYED&#8221; statement, which works with MyISAM table types (but not InnoDB tables), can be useful. (Tables are created as type MyISAM by default, so most tables are eligible to benefit from this tip.)</p>
<p><span id="more-973"></span></p>
<p>Adding the word &#8220;DELAYED&#8221; to your statement tells MySQL to remember the data to be added and return immediately to your application. MySQL will then write the data as soon as the database isn&#8217;t busy. This lets your insertion happen (effectively) immediately, and reduces the load on the database (and server). Using this technique can give your application a huge performance gain.</p>
<p>Since the record is not written immediately, there is a very small chance that the data will be lost before it&#8217;s written to the disk. However, the odds of this happening are very small. It would only happen if MySQL crashed before it had a moment of idle time to write out the record, if the server lost power, or if some similar unexpected event happened.</p>
<p>Using &#8220;INSERT DELAYED&#8221; is recommended for applications that do not absolutely depend upon records being immediately written. Any data which is only referred to at a later time (rather than on-demand) or in a summary fashion is a good candidate for using &#8220;INSERT DELAYED&#8221;. Some examples are logging the IP address of each visitor, or tracking ad impressions for each page viewed on your Web site. Be sure to read the <a href="http://dev.mysql.com/doc/refman/5.0/en/insert-delayed.html">official documentation</a> for full details and additional considerations.</p>
<p>If you want to use &#8220;INSERT DELAYED&#8221;, first check the documentation to see if your application already supports it. If it does not, you&#8217;d need to modify the application. If you have any questions about whether a particular database table is a good candidate for using &#8220;INSERT DELAYED&#8221;, just ask us and we&#8217;ll take a look.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tigertech.net/posts/insert-delayed/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Better performance from WP Super Cache</title>
		<link>http://blog.tigertech.net/posts/better-performance-from-wp-super-cache/</link>
		<comments>http://blog.tigertech.net/posts/better-performance-from-wp-super-cache/#comments</comments>
		<pubDate>Wed, 20 Jan 2010 18:58:22 +0000</pubDate>
		<dc:creator>Robert Mathews</dc:creator>
				<category><![CDATA[Tech Corner]]></category>
		<category><![CDATA[Useful Tips]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[WP Super Cache]]></category>

		<guid isPermaLink="false">http://blog.tigertech.net/?p=922</guid>
		<description><![CDATA[If you use the WP Super Cache WordPress plugin (and you should, if you use WordPress), it has a settings page section titled &#8220;Expiry Time &#038; Garbage Collection&#8221;. It sets the &#8220;Expire time&#8221; to 3600 seconds by default, and warns that you should set it lower on a busy site.
That advice makes sense if you [...]]]></description>
			<content:encoded><![CDATA[<p>If you use the <a href="http://support.tigertech.net/wordpress-performance">WP Super Cache</a> WordPress plugin (and you should, if you use WordPress), it has a settings page section titled &#8220;Expiry Time &#038; Garbage Collection&#8221;. It sets the &#8220;Expire time&#8221; to 3600 seconds by default, and warns that you should set it lower on a busy site.</p>
<p>That advice makes sense if you have a sudden surge of traffic to a single page. However, if your site is generally very busy across all pages (for example, if you have an archive of hundreds or thousands of posts that are constantly being indexed by search engines), we&#8217;ve found that you should do the opposite to improve performance: set it much higher. We recommend setting it to <strong>172800 seconds</strong> (which is 48 hours). This can cut your CPU usage in half, which will speed up your site.</p>
<p><span id="more-922"></span></p>
<p>The reason for this is that when WP Super Cache creates a cached page, it wants to make sure that those pages don&#8217;t build up forever. Every ten minutes or so, it looks through them all and deletes any that are older than the &#8220;expire time&#8221;.</p>
<p>On some servers that use a network file system called &#8220;NFS&#8221;, looking through a large number of files causes performance problems. That&#8217;s why the WP Super Cache author recommends making them expire quickly: it reduces the number of files it has to examine each time.</p>
<p>On our servers, we don&#8217;t use NFS and looking through lots of files does not cause a performance problem. Leaving the files for a longer time is safe and increases the chance that a page will already be cached when it&#8217;s needed.</p>
<p>If you&#8217;re a Tiger Technologies customer who makes this change and you want to see how it affects the CPU usage, just let us know and we can provide you with details.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tigertech.net/posts/better-performance-from-wp-super-cache/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>WordPress 2.8.6 security update</title>
		<link>http://blog.tigertech.net/posts/wordpress-2-8-6-security-update/</link>
		<comments>http://blog.tigertech.net/posts/wordpress-2-8-6-security-update/#comments</comments>
		<pubDate>Thu, 03 Dec 2009 21:44:42 +0000</pubDate>
		<dc:creator>Robert Mathews</dc:creator>
				<category><![CDATA[Tech Corner]]></category>
		<category><![CDATA[Useful Tips]]></category>
		<category><![CDATA[mod_security]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://blog.tigertech.net/?p=863</guid>
		<description><![CDATA[If you use WordPress blog software on your site, be sure to upgrade to WordPress 2.8.6. The upgrade contains important security fixes. Upgrading is usually easy with the built-in WordPress &#8220;update now&#8221; feature.
Although all WordPress users should upgrade, we&#8217;ve added security rules to our servers to protect our Web hosting customers who haven&#8217;t yet upgraded. [...]]]></description>
			<content:encoded><![CDATA[<p>If you use WordPress blog software on your site, be sure to upgrade to <a href="http://wordpress.org/development/2009/11/wordpress-2-8-6-security-release/">WordPress 2.8.6</a>. The upgrade contains important security fixes. Upgrading is usually easy with the built-in WordPress &#8220;update now&#8221; feature.</p>
<p>Although all WordPress users should upgrade, we&#8217;ve added security rules to our servers to protect our Web hosting customers who haven&#8217;t yet upgraded. Other people may find the rules useful if they use <a href="http://www.modsecurity.org/">mod_security</a> on Apache Web servers. The rest of this post contains more technical details.</p>
<p><span id="more-863"></span></p>
<h3>Surprising Apache script behavior</h3>
<p>One of the fixes in WordPress 2.8.6 compensates for a peculiar and surprising feature (or bug, if you prefer) in the Apache Web server: in many cases, it will run a file with a name like &#8220;image.php.jpeg&#8221; as a PHP script.</p>
<p>Some software (like WordPress 2.8.5 and earlier) can be configured to allow strangers to upload JPEG and other files to your site &#8212; but it checks only the &#8220;.jpeg&#8221; file extension to see if the uploaded file is safe. So a &#8220;hacker&#8221; could upload a malicious PHP script named &#8220;image.php.jpeg&#8221;, then &#8220;view the image&#8221; in a Web browser&#8230; but the server would actually run the PHP script.</p>
<p>Because of that, we&#8217;ve added a mod_security rule that prevents site visitors from requesting certain file extensions that include &#8220;.php.&#8221; in their name. (There are <a href="http://core.trac.wordpress.org/ticket/11122">other possible solutions</a>, but testing has shown this is the least intrusive to our existing customers.)</p>
<p>Here&#8217;s a mod_security rule that accomplishes that (adjust the extensions to suit your taste; these are the WordPress 2.8.5 allowed extensions):</p>
<p><code>SecRule REQUEST_FILENAME "\.php[456]?\.(asf|asx|avi|bmp|gif|ico|jpe|jpeg|jpg|png|tif|tiff|wax|wmv|wmx)$" "deny,status:412,auditlog"</code></p>
<h3>WordPress brute force attacks</h3>
<p>Another recently reported attack against WordPress (which is unrelated to version 2.8.6 in particular) involves &#8220;brute force&#8221; attempts to guess the administrator password. The proper solution is to choose a good password for your blog (not a word from the dictionary!), but some people don&#8217;t do that.</p>
<p>To reduce the risk of successful attacks against our customers, we limit each IP address to 25 &#8220;wp-login.php&#8221; attempts within a five minute period. Here&#8217;s how you can do that with mod_security:</p>
<p><code>SecAction phase:1,initcol:ip=%{REMOTE_ADDR},nolog<br />
SecRule REQUEST_LINE "post .*/wp-login" "nolog,phase:1,setvar:ip.wordpress_login=+1,deprecatevar:ip.wordpress_login=5/60"<br />
SecRule IP:WORDPRESS_LOGIN "@gt 25" "deny,status:412,auditlog,chain"<br />
SecRule REQUEST_LINE "post .*/wp-login"</code></p>
<p>This unfortunately doesn&#8217;t prevent &#8220;distributed&#8221; attacks in which many different IP addresses submit different password guesses, but it will help in many cases.</p>
<h3>Summary</h3>
<p>So: if you use WordPress yourself, be sure to update. And if you provide blog hosting services for others, consider adding the mod_security rules to your Apache server.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tigertech.net/posts/wordpress-2-8-6-security-update/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>WordPress 2.8.4 security update</title>
		<link>http://blog.tigertech.net/posts/wordpress-2-8-4-security-update/</link>
		<comments>http://blog.tigertech.net/posts/wordpress-2-8-4-security-update/#comments</comments>
		<pubDate>Thu, 13 Aug 2009 00:05:31 +0000</pubDate>
		<dc:creator>Robert Mathews</dc:creator>
				<category><![CDATA[Tech Corner]]></category>
		<category><![CDATA[Useful Tips]]></category>
		<category><![CDATA[mod_security]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://blog.tigertech.net/?p=709</guid>
		<description><![CDATA[If you use WordPress blog software on your site, be sure to upgrade to WordPress 2.8.4 as soon as possible. The upgrade contains important security fixes.
Although all WordPress users should upgrade right away, we&#8217;ve added security rules to our servers to protect our Web hosting customers who haven&#8217;t yet upgraded. Other people may find the [...]]]></description>
			<content:encoded><![CDATA[<p>If you use WordPress blog software on your site, be sure to upgrade to <a href="http://wordpress.org/development/2009/08/2-8-4-security-release/">WordPress 2.8.4</a> as soon as possible. The upgrade contains important security fixes.</p>
<p>Although all WordPress users should upgrade right away, we&#8217;ve added security rules to our servers to protect our Web hosting customers who haven&#8217;t yet upgraded. Other people may find the rules useful if they use <a href="http://www.modsecurity.org/">mod_security</a> on Apache Web servers. The rest of this post contains more technical details.</p>
<p><span id="more-709"></span></p>
<p>The first thing to be concerned about is the problem fixed in version 2.8.4. Earlier versions allowed strangers to repeatedly reset the administrator&#8217;s password to a random string of text. This doesn&#8217;t allow the stranger to gain access to your blog, but it sure is annoying.</p>
<p>The exploit works because PHP interprets HTTP parameters that end with two square brackets, like this:</p>
<p><code>key[]=</code></p>
<p>&#8230; as an array, and WordPress didn&#8217;t check for that possibility. These mod_security rules block any parameters to wp-login.php that contain square brackets:</p>
<p><code>SecRule REQUEST_FILENAME "/wp-login\.php$" "deny,status:412,auditlog,chain"<br />
SecRule ARGS_NAMES "\["</code></p>
<p>So that will prevent strangers from resetting passwords.</p>
<p>In addition to that, we&#8217;ve discovered something else interesting. Earlier versions of WordPress (all versions before 2.8.3) seem to contain more of a security problem than previously thought.</p>
<p>The release announcements for versions <a href="http://wordpress.org/development/2009/07/wordpress-2-8-1/">2.8.1</a> and <a href="http://wordpress.org/development/2009/08/wordpress-2-8-3-security-release/">2.8.3</a> said &#8220;admin pages added by certain plugins could be viewed by unprivileged users, resulting in information being leaked&#8221;, then &#8220;I missed some places when fixing the privilege escalation issues for 2.8.1&#8243;.</p>
<p>Allowing unprivileged users to see information they shouldn&#8217;t see is undesirable, but again, it doesn&#8217;t seem to allow strangers to take over your blog.</p>
<p>Unfortunately, we&#8217;ve found that the bug does actually allow clever unprivileged attackers to change some of the blog settings in version 2.8.2 and earlier. And a really clever attacker can leverage this into a &#8220;remote code exploit&#8221; by taking advantage of a strange PHP feature called &#8220;<a href="http://www.php.net/manual/en/language.types.string.php">Complex (curly) syntax</a>&#8220;. The blogs of two of our customers were hijacked today by an exploit that does exactly this.</p>
<p>We won&#8217;t go into full details yet, because it doesn&#8217;t seem that the vulnerability has been published elsewhere (we&#8217;ve contacted the WordPress folks in case they weren&#8217;t aware). But we will say that the attack can&#8217;t succeed unless the server allows people to request &#8220;wp-admin&#8221; URLs with two consecutive slashes, so the following mod_security rule blocks it:</p>
<p><code>SecRule REQUEST_FILENAME "wp-admin.*//" "deny,status:412,auditlog"</code></p>
<p>So there are several reasons to make sure you&#8217;ve upgraded your own blog to 2.8.4. (The WordPress &#8220;automatic upgrade&#8221; feature usually makes this easy.) And if you run a server that hosts WordPress blogs, consider adding the two mod_security rules mentioned above to protect your users.</p>
<p><em>Update September 6: The new security problem we mentioned above is  being widely discussed in posts like <a href="http://wordpress.org/development/2009/09/keep-wordpress-secure/">How to Keep WordPress Secure</a> and <a href="http://lorelle.wordpress.com/2009/09/04/old-wordpress-versions-under-attack/">Old WordPress Versions Under Attack</a>. Although our customers have been protected against this particular new attack since August 12, as described above, you should certainly still upgrade your copy of WordPress to protect against other attacks.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tigertech.net/posts/wordpress-2-8-4-security-update/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Easy Outlook 2007 setup using AutoDiscover</title>
		<link>http://blog.tigertech.net/posts/easy-outlook-2007-setup-using-autodiscover/</link>
		<comments>http://blog.tigertech.net/posts/easy-outlook-2007-setup-using-autodiscover/#comments</comments>
		<pubDate>Tue, 21 Oct 2008 12:00:56 +0000</pubDate>
		<dc:creator>Ken</dc:creator>
				<category><![CDATA[Business Announcements]]></category>
		<category><![CDATA[Useful Tips]]></category>
		<category><![CDATA[e-mail]]></category>

		<guid isPermaLink="false">http://blog.tigertech.net/?p=247</guid>
		<description><![CDATA[We are pleased to announce that we now support the AutoDiscover feature of Outlook 2007 to provide easy configuration of e-mail accounts. (We are the only e-mail provider that we know of who supports this feature!) When you need to configure an e-mail account within Outlook 2007, now you only need to enter your full [...]]]></description>
			<content:encoded><![CDATA[<p>We are pleased to announce that we now support the AutoDiscover feature of Outlook 2007 to provide easy configuration of e-mail accounts. (We are the only e-mail provider that we know of who supports this feature!) When you need to configure an e-mail account within Outlook 2007, now you only need to enter your full name, e-mail address, and e-mail password. Outlook 2007 will then talk with our servers to get the rest of the settings needed to configure the e-mail account.</p>
<p>We have <a href="http://support.tigertech.net/outlook-2007-autodiscover">a support page</a> available which walks you through setup using AutoDiscover.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tigertech.net/posts/easy-outlook-2007-setup-using-autodiscover/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress 2.5.1 security update (and mod_security rule)</title>
		<link>http://blog.tigertech.net/posts/wordpress-251-security-update-and-mod_security-rules/</link>
		<comments>http://blog.tigertech.net/posts/wordpress-251-security-update-and-mod_security-rules/#comments</comments>
		<pubDate>Fri, 25 Apr 2008 23:54:19 +0000</pubDate>
		<dc:creator>Robert Mathews</dc:creator>
				<category><![CDATA[Tech Corner]]></category>
		<category><![CDATA[Useful Tips]]></category>
		<category><![CDATA[mod_security]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://blog.tigertech.net/?p=115</guid>
		<description><![CDATA[If you use the WordPress 2.5 blog software on your site, be sure to upgrade to WordPress 2.5.1 as soon as possible. The upgrade contains an important security fix. (We&#8217;ve updated our own blog, and it was painless.)
Although all WordPress users should upgrade right away, we&#8217;ve also added a security rule to our servers to [...]]]></description>
			<content:encoded><![CDATA[<p>If you use the WordPress 2.5 blog software on your site, be sure to upgrade to <a href="http://wordpress.org/development/2008/04/wordpress-251/">WordPress 2.5.1</a> as soon as possible. The upgrade contains an important security fix. (We&#8217;ve updated our own blog, and it was painless.)</p>
<p>Although all WordPress users should upgrade right away, we&#8217;ve also added a security rule to our servers to try and protect our customers who haven&#8217;t yet upgraded. Other people may also find the security rule useful if they use <a href="http://www.modsecurity.org/">mod_security</a> on Apache Web servers. The rest of this post contains more technical details.</p>
<p><span id="more-115"></span></p>
<p>So what&#8217;s the <a href="http://seclists.org/fulldisclosure/2008/Apr/0699.html">security problem with WordPress 2.5</a>? Well, if your blog allows strangers to register, the vulnerability allows evildoers to create a new unprivileged username like &#8220;admin0&#8243;, then use the cookie from that username to login as the privileged username &#8220;admin&#8221;.</p>
<p>This works because WordPress creates a login cookie with a value like this for &#8220;admin0&#8243;:</p>
<p><code>admin0|1209331453|2a771ff005c67b2aaa0a872aaa213f39</code></p>
<p>The first part is the username, the second part is the cookie&#8217;s expiration time, and the third part is an MD5 hash of the concatenated username, expiration, and some secret text.</p>
<p>The trouble is that this cookie is also valid:</p>
<p><code>admin|01209331453|2a771ff005c67b2aaa0a872aaa213f39</code></p>
<p>We simply moved the &#8220;0&#8243; from the end of &#8220;admin&#8221; to the beginning of the expiration. Although this changes the username, it doesn&#8217;t change the MD5 hash! That&#8217;s because the text that the hash is based on doesn&#8217;t contain a separator such as a pipe character, as it should. In either case, it&#8217;s just hashing &#8220;admin01209331453&#8243; (plus the same secret text), and the identical hash is valid for both the privileged and unprivileged users. A nasty bug indeed.</p>
<p>You don&#8217;t necessarily need to use &#8220;0&#8243; on the end of the username, either; other digits can be made to work. They increase the expiration time of the cookie, but that doesn&#8217;t make it invalid.</p>
<p>So this vulnerability allows people to create a WordPress username ending in one or more digits, then use the cookie from that username to login as another username without the digits on the end.</p>
<p>Here&#8217;s where mod_security can be useful. It&#8217;s a great defensive tool that we&#8217;ve been using more and more to protect our customers from this kind of attack. If it&#8217;s possible to identify something that&#8217;s different about an &#8220;evil&#8221; page request (compared to a &#8220;good&#8221; page request), you can probably block the evil request using mod_security.</p>
<p>In this case, one thing immediately stands out: a &#8220;good&#8221; request always has a 10 digit expiration time in the cookie, but a &#8220;bad&#8221; request always has 11 or more digits. If we can block WordPress cookies that contain 11 or more digit expirations, that should block the evil request.</p>
<p>This rule for mod_security 1.x does the trick:</p>
<p><code>SecFilterSelective HTTP_Cookie &quot;wordpress_[a-f0-9]{32}=[^\|]+\|[0-9]{11,}\|[a-f0-9]{32}&quot;</code></p>
<p>And here&#8217;s the same rule for mod_security 2.x:</p>
<p><code>SecRule REQUEST_HEADERS:Cookie &quot;wordpress_[a-f0-9]{32}=[^\|]+\|[0-9]{11,}\|[a-f0-9]{32}&quot;</code></p>
<p>This looks for a cookie value containing 11 or more digits between the pipe symbols. This rule successfully blocks a test attack we created, and does not appear to give false positives (we&#8217;ve had it in place on servers that have served several million pages over the last few hours, with no matches beyond our tests).</p>
<p>Just so it&#8217;s clear, our customers don&#8217;t need to use these rules, because they&#8217;re already on all our servers &#8212; but we hope they&#8217;re useful to someone else. </p>
<p>Of course, if you know of any other attack vectors, please post a comment so we can improve the rules.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tigertech.net/posts/wordpress-251-security-update-and-mod_security-rules/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Webmail &#8220;Thread View&#8221; is now a preference</title>
		<link>http://blog.tigertech.net/posts/webmail-thread-view-is-now-a-preference/</link>
		<comments>http://blog.tigertech.net/posts/webmail-thread-view-is-now-a-preference/#comments</comments>
		<pubDate>Tue, 18 Mar 2008 20:00:23 +0000</pubDate>
		<dc:creator>Robert Mathews</dc:creator>
				<category><![CDATA[Tales From the Support Team]]></category>
		<category><![CDATA[Useful Tips]]></category>
		<category><![CDATA[webmail]]></category>

		<guid isPermaLink="false">http://blog.tigertech.net/posts/webmail-thread-view-is-now-a-preference/</guid>
		<description><![CDATA[One of the features of our new(ish) Webmail system is &#8220;thread view&#8221;. This groups similar messages together based on their &#8220;Subject&#8221; and other headers, which can occasionally be useful if you&#8217;re trying to see all the replies to a particular message and you want them grouped together.
However, thread view has a potential downside: it you [...]]]></description>
			<content:encoded><![CDATA[<p>One of the features of our new(ish) Webmail system is &#8220;thread view&#8221;. This groups similar messages together based on their &#8220;Subject&#8221; and other headers, which can occasionally be useful if you&#8217;re trying to see all the replies to a particular message and you want them grouped together.</p>
<p>However, thread view has a potential downside: it you have several active threads going with several messages each, new messages can sometimes appear on the second page of the incoming mail screens, instead of the first page.</p>
<p>That&#8217;s not a problem if you&#8217;re expecting it. However, since we introduced the new Webmail system, we&#8217;ve had several complaints from customers who accidentally clicked &#8220;Switch to Thread View&#8221; without realizing what it does, then thought some of their incoming mail was missing because they aren&#8217;t used to looking for new mail on other pages. Since thread view is &#8220;remembered&#8221; even after you logout and login again, this caused some people a great deal of heartache.</p>
<p>From our logs, we&#8217;ve found that very few people actually use thread view. Because it seems to cause frequent problems and few people use it, we&#8217;ve made it an optional feature instead of being always enabled.</p>
<p>If (like most people) you don&#8217;t use thread view, you don&#8217;t need to do anything. If do you want to use thread view, it&#8217;s still available: just click &#8220;Preferences&#8221;, then click &#8220;Display Preferences&#8221;, then change &#8220;Show &#8216;Thread View&#8217; Link&#8221; to &#8220;Yes&#8221;.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tigertech.net/posts/webmail-thread-view-is-now-a-preference/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iPhone e-mail setup instructions available</title>
		<link>http://blog.tigertech.net/posts/iphone/</link>
		<comments>http://blog.tigertech.net/posts/iphone/#comments</comments>
		<pubDate>Thu, 16 Aug 2007 23:08:29 +0000</pubDate>
		<dc:creator>Robert Mathews</dc:creator>
				<category><![CDATA[Useful Tips]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[support pages]]></category>

		<guid isPermaLink="false">http://blog.tigertech.net/posts/iphone/</guid>
		<description><![CDATA[In an effort to keep up with the cool kids, I blew this year&#8217;s gadget budget on one o&#8217; those fancy iPhones. It&#8217;s pretty darn nifty, and now that I&#8217;ve had a few weeks practice, I can almost completely prevent myself from collapsing to the floor, sobbing &#8220;I spent $600 on a phone! My God, [...]]]></description>
			<content:encoded><![CDATA[<p>In an effort to keep up with the cool kids, I blew this year&#8217;s gadget budget on one o&#8217; those fancy iPhones. It&#8217;s pretty darn nifty, and now that I&#8217;ve had a few weeks practice, I can almost completely prevent myself from collapsing to the floor, sobbing &#8220;I spent $600 on a phone! My God, what have I done?!&#8221;</p>
<p>Anyway, it turns out that Apple convinced some of you to take leave of your financial senses, too, and you&#8217;ve been asking us how to set up your iPhone to read your e-mail. So we&#8217;ve spent many hours voiding the warranty on our phone, getting it to the point where we could extract <a href="http://support.tigertech.net/iphone">detailed screen shots showing exactly how to set up iPhone mail</a>. If you have an iPhone, give it a try! Our servers handle iPhone e-mail connections just fine &#8212; and the connections are fully encrypted by default, making sure your e-mail and passwords stay secure as you roam the world on strangers&#8217; WiFi networks.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tigertech.net/posts/iphone/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mailman monthly password reminders: not recommended</title>
		<link>http://blog.tigertech.net/posts/mailman-monthly-password-reminders-not-recommended/</link>
		<comments>http://blog.tigertech.net/posts/mailman-monthly-password-reminders-not-recommended/#comments</comments>
		<pubDate>Fri, 01 Jun 2007 17:48:44 +0000</pubDate>
		<dc:creator>Robert Mathews</dc:creator>
				<category><![CDATA[Useful Tips]]></category>
		<category><![CDATA[mailman]]></category>

		<guid isPermaLink="false">http://blog.tigertech.net/posts/mailman-monthly-password-reminders-not-recommended/</guid>
		<description><![CDATA[One of the features of our service is the industrial-strength Mailman mailing list manager. Mailman is a very good program in some ways (it&#8217;s built like a tank and reliably handles very large volumes of list mail, and it removes much of the drudgery of managing large lists), but it has a couple of undesirable [...]]]></description>
			<content:encoded><![CDATA[<p>One of the features of our service is the industrial-strength <a href="http://support.tigertech.net/mailman">Mailman mailing list manager</a>. Mailman is a very good program in some ways (it&#8217;s built like a tank and reliably handles very large volumes of list mail, and it removes much of the drudgery of managing large lists), but it has a couple of undesirable &#8220;features&#8221;.</p>
<p>The most obvious is that the interface is terribly ugly (the Mailman developers are working on a big improvement to this, thankfully; just so it&#8217;s clear, we didn&#8217;t create the program, and we&#8217;re as horrified by the circa-1996 appearance as everyone else). Another problem with the program, though, is the option for &#8220;monthly password reminders&#8221;. This is a design flaw that&#8217;s being removed from Mailman, and although most of the lists on our servers don&#8217;t use password reminders, customers who do should probably turn them off now in preparation for that change.</p>
<p><span id="more-55"></span></p>
<p>So what&#8217;s the issue? The main problem is that Mailman sends people&#8217;s personal passwords over the Internet via plain text e-mail, which is about as secure as sending them around the world on a postcard. One of the most basic password security rules for users is &#8220;memorize a password instead of writing it down anywhere&#8221;, and Mailman completely breaks that rule. And one of the most basic rules for secure software designers is &#8220;store passwords only in encrypted form so that even the program author and system administrator can&#8217;t tell what they originally were, so that if hackers break into the system they can&#8217;t tell either&#8221;. Mailman breaks this rule, too &#8212; it has to, in order to be able to send the monthly password reminders. The authors of Mailman attempted to solve this problem by adding a note to the subscription page saying &#8220;do not use a valuable password&#8221;, but that goes against human nature; some people will inevitably enter the same password they use for online banking, etc.</p>
<p>There&#8217;s another problem with password reminders, too, which is that if you have more than one Mailman list, the password reminders are sent from the e-mail address of a seemingly random one of those lists, even if the recipient isn&#8217;t subscribed to that particular list. Not a security problem, but certainly annoying.</p>
<p>Anyway, bottom line: monthly password reminders are a bad idea and don&#8217;t work properly anyway. The good news is that the Mailman developers have <a href="http://wiki.list.org/display/DEV/2007/01/13/Passwords+done+right">completely removed password reminders and plaintext passwords from the next version of Mailman</a>, which we&#8217;ll be using when it becomes available. If your list uses monthly password reminders, they&#8217;re going to go away, hopefully soon. (In fact, we consider the password reminders such a source of problems that if the new version of Mailman is substantially delayed, we may end up preemptively disabling them for all lists on our servers.)</p>
<p>This actually won&#8217;t affect most of our customers, because the Mailman setup wizard in our control panel hasn&#8217;t turned on the password reminders option for new lists for a long time now. However, a few older lists had it enabled by default, and it&#8217;s still possible for customers to manually enable it by clicking one of the obscure options in the Mailman administrative interface.</p>
<p>If your list uses password reminders, we recommend turning them off now:</p>
<ol>
<li>Login to the <a href="http://support.tigertech.net/mailman-manage">administration page for your list</a></li>
<li>Scroll down to the &#8220;Send monthly password reminders?&#8221; setting and change it to &#8220;No&#8221;</li>
<li>Scroll to the bottom of the page and click &#8220;Submit Your Changes&#8221;.</li>
</ol>
<p>Doing this makes the list more secure for your subscribers, and also makes sure you&#8217;re not surprised when password reminders stop by themselves.</p>
<p>If you have trouble disabling the reminders, just <a href="http://support.tigertech.net/contact">contact us</a> and we&#8217;ll be glad to do it for you.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tigertech.net/posts/mailman-monthly-password-reminders-not-recommended/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
