[DRE-maint] diff for passenger in Squeeze

Thorsten Alteholz debian at alteholz.de
Mon Dec 28 22:13:32 UTC 2015


Hi everybody,

can someone please have a look at the diff for passenger=2.2.11debian-2 in 
Squeeze that should solve CVE-2015-7519[1] and nod?

Thanks!
  Thorsten


[1] https://security-tracker.debian.org/tracker/CVE-2015-7519



diff -Nru passenger-2.2.11debian/ext/apache2/Hooks.cpp passenger-2.2.11debian/ext/apache2/Hooks.cpp
--- passenger-2.2.11debian/ext/apache2/Hooks.cpp        2010-03-05 10:35:16.000000000 +0100
+++ passenger-2.2.11debian/ext/apache2/Hooks.cpp        2015-12-28 20:04:14.000000000 +0100
@@ -779,9 +779,33 @@
         char *lookupEnv(request_rec *r, const char *name) {
                 return lookupName(r->subprocess_env, name);
         }
+
+       static bool
+       isAlphaNum(char ch) {
+               return (ch >= '0' && ch <= '9') || (ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z');
+       }
+
+       /**
+        * For CGI, alphanum headers with optional dashes are mapped to UPP3R_CAS3. This
+        * function can be used to reject non-alphanum/dash headers that would end up with
+        * the same mapping (e.g. upp3r_cas3 and upp3r-cas3 would end up the same, and
+        * potentially collide each other in the receiving application). This is
+        * used to fix CVE-2015-7519.
+        */
+       static bool
+       containsNonAlphaNumDash(const char *s) {
+               size_t len = strlen(s);
+               for (size_t i = 0; i < len; i++) {
+                       const char start = s[i];
+                       if (start != '-' && !isAlphaNum(start)) {
+                               return true;
+                       }
+               }
+               return false;
+       }

         void inline addHeader(apr_table_t *table, const char *name, const char *value) {
-               if (name != NULL && value != NULL) {
+               if ((name != NULL && value != NULL) || containsNonAlphaNumDash(name)) {
                         apr_table_addn(table, name, value);
                 }
         }





More information about the Pkg-ruby-extras-maintainers mailing list