My current understanding based on discussions in
https://github.com/openid/ruby-openid/issues/122 is that the following
patch should entirely fix this problem in ruby-openid.

The discussion seems to be highly confused, and at times the reporter
seems to reject this as being insufficient, but without providing a any
real details.

As this patch from upstream applied cleanly to Jessie, I imagine it will
apply equally as easily to the other distributions.
https://github.com/openid/ruby-openid/pull/121


diff -Nru ruby-openid-2.5.0debian/debian/changelog 
ruby-openid-2.5.0debian/debian/changelog
--- ruby-openid-2.5.0debian/debian/changelog    2014-03-15 02:04:12.000000000 
+1100
+++ ruby-openid-2.5.0debian/debian/changelog    2019-10-09 17:00:00.000000000 
+1100
@@ -1,3 +1,11 @@
+ruby-openid (2.5.0debian-1+deb8u1) jessie-security; urgency=high
+
+  * Non-maintainer upload by the LTS Team.
+  * CVE-2019-11027 Avoid SSRF for claimed_id request.
+    Patch source: https://github.com/openid/ruby-openid/pull/121
+
+ -- Brian May <b...@debian.org>  Wed, 09 Oct 2019 17:00:00 +1100
+
 ruby-openid (2.5.0debian-1) unstable; urgency=medium
 
   * Imported Upstream version 2.5.0debian
diff -Nru ruby-openid-2.5.0debian/debian/patches/CVE-2019-11027.patch 
ruby-openid-2.5.0debian/debian/patches/CVE-2019-11027.patch
--- ruby-openid-2.5.0debian/debian/patches/CVE-2019-11027.patch 1970-01-01 
10:00:00.000000000 +1000
+++ ruby-openid-2.5.0debian/debian/patches/CVE-2019-11027.patch 2019-10-09 
17:00:00.000000000 +1100
@@ -0,0 +1,30 @@
+From 8a4c31a6740a949cdc29d956c276ba3c4021dfa8 Mon Sep 17 00:00:00 2001
+From: Vadim Shaulski <sh.va...@gmail.com>
+Date: Tue, 16 Apr 2019 19:34:35 +0300
+Subject: [PATCH] Avoid SSRF for claimed_id request
+
+`verify_discovery_results` sends a request to openid.claimed_id URL.
+Anybody can change claimed_id URL but request still will be sent.
+For example, sending a request to the internal network or localhost:
+https://myserver/callback?_method=post&openid.claimed_id=http://localhost:3000/do_method.....
+
+I think, we must check signature before use any data from the URL
+---
+ lib/openid/consumer/idres.rb | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/lib/openid/consumer/idres.rb b/lib/openid/consumer/idres.rb
+index 16c1d80..6c4e0a3 100644
+--- a/lib/openid/consumer/idres.rb
++++ b/lib/openid/consumer/idres.rb
+@@ -72,9 +72,9 @@ def signed_fields
+       def id_res
+         check_for_fields
+         verify_return_to
+-        verify_discovery_results
+         check_signature
+         check_nonce
++        verify_discovery_results
+       end
+ 
+       def server_url
diff -Nru ruby-openid-2.5.0debian/debian/patches/series 
ruby-openid-2.5.0debian/debian/patches/series
--- ruby-openid-2.5.0debian/debian/patches/series       1970-01-01 
10:00:00.000000000 +1000
+++ ruby-openid-2.5.0debian/debian/patches/series       2019-10-09 
17:00:00.000000000 +1100
@@ -0,0 +1 @@
+CVE-2019-11027.patch


-- 
Brian May <b...@debian.org>

Reply via email to