######################################################### silc server and toolkit insecure temporary file creation Vendor: http://silcnet.org/ Advisory: http://www.zataz.net/adviso/silc-server-toolkit-06152005.txt Vendor informed: yes Exploit available: yes Impact : low Exploitation : low ######################################################### The vulnerability is caused due to temporary file being created insecurely. This can be exploited via symlink attacks in combination to create and overwrite arbitrary files with the privileges of the user running the affected script. ########## Versions: ########## silc-server <= 1.0 silc-toolkit <= 0.9.12-r3 ########## Solution: ########## To prevent symlink attack use kernel patch such as grsecurity ######### Timeline: ######### Discovered : 2005-05-31 Vendor notified : 2005-06-15 Vendor response : none Vendor fix : none Disclosure : 2005-09-01 ##################### Technical details : ##################### Vulnerable code : ----------------- In silcd/silcd.c 258 /* Dump server statistics into a file into /tmp directory */ 259 260 SILC_TASK_CALLBACK(dump_stats) 261 { 262 FILE *fdd; 263 char filename[256]; 264 265 memset(filename, 0, sizeof(filename)); 266 snprintf(filename, sizeof(filename) - 1, "/tmp/silcd.%d.stats", getpid()); 267 fdd = fopen(filename, "w+"); 268 if (!fdd) 269 return; 270 271 #define STAT_OUTPUT(fmt, stat) fprintf(fdd, fmt "\n", (int)stat); 272 273 fprintf(fdd, "SILC Server %s Statistics\n\n", silcd->server_name); 274 fprintf(fdd, "Local Stats:\n"); ######### Related : ######### Bug report : http://bugs.gentoo.org/show_bug.cgi?id=94587 ##################### Credits : ##################### Eric Romang (eromang@zataz.net - ZATAZ Audit) Thxs to Gentoo Security Team. (Taviso, jaervosz, solar, etc.)