<?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>iConverged &#187; security</title>
	<atom:link href="http://blog.roychowdhury.org/category/security/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.roychowdhury.org</link>
	<description></description>
	<lastBuildDate>Thu, 05 Jan 2012 22:06:55 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Adding a VPN server to ReadyNAS</title>
		<link>http://blog.roychowdhury.org/2011/05/10/adding-a-vpn-server-to-readynas/</link>
		<comments>http://blog.roychowdhury.org/2011/05/10/adding-a-vpn-server-to-readynas/#comments</comments>
		<pubDate>Tue, 10 May 2011 15:43:38 +0000</pubDate>
		<dc:creator>Arjun</dc:creator>
				<category><![CDATA[Arjun Roychowdhury]]></category>
		<category><![CDATA[general technology]]></category>
		<category><![CDATA[osx]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[macos]]></category>
		<category><![CDATA[openvpn]]></category>
		<category><![CDATA[readynas]]></category>
		<category><![CDATA[tunnelbrick]]></category>

		<guid isPermaLink="false">http://blog.roychowdhury.org/?p=624</guid>
		<description><![CDATA[Image (c) NetGear I recently purchased a 4 disk-bay Netgear ReadyNAS NV+ box. This was a few days after I lost 60% of my media collection because my HD just decided to stop working. And yes, I&#8217;ve been meaning to back up the archive, but never got around it, till it died. Hindsight is 20-20, I guess. Anyhow, the ReadyNAS NV+ is a great box. The nicest thing about it is that via plugins, you can convert it into a full fledged development box running linux. One of the things lacking was how to make this box a VPN server as well. I currently have OpenVPN running on an &#8216;always on&#8217; home laptop, but it was better if I moved the VPN server to the ReadyNAS box as it is the one that is supposed to be &#8216;always on&#8217; anyway. I searched around. There are several sites that give only partial instructions of how to get things working. No one site has &#8216;everything you need&#8217;. So I thought I&#8217;d post *exactly* how to do everything you need to get this working. Step 1: Install SSH and apt-get 1) Download the Enable RootSSH plugin from here. (You need this to ssh<a href="http://blog.roychowdhury.org/2011/05/10/adding-a-vpn-server-to-readynas/"> <br /><br /> (Read More...)</a>]]></description>
			<content:encoded><![CDATA[<div style="float: left;"><a href="http://blog.roychowdhury.org/wp-content/uploads/2011/05/nasinout.jpg"><img class="alignleft size-medium wp-image-639" title="nasinout" src="http://blog.roychowdhury.org/wp-content/uploads/2011/05/nasinout-300x182.jpg" alt="" width="300" height="182" /></a><em> <span style="color: grey;">Image (c) NetGear</span></em></div>
<p>I recently purchased a <a href="http://www.readynas.com/?cat=4">4 disk-bay Netgear ReadyNAS NV+ box</a>. This was a few days after I lost 60% of my media collection because my HD just decided to stop working. And yes, I&#8217;ve been meaning to back up the archive, but never got around it, till it died. Hindsight is 20-20, I guess.</p>
<p>Anyhow, the ReadyNAS NV+ is a great box. The nicest thing about it is that via plugins, you can convert it into a full fledged development box running linux. One of the things lacking was how to make this box a VPN server as well. I currently have OpenVPN running on an &#8216;always on&#8217; home laptop, but it was better if I moved the VPN server to the ReadyNAS box as it is the one that is supposed to be &#8216;always on&#8217; anyway.</p>
<p>I searched around. There are several sites that give only partial instructions of how to get things working. No one site has &#8216;everything you need&#8217;. So I thought I&#8217;d post *exactly* how to do everything you need to get this working.</p>
<p><span id="more-624"></span></p>
<p><strong>Step 1: Install SSH and apt-get</strong></p>
<p>1) Download the Enable RootSSH plugin from <a href="http://www.readynas.com/download/addons/4.00/EnableRootSSH_1.0.bin">here</a>. (You need this to ssh into readynas)</p>
<p>2) Install it in the ReadyNas via the menu (System/Update/Local Update)</p>
<p>3) Download the apt plugin from <a href="http://www.readynas.com/download/addons/4.00/APT_1.0.bin">here</a>. (you need this to download the openvpn package and dependencies)</p>
<p>4) Install it in the ReadyNas via the menu (System/Update/Local Update)</p>
<p><em>Note:</em> Don&#8217;t try and upload both plugin images together and then apply. Only the latest plugin will be applied.</p>
<p><strong>Step 2: Getting OpenVPN working: The layout</strong></p>
<p>Before we setup OpenVPN, lets discuss the network first. You may need to change the client.conf or server.conf as fit.</p>
<p>My home LAN has the following network: 192.168.1.x</p>
<p>The ReadyNAS server (which will be my VPN server soon) runs on: 192.168.1.10</p>
<p>The home router (Which allocates DHCP addresses to my home LAN and is the default internet gateway) runs on: 192.168.1.1</p>
<p>What I want:</p>
<p>a) I want to be able to connect to my ReadyNAS VPN server from outside my home</p>
<p>b) I want to make sure all my internet connections are not forced through my home LAN when connected via VPN.</p>
<p>c) I want my remote client to be able to access all my other machines @ home in addition to the VPN server</p>
<p><strong>Step 3: Getting OpenVPN Server working: The execution</strong></p>
<p>We need to do the following steps:</p>
<p>1) Generate the right certificates/keys for the server and client (easy)</p>
<p>2) Configure the server.conf and client.conf files correctly (logical if you follow the instructions)</p>
<p>3) Enable IP forwarding in your ReadyNas (if you don&#8217;t do this, you will not be able to access other machines on LAN)</p>
<p>4) Configure your default home router with a static route (if you don&#8217;t do this, you will not be able to access other machines on the LAN)</p>
<p><span style="text-decoration: underline;">Step 3.1: Install openVPN</span></p>
<p>Pre-requisite: You have SSH and apt-get installed and enabled in the ReadyNas.</p>
<p>First, connect to your readynas via SSH (password is same as your readyNas admin password)</p>
<p><code>ssh -l root 192.168.1.10</code></p>
<p>Once logged in:</p>
<p><code>apt-get update<br />
apt-get install openvpn</code></p>
<p>(the above will download and install all dependencies)</p>
<p>[Note: If you upgrade the NAS Firmware after installing openvpn (like I did for it to support OSX Lion) you will need to re-install openvpn or you may find it segfaulting when a client attempts to connect]</p>
<p><span style="text-decoration: underline;">Step 3.2: Create your certificates</span></p>
<p>(This is just the same instructions as <a href="http://forums.whirlpool.net.au/archive/1124562">this thread</a>)</p>
<p>You need to set some key variables which will be used to generate the certificate. The content here is not critical &#8211; you can change it to what you need. Basically, edit the vars file in your favorite editor and make the changes to the following variables in them. Make sure you save the changes.</p>
<p><code>cd /usr/share/doc/openvpn/examples/easy-rsa/<br />
vi vars<br />
export KEY_COUNTRY=US<br />
export KEY_PROVINCE=Maryland<br />
export KEY_CITY=MD<br />
export KEY_ORG="Arjun"<br />
export KEY_EMAIL="your@email.com"</code></p>
<p>Next up:</p>
<p><code>. ./vars<br />
./clean-all<br />
gunzip openssl.cnf.gz<br />
./build-ca<br />
./build-key-server MyVPNServer</code></p>
<p>Important: You will be asked a series of questions: The default values are filled in. I just entered my name in the Organization question as well. <em>Also,when it asks you &#8220;Sign certificate?&#8221; please answer YES otherwise it will generate 0 byte certificates and OpenVPN won&#8217;t start.</em></p>
<p><strong>Note: It is important you do &#8220;. ./vars&#8221; and not &#8220;./vars&#8221; as this will not export the variables to your current shell and you will get errors.</strong></p>
<p>At this point, you have the certificate and key for the server instance. Now, you need to build the client keys</p>
<p><code><br />
./build-key Client01<br />
</code></p>
<p>Finally, build the Diffe-helman code (this takes forever on the ReadyNAS. Take a meal break here).</p>
<p><code><br />
./build-dh</code></p>
<p><span style="text-decoration: underline;">Step 3.3: Copy the certificates and keys to the right location to your server</span></p>
<p><code>cp ./keys/ca.crt /etc/openvpn/<br />
cp ./keys/ca.key /etc/openvpn/<br />
cp ./keys/MyVPNServer.crt /etc/openvpn/<br />
cp ./keys/MyVPNServer.key /etc/openvpn/<br />
cp ./keys/dh1024.pem /etc/openvpn/</code></p>
<p>The next step is optional &#8211; but I prefer to do it and suggest you do too. Basically, you can create a new user/group with limited rights which will run the openvpn server. It&#8217;s not a good idea really to run the server as root, because one could exploit a vulnerability in it and get access to a root shell, which is not going to be pretty.</p>
<p><code><br />
groupadd openvpn<br />
useradd -d /dev/null -g openvpn -s /bin/false openvpn<br />
</code></p>
<p><span style="text-decoration: underline;">Step 3.4: Set up the server.conf file</span></p>
<p><code><br />
cd /etc/openvpn/<br />
</code>Now just create a server.conf file in your favorite text editor and use the contents below (after the sidebar) <strong>Please modify the IP addresses according to your local LAN and VPN IPs. </strong></p>
<blockquote><p>Sidebar: Tun vs Tap (in .conf files)</p>
<p>Note that I am using a &#8220;tun&#8221; virtual adapter and not &#8220;tap&#8221;. Simply put, it means I am establishing an IP level p2p link between my client and the VPN server.<br />
On the other hand, if I used &#8220;tap&#8221;, then I&#8217;d be creating an ethernet bridge between the two. Specifically, in tun mode, any protocols that use broadcast packets to advertise themselves (example, netbios &amp; AFP uses broadcast packets) will not work, as broadcast packets will not be shared from the VPN lan to my lan. Practically, what it means is that I will not see any of my home devices in my network &#8220;automatically&#8221; &#8211; I will need to connect with them over SMB. For example, when I use tap, the home devices automatically show up in my network list. While in tun mode, I need to &#8220;Connect to server&#8221; to get access to it. I chose to use tun because I believe it is better in performance &#8211; though I am not sure by how much. Actually, the real reason I chose tun was so that my Time Machine backup doesn&#8217;t auto start syncing gigabytes of data over VPN. Whichever you choose, make sure you use the same interface in the client side as well.</p>
<p>Also note that if you choose tun, Apple&#8217;s TimeMachine will stop working, as it uses broadcast packets to identify/locate itself. If you want TimeMachine to sync over the VPN, change tun back to tap in both client and server files. I like it this way, as for now, I don&#8217;t want my mac to sync over the VPN. Every time time machine syncs, it syncs many gigabytes of data (Gee I never knew OSX files change so much in an hour) which I did not want. I only want it to sync when I am @ home (ie no VPN on).</p></blockquote>
<pre class="brush: plain; title: ; notranslate">
local 192.168.1.10 # real LAN IP address of my VPN server
port 1194 # This is the port OpenVPN is running on
proto udp # UDP tends to perform better than TCP for VPN
mssfix 1400 # Supposedly this fixes erros with RemoteDesktop over VPN. Never tried it
# note: these two pushs below don't work for non windows clients unless
# you write a script to parse for these pushes. See OpenVPN Howto.
push &quot;dhcp-option DNS 8.8.8.8&quot;  # I am using Google's DNS servers - I like them they are fast
push &quot;dhcp-option DNS 8.8.4.4&quot;  #
dev tun
ca /etc/openvpn/ca.crt
cert /etc/openvpn/MyVPNServer.crt
key /etc/openvpn/MyVPNServer.key
dh /etc/openvpn/dh1024.pem
server 10.8.0.0 255.255.255.0  # 10.8.0.0 is the VPN virtual LAN. The VPN server will get 10.8.0.1 and the remote clients will get the next ones
ifconfig-pool-persist ipp.txt    # don't worry about ipp.txt - it will be created
push &quot;route 192.168.1.0 255.255.255.0&quot;       # this route will be pushed to a client which connects
keepalive 10 120
cipher BF-CBC        # Blowfish (default) encryption
comp-lzo
max-clients 100 # Assign the maximum number of clients here
persist-key
persist-tun
status openvpn-status.log
verb 1
</pre>
<p>Now, launch the VPN server. I find it easier to run it in non-daemon mode first to make sure there are no errors. So,</p>
<p><code>openvpn --config server.conf</code></p>
<p>Make sure openvpn is working and it does not exit.</p>
<p>Great. Now get openVPN running in daemon mode<br />
<code>/etc/init.d/openvpn restart</code><br />
Make sure it is running by checking ps:<br />
<code> ps aux | grep openvpn </code></p>
<p>All good? Great. Your server is ready.</p>
<p><span style="text-decoration: underline;">Step 3.5: IP forwarding &#8211; Don&#8217;t forget</span></p>
<p>Whoops, we almost forgot. You need to enable IP forwarding in your ReadyNas.</p>
<p><code><br />
vi /etc/sysctl.conf:<br />
</code><br />
Add the following line: (if it exists, make sure ip_forward is 1 not 0)<br />
<code><br />
net.ipv4.ip_forward = 1<br />
</code><br />
This will make sure IP forwarding is permanent across reboots. To apply it to the current session without rebooting:<br />
<code> sysctl -p /etc/sysctl.conf</code></p>
<p>Double check by<br />
<code>cat /proc/sys/net/ipv4/ip_forward</code></p>
<p>If it says 1, good. You are ready to focus on the client. If not, go back and trace your steps and see what you might have missed.</p>
<p><strong>Step 4: Getting OpenVPN client working: The execution</strong></p>
<p>The main thing here is you need to copy the certificates and keys you created for the client to your remote client as well and set up its conf file. The files you need to copy from /etc/openvpn to your client are:<br />
<code>Client01.crt<br />
Client01.csr<br />
Client01.key<br />
ca.crt</code></p>
<p>In my case, I have a MacOS remote client. I use the excellent <a href="http://code.google.com/p/tunnelblick/">tunnel brick</a> app (free) to connect. In the case of TunnelBrick, all the configuration files are stored in the path<br />
<code>~/Library/Application Support/Tunnelblick/Configurations</code> so I just copied the above files here.</p>
<p>(Note: these Client01.crt, csr, key files can be found in /usr/share/doc/openvpn/examples/easy-rsa/keys directory where you created them as part of Step 3.2 &#8211; thanks Martyn)</p>
<p>Now all that remains is to set up a client configuration that can connect to the VPN server.</p>
<p>Here is my client.conf file (you can call it whatever-you-want.conf)</p>
<pre class="brush: plain; title: ; notranslate">
client
proto udp
dev tun
remote AA.BB.CC.DD 1194 # Replace AA.BB.CC.DD with the public IP of your VPN server (if you don't have one, this will be the public IP of your home router and port forward from your home router to the VPN server. The latter is my case)
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert Client01.crt
key Client01.key
ns-cert-type server
cipher BF-CBC
comp-lzo
verb 3
</pre>
<p><strong>Step 5: Configuring your home router </strong><br />
This last step can be forgotten very easily. If you don&#8217;t do this, things won&#8217;t work.</p>
<p>We need to do 2 things:<br />
a) If your VPN server is not on a public IP, you need to use the public IP of your router and port forward all traffic to port 1194 to the router to the VPN server.<br />
b) Set up a static route to make sure remote clients can reach other LAN terminals once connected via VPN.</p>
<p>For a) there is a better way &#8211; I use dyndns.org to assign a permanent hostname for my router. This is better than IP as if the wan IP of the router changes, the hostname in dyndns is automatically updated. Most routers allow you to specify a dyndns acct and it can automatically keep dyndns updated. Dyndns is free and this is very useful. Google around on how to do this, or, to start just use wan IP of the router in the client code. In my case, &#8220;AA.BB.CC.DD&#8221; in the conf file above reads &#8220;myhostname.dyndns.org&#8221;</p>
<p>Next, add the port forwarding:<br />
a) Open the Port fowarding entry in your home router, and add a new rule (call it &#8220;openvpn&#8221;)<br />
b) Start port:1194, end port: 1194, protocol:UDP<br />
c) Server IP address: 192.168.1.10 (in my case, change to LAN IP of your VPN server)</p>
<p>What we did here is made sure that if the router receives any connections/traffic to port 1194 of its WAN IP, it will forward it internally to the VPN server (your readynas box). That takes care of the VPN server not having a public IP.</p>
<p>Next up, add a static route to your router: (Change IP addresses to match your setup)<br />
Click on the static route option of your router and create a new route:<br />
route name: name it whatever &#8211; I called it vpnroute<br />
Destination IP address: 10.8.0.0 (This is the virtual LAN that the VPN server will create)<br />
Netmask: 255.255.255.0<br />
Gateway: 192.168.1.1 (This is my default LAN gateway)</p>
<p>And save.</p>
<p>(Note: I am not sure if you need the above step if you use tap because it is supposed to be an ethernet bridge. You can experiment by not doing this while using tap to see if you can still access other machines)</p>
<p><strong>Step 6: Test</strong><br />
Now try and connect to your VPN server from a remote client.<br />
Works? great, check a few things:</p>
<p>At the client type:<br />
<code>ifconfig</code></p>
<p>If you are using tun (ip p2p link), you will see something like this:<br />
<code><br />
tun0: flags=8851 mtu 1500<br />
inet 10.8.0.6 --&gt; 10.8.0.5 netmask 0xffffffff<br />
open (pid 2205)<br />
</code><br />
Or, if using tap (ethernet bridge):<br />
<code><br />
tap0: flags=8843 mtu 1500<br />
ether x:x:x:x:x:x<br />
inet 10.8.0.2 netmask 0xffffff00 broadcast 10.8.0.255<br />
open (pid 3146)<br />
</code></p>
<p>Note the difference. In tap, your virtual interface works at layer 2 and creates a virtual ethernet mac address. While in tun mode, a routing path is established at the IP layer.</p>
<p>In both cases, it is telling you a virtual interface has been created with a 10.8.0.x address. (Remember I chose 10.8.0.0 as my VPN network range)<br />
good.<br />
Now ping the VPN server at its virtual LAN address:<br />
<code><br />
arjun@~] ping 10.8.0.1<br />
PING 10.8.0.1 (10.8.0.1): 56 data bytes<br />
64 bytes from 10.8.0.1: icmp_seq=0 ttl=64 time=70.841 ms<br />
64 bytes from 10.8.0.1: icmp_seq=1 ttl=64 time=48.327 ms<br />
</code><br />
Great. Now ping the VPN server at its real LAN address (this won&#8217;t work if routes are not set up properly)<br />
<code><br />
[arjun@~] ping 192.168.1.10<br />
PING 192.168.1.10 (192.168.1.10): 56 data bytes<br />
64 bytes from 192.168.1.10: icmp_seq=0 ttl=64 time=29.200 ms<br />
64 bytes from 192.168.1.10: icmp_seq=1 ttl=64 time=46.460 ms<br />
</code></p>
<p>Finally, ping another machine on the LAN:<br />
<code><br />
[arjun@~] ping 192.168.1.9<br />
PING 192.168.1.9 (192.168.1.9): 56 data bytes<br />
64 bytes from 192.168.1.9: icmp_seq=0 ttl=126 time=190.009 ms<br />
64 bytes from 192.168.1.9: icmp_seq=1 ttl=126 time=30.312 ms<br />
</code></p>
<p>Great. All done.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.roychowdhury.org/2011/05/10/adding-a-vpn-server-to-readynas/feed/</wfw:commentRss>
		<slash:comments>27</slash:comments>
		</item>
		<item>
		<title>A call to report: VoIP &#8216;geek-talk&#8217; blogs</title>
		<link>http://blog.roychowdhury.org/2008/02/11/a-call-to-report-voip-geek-talk-blogs/</link>
		<comments>http://blog.roychowdhury.org/2008/02/11/a-call-to-report-voip-geek-talk-blogs/#comments</comments>
		<pubDate>Mon, 11 Feb 2008 17:29:00 +0000</pubDate>
		<dc:creator>Arjun</dc:creator>
				<category><![CDATA[3gpp]]></category>
		<category><![CDATA[Arjun Roychowdhury]]></category>
		<category><![CDATA[general technology]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[sip]]></category>
		<category><![CDATA[voip]]></category>
		<category><![CDATA[wimax]]></category>
		<category><![CDATA[world 2.0]]></category>
		<category><![CDATA[architecture]]></category>
		<category><![CDATA[geek]]></category>
		<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://iconverged.wordpress.com/?p=98</guid>
		<description><![CDATA[Update: I have now created a sidebar widget titled &#8220;Tech Blogs I read&#8221; instead of updating this post. Please continue sending me quality tech blogs (with more focus on concepts and less on marketing) as you come across them and refer to the sidebar for updates and not this post &#8211; thx. Total number of &#8216;market reporting&#8217; VoIP blogs = k+1 where k=number of times you can blink in a day. However, there are very few blogs that talk about more technology &#38; architecture details and less market details for all things VoIP, SIP, IMS, web 2.0 (with focus on telecom). So here is a call to unite! We need a list of what I call &#8216;geek-talk&#8217; &#8211; those that provide more technical insight into how things are. Here is my list so far. Please update me /comment here with more tech-blogs and I will update this list Many of these blogs are a mix of techno-marketing, but are written by people who are neck-deep in actually developing/architecting many of the talked about solutions themselves, and hence offer a more detailed insight. last updated: Apr-30-2008 TurnGeek &#8211; focus on P2P, SBC, etc. IMS Lantern &#8211; IMS architecture related Voice of<a href="http://blog.roychowdhury.org/2008/02/11/a-call-to-report-voip-geek-talk-blogs/"> <br /><br /> (Read More...)</a>]]></description>
			<content:encoded><![CDATA[<p><img style="float:right;margin:10px;" src="http://64.22.96.74/~arjunrc/wp-content/uploads/2008/02/1.jpg" alt="1.jpg" /></p>
<blockquote><p><em><span style="color: #800000;">Update: I have now created a sidebar widget titled &#8220;Tech Blogs I read&#8221; instead of updating this post. Please continue sending me quality tech blogs (with more focus on concepts and less on marketing) as you come across them and refer to the sidebar for updates and not this post &#8211; thx.</span></em></p></blockquote>
<p>Total number of &#8216;market reporting&#8217; VoIP blogs = <em>k+1</em></p>
<p>where <em>k=number of times you can blink in a day.</em></p>
<p>However, there are very few blogs that talk about more technology &amp; architecture details and less market details for all things VoIP, SIP, IMS, web 2.0 (with focus on telecom).</p>
<p>So here is a call to unite!</p>
<p>We need a list of what I call &#8216;geek-talk&#8217; &#8211; those that provide more technical insight into how things are.</p>
<p>Here is my list so far. Please update me /comment here with more tech-blogs and I will update this list</p>
<p>Many of these blogs are a mix of techno-marketing, but are written by people who are neck-deep in actually developing/architecting many of the talked about solutions themselves, and hence offer a more detailed insight.</p>
<p><em>last updated: Apr-30-2008</em></p>
<ol>
<li><a href="http://turngeek.blogspot.com/">TurnGeek</a> &#8211; focus on P2P, SBC, etc.</li>
<li><a href="http://theimslantern.blogspot.com/">IMS Lantern</a> &#8211; IMS architecture related</li>
<li><a href="http://voipsa.org/blog/">Voice of VoIPSA</a> &#8211; VoIP Security</li>
<li><a href="http://imsquality.com/">IMS Quality</a> &#8211; Testing and Monitoring with focus on IMS</li>
<li><a href="http://blog.radvision.com/voipsurvivor/">VoIP Survivor</a> &#8211; general voip, with significant focus on their company products</li>
<li><a href="http://www.telcab.nl/">TelCAB</a> &#8211; IMS B/OSS</li>
<li><a href="http://iconverged.wordpress.com/">iConverged </a>- this blog</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://blog.roychowdhury.org/2008/02/11/a-call-to-report-voip-geek-talk-blogs/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>EBAY and Trust</title>
		<link>http://blog.roychowdhury.org/2007/07/09/ebay-and-trust/</link>
		<comments>http://blog.roychowdhury.org/2007/07/09/ebay-and-trust/#comments</comments>
		<pubDate>Mon, 09 Jul 2007 00:35:00 +0000</pubDate>
		<dc:creator>Sunil</dc:creator>
				<category><![CDATA[security]]></category>
		<category><![CDATA[Sunil Veluvali]]></category>

		<guid isPermaLink="false">http://iconverged.wordpress.com/2007/07/09/ebay-and-trust/</guid>
		<description><![CDATA[don&#8217;t claim to be a heavy eBAY user. But, I do buy and sell stuff occasionally and my recent experience selling stuff on eBAY could be a good indicator of what is probably worrying the execs of EBAY: Managing scale.For the past month or so, I&#8217;ve been trying to sell a laptop on eBAY. I&#8217;ve listed the items two times already and here is what happened both times: 1. Within hours of listing, I get sent messages of two categories: People who want to cheat the sytem and barter offline and scammers with manufactured or stolen eBAY identities who want the &#8220;usual&#8221; information. I spend valuable time dutifully forwarding it to the security folks at eBAY. 2. During the weeklong listing, I spend even more time responding to form responses from eBAY and handling email discussions with CallCenter agents who plainly have no expertise in managing security. 3. During the last day or two of the auction, I will have three or four genuine buyers who I communicate with and keep engaged. 4. During the last minutes, I see bidding begin and notice my genuine buyers being beaten by scammers with stolen identities win the auction with outrageous bidding. I<a href="http://blog.roychowdhury.org/2007/07/09/ebay-and-trust/"> <br /><br /> (Read More...)</a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://bp2.blogger.com/_XaMCCZWVR9M/RpGKa2uEPpI/AAAAAAAAAJQ/EYnXmNW9OAo/s1600-h/trust.jpg"><img border="0" src="http://bp2.blogger.com/_XaMCCZWVR9M/RpGKa2uEPpI/AAAAAAAAAJQ/EYnXmNW9OAo/s320/trust.jpg" style="float:right;cursor:hand;margin:0 0 10px 10px;" /></a></p>
<p><a class="category"><img src="http://img108.imageshack.us/img108/6859/geek2bz.jpg" /></a> don&#8217;t claim to be a heavy eBAY user. But, I do buy and sell stuff occasionally and my recent experience selling stuff on eBAY could be a good indicator of what is probably worrying the execs of EBAY: <em>Managing scale</em>.For the past month or so, I&#8217;ve been trying to sell a laptop on eBAY. I&#8217;ve listed the items two times already and here is what happened both times:</p>
<p>1. Within hours of listing, I get sent messages of two categories: People who want to cheat the sytem and barter offline and scammers with manufactured or stolen eBAY identities who want the &#8220;usual&#8221; information. I spend valuable time dutifully forwarding it to the security folks at eBAY.</p>
<p>2. During the weeklong listing, I spend even more time responding to form responses from eBAY and handling email discussions with CallCenter agents who plainly have no expertise in managing security.</p>
<p>3. During the last day or two of the auction, I will have three or four genuine buyers who I communicate with and keep engaged.</p>
<p>4. During the last minutes, I see bidding begin and notice my genuine buyers being beaten by scammers with stolen identities win the auction with outrageous bidding. I cannot do anything. Things move at the speed of the Internet!</p>
<p>5. I then get a &#8220;Congrats&#8221; email followed by a &#8220;sorry, the scammers beat us&#8221; email and to protect the integrity of the network (read: eBAY probably doesn&#8217;t want this information getting public) the entire listing is removed.</p>
<p>This got me thinking and I&#8217;ve come to the following conclusions that you might or might not agree with:</p>
<p><strong>- E-Commerce is now no different than regular commerce.</strong> An Internet business will initially probably have advantages due to the network effect, but in the end they will end up just like the other utilities: they will struggle to manage scale and offer a compelling service. My eBAY experience was no different than calling my telephone or cable company: Form responses, casual processes to address core business competencies, and frustrating customer service.</p>
<p><strong>- Internet establishments will progressively develop a tiered system.</strong> The big customers will get all the attention and the small/occasional customers will not be able to take any advantage of the benefits the network provides. It won&#8217;t be egalitarian like it used to.</p>
<p><strong>- Secure E-Commerce is elusive. </strong>Internet businesses who depend on earning money through customers they trust will struggle to keep their infrastructure secure. There is a constant struggle between expanding the user base and offering a secure environment. There has to be a better way than the best computer scientists being routinely defeated by the dolts with a phone and a laptop from the most &#8220;backward&#8221; regions of the world.</p>
<p>eBAY is probably the <em>most</em> innovative of Internet businesses. Their annual report proudly states:<br />
<em></em><em><em></em></em><em><em></em></em><em><em></p>
<blockquote><p><em></em></p></blockquote>
<div align="justify">Our purpose is to pioneer new communities around the world built on commerce, <strong>sustained by trust</strong> and inspired by opportunity.</div>
<p>If eBAY is struggling to sustain trust, I shudder to think what the industry is going through. I am sure there is a venture opportunity in all of this! Know of any?</p>
<p></em></em></p>
<div align="left"></div>
<div class="blogger-post-footer">Technology, VoIP, SIP, IMS, Marketing, Corporate Management</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.roychowdhury.org/2007/07/09/ebay-and-trust/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>License plate reading with Google Street Views</title>
		<link>http://blog.roychowdhury.org/2007/06/03/license-plate-reading-with-google-street-views/</link>
		<comments>http://blog.roychowdhury.org/2007/06/03/license-plate-reading-with-google-street-views/#comments</comments>
		<pubDate>Sun, 03 Jun 2007 02:43:00 +0000</pubDate>
		<dc:creator>Arjun</dc:creator>
				<category><![CDATA[Arjun Roychowdhury]]></category>
		<category><![CDATA[general technology]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[world 2.0]]></category>

		<guid isPermaLink="false">http://iconverged.wordpress.com/2007/06/03/license-plate-reading-with-google-street-views/</guid>
		<description><![CDATA[Everytime I wonder if there is anything left to do on these new generation of scrollable maps by Google and Yahoo, one of them surprise me. The latest is the neat addition of Google Maps street view (here) where you can see real street images and navigate around. But the level of detail captured is, well, um, surprising. See for example a car that was parked on the street on one of their street maps. I can easily read the license plate even without enhancing. But see the enhanced image too &#8211; no special tools &#8211; just some sharpening and saturation. Infact, the image was so readable, I masked a part of it with a black box in this version. At this level of detail, for all those folks doing things you should not be, watch out, you are on a world-wide candid camera :-) (click on image for larger view) Technology, VoIP, SIP, IMS, Marketing, Corporate Management]]></description>
			<content:encoded><![CDATA[<p><span class="category"><img src="http://img108.imageshack.us/img108/6859/geek2bz.jpg" /></span><br />
<a href="http://bp2.blogger.com/_M7jp9DECT6A/RmIsQUox3pI/AAAAAAAAAeA/ysfvZCUgsZY/s1600-h/2.jpg"><img border="0" width="157" src="http://bp2.blogger.com/_M7jp9DECT6A/RmIsQUox3pI/AAAAAAAAAeA/ysfvZCUgsZY/s400/2.jpg" height="167" style="float:left;cursor:hand;margin:0 10px 10px 0;" /></a> Everytime I wonder if there is anything left to do on these new generation of scrollable maps by Google and Yahoo, one of them surprise me. The latest is the neat addition of Google Maps street view (<a href="http://maps.google.com/help/maps/streetview/">here</a>) where you can see real street images and navigate around.</p>
<div></div>
<div>But the level of detail captured is, well, um, surprising. See for example a car that was parked on the street on one of their street maps. I can easily read the license plate even without enhancing. But see the enhanced image too &#8211; no special tools &#8211; just some sharpening and saturation. Infact, the image was so readable, I masked a part of it with a black box in this version.</div>
<div></div>
<div></div>
<div>At this level of detail, for all those folks doing things you should not be, watch out, you are on a world-wide candid camera :-)</div>
<div></div>
<div></div>
<p>(click on image for larger view)</p>
<p><a href="http://bp3.blogger.com/_M7jp9DECT6A/RmIt1kox3qI/AAAAAAAAAeI/kmUV21r6g-4/s1600-h/1.jpg"><img border="0" src="http://bp3.blogger.com/_M7jp9DECT6A/RmIt1kox3qI/AAAAAAAAAeI/kmUV21r6g-4/s400/1.jpg" style="display:block;cursor:hand;text-align:center;margin:0 auto 10px;" /></a></p>
<div class="blogger-post-footer">Technology, VoIP, SIP, IMS, Marketing, Corporate Management</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.roychowdhury.org/2007/06/03/license-plate-reading-with-google-street-views/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Web 2.0 and AJAX &#8211; fundamentally insecure ?</title>
		<link>http://blog.roychowdhury.org/2007/01/17/web-20-and-ajax-fundamentally-insecure/</link>
		<comments>http://blog.roychowdhury.org/2007/01/17/web-20-and-ajax-fundamentally-insecure/#comments</comments>
		<pubDate>Wed, 17 Jan 2007 17:14:00 +0000</pubDate>
		<dc:creator>Arjun</dc:creator>
				<category><![CDATA[security]]></category>
		<category><![CDATA[world 2.0]]></category>

		<guid isPermaLink="false">http://iconverged.wordpress.com/2007/01/17/web-20-and-ajax-fundamentally-insecure/</guid>
		<description><![CDATA[In the past couple of days, I’ve been delving into supposed security issues that the new Web 2.0 and AJAX enabled sites produce and have been also looking into some claims I heard that for serious applications, one should stick to Flash, since it is inherently more secure, tried and tested than AJAX is today. To investigate the inherent and publicized security issues within AJAX, we first need to understand the underlying technologies that AJAX uses. Specifically, AJAX comprises of: a) XMLHttpRequest (XHR)– a new functionality, that has been added to most well known browsers today that allow an asynchronous communication mechanism between the browser and the webserver b) Client side JavaScript – been around for a long time, an implementation of the ECMA script specification and used as a programming language for many web based applications To properly assess AJAX related security issues, then, it makes sense for us to take a look at what sort of security issues do these two critical underlying technologies present. XSS – Cross-Site Scripting attacks – A Javascript and URL handling exploit The concept here is straight-forward. XSS is not a technology – it refers to a technique, where a malicious user can<a href="http://blog.roychowdhury.org/2007/01/17/web-20-and-ajax-fundamentally-insecure/"> <br /><br /> (Read More...)</a>]]></description>
			<content:encoded><![CDATA[<p><span class="category"><img src="http://img108.imageshack.us/img108/6859/geek2bz.jpg" /></span><br /><a href="http://bp3.blogger.com/_M7jp9DECT6A/Ra5bkTEGexI/AAAAAAAAAAM/ozjCSC3vA2I/s1600-h/security.jpg"><img style="float:left;cursor:pointer;margin:0 10px 10px 0;" alt="" src="http://bp3.blogger.com/_M7jp9DECT6A/Ra5bkTEGexI/AAAAAAAAAAM/ozjCSC3vA2I/s320/security.jpg" border="0" /></a><br />In the past couple of days, I’ve been delving into <a href="http://www.eweek.com/article2/0,1895,1916673,00.asp">supposed</a> <a href="http://www.pcauthority.com.au/news.aspx?CIaNID=37810">security </a>issues that the new Web 2.0 and AJAX enabled sites produce and have been also looking into some claims I heard that for serious applications, one should stick to Flash, since it is inherently more secure, tried and tested than AJAX is today.</p>
<p>To investigate the inherent and publicized security issues within AJAX, we first need to understand the underlying technologies that AJAX uses. Specifically, AJAX comprises of:</p>
<p>a) <span style="font-style:italic;">XMLHttpRequest</span> (XHR)– a new functionality, that has been added to most well known browsers today that allow an asynchronous communication mechanism between the browser and the webserver</p>
<p>b) <span style="font-style:italic;">Client side JavaScript</span> – been around for a long time, an implementation of the ECMA script specification and used as a programming language for many web based applications</p>
<p>To properly assess AJAX related security issues, then, it makes sense for us to take a look at what sort of security issues do these two critical underlying technologies present.</p>
<p><span style="font-weight:bold;">XSS – Cross-Site Scripting attacks – A Javascript and URL handling exploit</span></p>
<p>The concept here is straight-forward. XSS is not a technology – it refers to a technique, where a malicious user can construct an ‘evil’ input which when passed to a trusted, but vulnerable site, causes that site to compromise it’s users. Consider , for example, a site called www.goodsite.com. Which accepts a search query like so www.goodsite.com/q=mysearch. Now let us assume, that goodsite.com does not do a good job at ensuring that the input provided is validated well. One could construct a URI like www.goodsite/com/q=<span style="font-style:italic;">(insert malicious script code here)</span> and send it off to goodsite. If goodsite let this pass, in effect, the script would be executed in context of the browser session for the user. So, if I were to send you this site URI, and you clicked it, I could for example, hijack your session cookie at goodsite and have it sent to me via embedded javascript (Javascript allows cross-domain HTTP requests). If you think this is trivially avoidable, you’d be surprised at how may ways there are to bypass web server checks. For example, take a look at the <a href="http://namb.la/popular/tech.html"></a><a href="http://namb.la/popular/tech.html">myspace exploit</a> that used dynamic HTML and fragmented text blocks to hide substring matches to get caught by the web-server’s parser.</p>
<p>Ideally, one could consider that XSS should be disallowed, or, all webservers MUST ensure that all special characters are ‘safe’ized (encoded using HTML entities) to ensure that they are not interpreted at the remote side, rather, only displayed. However, with the increasing popularity of responsive web sites using AJAX related technologies, Mash-ups are becoming very common, and the ability for one domain to pass on data for remote script execution helps in managing load on the local host. XSS related vulnerabilties have been around for a long time, and have been successful in infecting a variety of web based solutions, including Php boards, google, apache, mozilla, myspace, yahoo and many more.</p>
<p><span style="font-style:italic;">It is important to note that XSS depends on the following:</span></p>
<p>a) You somehow pass on a ‘malicious’ URI to a user and get him to click on it (it doesn’t make sense for you to execute the XSS vulnerability in your own browser context, unless you think you can launch a remote exploit due to a buffer underflow or overflow – that is a different attack, and not catagorized under XSS Attacks – more on this later)</p>
<p>b) It makes an assumption that the web-server receiving this information does not do a good job validating input</p>
<p><span style="font-weight:bold;color:rgb(51, 51, 255);">Effect of Web 2.0 on XSS attacks</span></p>
<p>Does Web 2.0 impact the risks of XSS attacks? Yes and No. Technically speaking, XSS has nothing to do with Web 2.0 and AJAX. It is a vulnerability that existed much before AJAX as a term was even coined. XSS attacks started surfacing almost as soon as javascript was introduced. However, with the proliferation of Web 2.0 sites, there is a significant increase in collaboration, mash-ups and multi-tenancy which all mean the same thing – there is a larger audience which can now be targetted for vulnerabilities. So the ‘No’ was a technical response. The ‘Yes’ was a market response – due to adoption. However, that is not to say that ‘Web 2.0 results in increased XSS vulnerabilities’. The right statement would be ‘Web 2.0 results in more people using potentially vulnerable techologies, which unless hardened, have a wider possibility of financial and reputation damage’ (heck, sounds like a lawyer crafted that, but you get what I mean). In addition, multi-tenancy (different applications on a single cluster of hosts) means exposed vulnerability of one application can compromise others, unless the multi-tenant host takes very special care of intra-trust-domains (providers usually do a good job of inter-trust-domains, but lag on trust within their own domain, which is why once you get it, you can usually do a lot of damage in periphery nodes).</p>
<p><span style="font-weight:bold;">XMLHttpRequest (XHR) &amp; Javascript Repudiation Attacks</span></p>
<p>This is really is derivative attack on a compromised site (it is interesting to note most of the attacks rely on implementation gaps of web-servers). Assuming that you manage to get a malicious script code, using XHR you can issue as many HTTP commands in it to automatically, ‘agree to some terms and service’, ‘buy item’ etc. that don’t require any specific user input not known to the environment. The exact same thing is also possible to do with Javascript – so this is not really specific to AJAX only (The only new thing AJAX got in was XHR – Javascript existed much before hat). Since the web-server does not know which request came from an embedded XHR or an explicit user click, it is not possible to differentiate between the two.</p>
<p><span style="font-weight:bold;color:rgb(51, 51, 255);">Effect of Web 2.0 on Repudiation Attacks</span></p>
<p>Once again, with the hype and slickness of XHR+JS applications proliferating around the web, more people should concentrate on architectural and data protection besides only focussing on ‘how to make the interface slicker’. So again, Web 2.0 does not technically make the situation worse, but in the surge of trying to get out prettier applications, developers needs to go back to their basics on implementing a secure enviroment for distributed systems and input validation.</p>
<p><span style="font-weight:bold;">(AJAX) Bridging</span></p>
<p>Bridging is a software concept that has long pre-dated Web 2.0. In effect, it is the process on installing a ‘gateway server’ in between multiple content sources. This ‘gateway server’ maintains a trusted relationship with the backend content servers and is also therefore capable of creating integration logic of how to ‘mesh’ these diverse contents together. This sort of bridging has increased in popularity, with the deployment of mash applications. It introduces another twist to XHR attacks. XHR cannot access HTTP pages which are outside the domain which is being served. For exampl<br />
e, if a script was running at www.google.com, XHR can’t make a HTTP request to www.yahoo.com . However, if the application is being hosted on a bridge server, then one could use the bridge server URI to access content in the other backend site (for example, if the bridge server knowingly or un-knowingly supports URI redirection). Do note that Javascript also supports this capability, so you don’t need XHR for this. However, now that Browsers also support XHR, even if JS is disabled or blocked, one could launch similar exploits without it. What then happens is that by transitive relationship, if Yahoo were to offer its APIs to a trusted site, the users of that trusted site could now target attacks on Yahoo using common tricks like SQL injection, DoS (repeated HTTP requests via XHR in bulk) and similar.</p>
<p><span style="font-weight:bold;color:rgb(51, 51, 255);">Effect of Web 2.0 on XHR Bridging Attacks</span></p>
<p>Web based mash-up applications are proliferating today. The use of bridge servers to blend content from multiple sites are getting much more common place today (for instance, mashing google maps with craigslist, house searches and more). In any architecture, the fundamental principle of ‘a chain is only as strong as it’s weakest link’ applies equally here.</p>
<p><span style="font-weight:bold;">Javascript ‘Script Kidde’ Tricks</span></p>
<p>This is a compendium of many tricks which have plagued immature implementations of Javascript. Many of these tricks are very irritating and can destroy user experience. For example, <a href="http://homes.cerias.purdue.edu/%7Epmeunier">Pascal Meunier </a>maintains a list of some of these irritants, which work even today on the most recent of browsers, and they include:<br />a) Dynamically generating a<a href="http://homes.cerias.purdue.edu/%7Epmeunier/nasty_javascripts/nasty_javascript4.html"> fake page</a> for a valid URI – a simple javascript trick where if you visit http://bad.com and click on a link there for ‘google.com’ it can result in your browser URL changing to google.com but displaying some other crafted page (it works in IE7, FF2.0 smarly displays the URL redirection)<br />b) Nasty JS code that traps browser events and <a href="http://homes.cerias.purdue.edu/%7Epmeunier/nasty_javascripts/nasty_javascript1.html">does not let you navigate</a> away from the page, unless you close the browser</p>
<p><a href="http://www.google.com/search?sourceid=navclient&amp;ie=UTF-8&amp;rls=GGIH,GGIH:2006-49,GGIH:en&amp;q=javascript+exploits"><span style="font-style:italic;">And more.</span></a></p>
<p>Ofcourse, JS being a programming language, it can also be used for more serious purposes – like <a href="http://www.spidynamics.com/spilabs/js-port-scan/">port scanning</a> your own network and potentially reporting found results to an external site.</p>
<p><span style="font-weight:bold;color:rgb(51, 51, 255);">Effect of Web 2.0 on JS Vulnerabilties</span></p>
<p>Most of the web 2.0 world relies heavily on Javascript. Infact, I can point you to hundreds of sites, that blindly download ‘JS+XHR (AJAX) toolkits’ like <a href="http://prototype.conio.net/dist/prototype-1.4.0.js">prototype.js</a> or others and start using their functions. Just an an example, prototype.js is a 64KB file densely packed with XHR and JS code. How many people actually look into that file ? What stops me from hosting a malicious prototype.js file and having people download that file and use it in their own context and have their context sensitive information sent out ? With the increasing use of JS in commercial sites in quest for a better user experience, the inherent implementation gaps of JS interpreters in browsers have a capability to do much more damage, simply due to a function of it being used in many more mainstream functions than before.</p>
<p><span style="font-weight:bold;">XHR+JS insecurities vs. Flash</span></p>
<p>Comparing this to Flash, when I googled around for vulnerabilities, most of them I came across, were to do with buffer exploits. Simply put, buffer exploits are set of techniques where a malicious user finds a spot of executable code that does not check for input length, and using that, provides a large enough string which overflows the allocated stack for that string. In addition to that, the string is crafted with machine opcodes at the right place, which causes the return address from that function to reach an address within that string, which is actually an encoded instruction set. Effectively it means that the remote user has managed to execute code on the remote platform, thereby launching an internal attack. Such attacks are very old and still prevalent. A great tutorial (old, but gold) for buffer exploits can be read <a href="http://insecure.org/stf/smashstack.html">here</a>.</p>
<p>So while I found such buffer exploits, I did not have much success in finding actionscript related exploits similar in nature to those mentioned above. I did find references to ramdom posts on forums that said a few years ago, actionscript from Flash was in a similar stage, but it seems over the years, the implementation has improved. Again, this was a cursory look – I’d be happy to be pointed to similar exploits in the Flash world.</p>
<p>Buffer exploits will always remain – detecting and compromising buffer exploits don’t need an open programming language interface like JS. These exploits require more skill to probe and compromise (yes, I am aware of automated buffer exploit scanners, but applying them to different environments requires more skill) and is usually an art for a smaller niche community.</p>
<p>However, in the entire flash vs. AJAX security debate, I do have another concern. JS and XHR exploits need to be fixed by the ‘browser’ owners – Microsoft, Mozilla, Apple and others. Flash exploits need to be fixed by Adobe and can be done independent of the browser, since Flash is a 3rd party browser plugin, while JS and XHR are core browser implementations. I wonder if this would mean that relying on browser companies to fix issues takes a longer time than relying on Adobe to fix a plugin-issue. Anyway, as Web 2.0 with AJAX continues to go mainstream, only time will tell.</p>
<p><span style="font-weight:bold;">Conclusion</span></p>
<p>What we observe, then, is that most of the vulnerabilties of AJAX are little to do with AJAX and more to do with inherent vulnerabilties of immature implementations and bad architectural choices by developers. Most of the vulnerabilities above boil down to:</p>
<p><span style="font-style:italic;">a) User Input is not validated well</span><br /><span style="font-style:italic;">b) Data Integrity and logical firewalling is not thought out well</span><br /><span style="font-style:italic;">c) Current implementations of javascript in browsers is rather dismal</span><br /><span style="font-style:italic;">d) If your architecture is insecure, no technology can rescue you</span></p>
<p>What Web 2.0 is doing is making these technologies mainstream. As more people use it, many more bugs come out, and many more people think of hacking insecure sites for fun and profit (nothing new with that). I think overall, this will be beneficial for the web community &#8211; there is nothing like taking a technology mainstream to make it robust ! But in the process, developers and marketeers need to be aware that this is an evolving process and should do everything possible to safeguard their own data from the imperfections in the implementation of their chosen tools.</p>
<p><span style="font-weight:bold;">References</p>
<p></span><a href="http://namb.la/popular/tech.html">http://namb.la/popular/tech.html</a><br /><a href="http://ajaxian.com/by/topic/security/">http://ajaxian.com/by/topic/security/</a><br /><a href="http://www.technicalinfo.net/papers/CSS.html">http://www.technicalinfo.net/papers/CSS.html</a><br /><a href="http://insecure.org/stf/smashstack.html">http://insecure.org/stf/smashstack.html</a><br /><a href="http://www.actionscripthero.com/adventures/">http://www.actionscripthero.co<br />
m/adventures/</a><br /><a href="http://www.viruslist.com/en/analysis?pubid=184625030">http://www.viruslist.com/en/analysis?pubid=184625030</a>
<div class="blogger-post-footer">Technology, VoIP, SIP, IMS, Marketing, Corporate Management</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.roychowdhury.org/2007/01/17/web-20-and-ajax-fundamentally-insecure/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

