Package: geoip
Version: 1.3.17-1
the patch below has been accepted into the upstream repository, and will
appear next release... however it may be worth updating the debian package
in the interim.
-dean
----- Original message -----
From: "dean gaudet"
Date: Mon, 4 Sep 2006 18:50:28 -0700 (PDT)
Subject: serious geoipupdate vulnerability
i'm looking at the GeoIP-1.4.0.tar.gz source ... and it does no sanity
checking on the filename returned by "GET
/app/update_getfilename?product_id=%s".
for example suppose your webserver were compromised and returned
../../../../../../etc/passwd as the filename.
please consider something like the patch below...
-dean
Index: GeoIP-1.4.0/libGeoIP/GeoIPUpdate.c
===================================================================
--- GeoIP-1.4.0.orig/libGeoIP/GeoIPUpdate.c 2006-09-04
18:41:21.810722758 -0700
+++ GeoIP-1.4.0/libGeoIP/GeoIPUpdate.c 2006-09-04 18:45:10.771752943
-0700
@@ -92,6 +92,8 @@
return "Invalid userID";
case GEOIP_PRODUCT_ID_INVALID_ERR:
return "Invalid product ID or subscription expired";
+ case GEOIP_INVALID_SERVER_RESPONSE:
+ return "Server returned something unexpected";
default:
return "no error";
}
@@ -420,6 +422,10 @@
buf[offset] = 0;
offset = 0;
tmpstr = strstr(buf, "\r\n\r\n") + 4;
+ if (tmpstr[0] == '.' || strchr(tmpstr, '/') != NULL) {
+ free(buf);
+ return GEOIP_INVALID_SERVER_RESPONSE;
+ }
geoipfilename = _GeoIP_full_path_to(tmpstr);
free(buf);
Index: GeoIP-1.4.0/libGeoIP/GeoIPUpdate.h
===================================================================
--- GeoIP-1.4.0.orig/libGeoIP/GeoIPUpdate.h 2006-09-04
18:43:41.265969814 -0700
+++ GeoIP-1.4.0/libGeoIP/GeoIPUpdate.h 2006-09-04 18:43:56.475632408
-0700
@@ -43,7 +43,8 @@
GEOIP_SANITY_LOOKUP_FAIL = -22, /* Sanity check ip address lookup
failed */
GEOIP_RENAME_ERR = -23, /* Rename error while installing
db, check errno */
GEOIP_USER_ID_INVALID_ERR = -24, /* Invalid userID */
- GEOIP_PRODUCT_ID_INVALID_ERR = -25 /* Invalid product ID or
subscription expired */
+ GEOIP_PRODUCT_ID_INVALID_ERR = -25, /* Invalid product ID or
subscription expired */
+ GEOIP_INVALID_SERVER_RESPONSE = -26
} GeoIPUpdateCode;
const char * GeoIP_get_error_message(int i);
--
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]