Hi Bill

This sound like a quite serious security hole to me. We run our Fedora
servers without policy enforcement, as we do authentication in another
system. How about making a 3.2.1 Release, just with this fix, it is that
serious.

Could you link this fix to a Bug, and possibly a patch. I am interested
in which versions of Fedora this bug is present for example.

It seems that if you have REST enabled without policies, all API-M
methods are freely available without authentication through REST. I
presume that the same bug does not affect the SOAP layer?

Regards


On Fri, 2009-06-26 at 21:24 +0200, Bill Branan wrote:
> Hi Willy,
> 
> 
> I tracked this down and fixed it in trunk a short while ago. It was a
> bug that let requests through even when authentication was required,
> as you indicated. This only became obvious when policy enforcement was
> turned off, because otherwise the authorization check would stop the
> request from completing.
> 
> 
> I don't recommend pulling down and running from trunk at the moment.
> It does work, but we're in the process of transitioning to maven, so
> trunk is still being resorted. What you can do is grab the file I
> updated as the fix (just one file) from
> here: 
> http://fedora-commons.svn.sourceforge.net/viewvc/fedora-commons/fedora/trunk/server/src/main/java/fedora/server/security/servletfilters/FilterRestApiAuthn.java?revision=8094&view=markup&sortby=date.
>  Then just replace the file in a source distribution of 3.2 and rebuild. The 
> file to replace is 
> fedora.server.security.servletfilters.FilterRestApiAuthn.java.
> 
> 
> Thanks for pointing this one out.
> 
> 
> Bill
> 
> On Thu, Jun 25, 2009 at 5:30 PM, Willy Mene <[email protected]>
> wrote:
>         Hey guys,
>         
>         Ok, I've attached a sanitized install.properties file from
>         this box to the JIRA issue.  It is a test box, so we've turned
>         off XACML policy enforcement and the API-M SSL requirement.
>          Maybe it is some kind of configuration issue on our end.  Let
>         me know if you need any more info.
>         
>         Thanks,
>         Willy
>         
>         
>         
>         
>         On Jun 25, 2009, at 12:37 PM, Chris Wilper wrote:
>         
>                 Hi Willy,
>                 
>                 I was unable to reproduce this also...looks like we
>                 need more detail
>                 on the environment where this is happening.  Although
>                 we haven't been
>                 able to verify it yet, I figured it'd be good to put
>                 this in the
>                 tracker:
>                 
>                 http://fedora-commons.org/jira/browse/FCREPO-510
>                 
>                 Can you attach your install.properties and any more
>                 detail you have on
>                 your environment there?
>                 
>                 Thanks,
>                 Chris
>                 
>                 On Thu, Jun 25, 2009 at 9:30 AM, Bill
>                 Branan<[email protected]> wrote:
>                         Hi Willy,
>                         When the first, unauthenticated, request is
>                         passed in it should be caught
>                         and rejected during the authorization check,
>                         since there is no available
>                         user. Do you happen to have your XACML
>                         policies set in such a way that would
>                         allow any user to perform an ingest function?
>                         Of course, the unauthenticated call should not
>                         be passed through in the
>                         first place. We're still trying to reproduce
>                         this. Could you tell us a bit
>                         more about your environment?
>                         Has anyone else seen this behavior?
>                         Thanks,
>                         Bill
>                         
>                         On Wed, Jun 24, 2009 at 8:45 PM, Willy Mene
>                         <[email protected]> wrote:
>                                 
>                                 Ok, I think I found the problem.
>                                 If your http client uses preemptive
>                                 authorization (i.e. the Authorization
>                                 http header is sent with the encoded
>                                 username and password even before the
>                                 server gives an unauthorized
>                                 response) , then everything works
>                                 fine.
>                                 However, if you client does not send
>                                 this header in the initial request
>                                 and http challenge/response
>                                 authentication comes into play, then
>                                 we run into
>                                 this issue of attempted double object
>                                 creation.  With the initial request,
>                                 Fedora always enters the ingest
>                                 process and creates the object BEFORE
>                                 the
>                                 authorization challenge is sent to the
>                                 client.  Therefore, when the client
>                                 sends the authorization response,
>                                 Fedora finds that the object was
>                                 already
>                                 created and we see this error.  You
>                                 can see this in the snippet of the log
>                                 I
>                                 sent earlier.
>                                 Fedora 3.1 was working with
>                                 non-preemptive authorization.  Did
>                                 something
>                                 change in 3.2?
>                                 Willy
>                                 
>                                 On Jun 24, 2009, at 6:35 AM, Bill
>                                 Branan wrote:
>                                 
>                                 Hi Willy,
>                                 I just tried this and didn't have any
>                                 problems. I restarted the server (to
>                                 make sure there were no lingering
>                                 sessions) then used Poster to POST to
>                                 the
>                                 URL you indicated (different host)
>                                 with some simple FOXML. I was prompted
>                                 for authentication by Firefox,
>                                 followed by a 200 response.
>                                 You mentioned that Fedora appears to
>                                 be attempting to create the object
>                                 twice. Does the first attempt to
>                                 create the object occur before you
>                                 submit
>                                 the authentication prompt? Is the
>                                 object created correctly on the first
>                                 attempt, or is it just an empty object
>                                 that happens to have the correct PID?
>                                 
>                                 Here is the FOXML I used, just for
>                                 reference:
>                                 <?xml version="1.0" encoding="UTF-8"?>
>                                 <foxml:digitalObject VERSION="1.1"
>                                 PID="newpid:foobar"
>                                 
> xmlns:foxml="info:fedora/fedora-system:def/foxml#"
>                                 
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
>                                 
> xsi:schemaLocation="info:fedora/fedora-system:def/foxml#
>                                 
> http://www.fedora.info/definitions/1/0/foxml1-1.xsd";>
>                                 <foxml:objectProperties>
>                                 <foxml:property
>                                 
> NAME="info:fedora/fedora-system:def/model#state"
>                                 VALUE="Active"/>
>                                 <foxml:property
>                                 
> NAME="info:fedora/fedora-system:def/model#label"
>                                 VALUE="Label"/>
>                                 </foxml:objectProperties>
>                                 </foxml:digitalObject>
>                                 Bill
>                                 
>                                 On Tue, Jun 23, 2009 at 5:41 PM, Willy
>                                 Mene <[email protected]> wrote:
>                                         
>                                         I'm playing with our Fedora
>                                         3.2 instance and the REST
>                                         API.  I'm using
>                                         the Firefox Poster add-on to
>                                         do an http POST of some simple
>                                         valid
>                                         FOXML to the (example)
>                                         
> http://fedorabox:8080/fedora/objects/newpid:foobar
>                                          URI and am running into
>                                         problems.
>                                         
>                                         The first time I attempt to do
>                                         the POST, I get the error "The
>                                         PID
>                                         'newpid:foobar' already exists
>                                         in the registry; the object
>                                         can't be re-
>                                         created." even though it is a
>                                         brand new object.  However, if
>                                         I search
>                                         Fedora for the object, I do
>                                         find it was created.  When I
>                                         look through
>                                         the logs, I see that Fedora
>                                         tries to create the object
>                                         twice with this
>                                         one request.
>                                         
>                                         If I try to POST a second
>                                         object with a new pid and new
>                                         FOXML, the
>                                         requests succeeds without
>                                         error.  Fedora only tries the
>                                         ingest once.
>                                         
>                                         My guess is that the initial
>                                         authentication handshake with
>                                         the first
>                                         POST causes Fedora to attempt
>                                         the ingest twice.  The second
>                                         POST
>                                         succeeds since the browser is
>                                         already authenticated, and
>                                         doesn't need
>                                         to go through the handshake.
>                                          I ran into this because I
>                                         have some
>                                         client software that
>                                         authenticates with every post
>                                         (since it's not a
>                                         browser) and I keep running
>                                         into this problem.  I did not
>                                         have this
>                                         issue with 3.0 or 3.1.  I have
>                                         included the stacktrace error
>                                         below.
>                                         
>                                         Has anyone else run into
>                                         this?  Any help appreciated.
>                                         
>                                         Thanks,
>                                         Willy
>                                         
>                                         javax.ws.rs.WebApplicationException:
>                                         
> fedora.server.errors.ObjectExistsException: The PID 'newpid:foobar'
>                                         already exists in the
>                                         registry; the object can't be
>                                         re-created.
>                                 
>                         
>                         
>                         
> ------------------------------------------------------------------------------
>                         
>                         _______________________________________________
>                         Fedora-commons-users mailing list
>                         [email protected]
>                         
> https://lists.sourceforge.net/lists/listinfo/fedora-commons-users
>                         
>                         
>         
>         
> 
> 


------------------------------------------------------------------------------
_______________________________________________
Fedora-commons-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/fedora-commons-users

Reply via email to