[aur-dev] [PATCH v2] Fake pkgbase actions for unconfirmed users
Gordian Edenhofer
gordian.edenhofer at gmail.com
Fri Jun 26 21:40:26 UTC 2015
On Fri, 2015-06-26 at 23:08 +0200, Lukas Fleischer wrote:
> On Fri, 26 Jun 2015 at 22:14:20, Gordian Edenhofer wrote:
> > On Fri, 2015-06-26 at 21:26 +0200, Lukas Fleischer wrote:
> > > Cool, this is kind of what I expected! I wonder whether we can
> > > directly
> > > set a referer here, though? Shouldn't something like
> > >
> > > get_uri('/login/', true) . '?referer=' . urlencode($uri)
> > >
> > > work?
> >
> > I can not make sense out of the "?referer" parameter, since my fix
> > of
> > FS#32481 uses $_SERVER['HTTP_REFERER'] and does not rely on an
> > additional parameter to a GET request.
>
> It uses $_SERVER['HTTP_REFERER'] unless $_REQUEST['referer'] is set.
> So
> we should be able to overwrite the referer by setting the HTTP GET
> parameter.
>
I forgot that I used $_REQUEST, I though that it was $_POST. My bad!
Though if I think of it, it just might be a good idea to switch to
$_POST since then $_GET parameters like "?refer" would not be
concidered and only $_SERVER['HTTP_REFERER'] or a POST "referer" would
be accepted. Shell I submit another patch for that or is the gain in
security negligible?
> >
> > > Having said that, I now see a potential problem with the GET
> > > parameter
> > > approach of implementing FS#32481. You could build a malicious
> > > login
> > > link that redirects to a certain page and send that link to a
> > > privileged
> > > user (i.e. a TU or a Developer). I am not aware of any action
> > > that
> > > cannot be undone and doesn't require any additional confirmation,
> > > so
> > > that probably isn't very critical. We should fix it anyway...
> >
> > Since most of the relevant package actions are perform through POST
> > req
> > uests (which are redirected as GET requests), I could not think of
> > any
> > potential security issues.
> > Furthermore the referer is partially checked for outgoing links:
> >
> > if (strpos($referer, aur_location()) !== 0) {
> > $referer = '/';
> > }
>
> Yeah, however, it is already kind of annoying if you can make a TU
> flag
> a package out-of-date without noticing. And we might introduce
> something
> more critical that does not require a POST request in the future.
> Better
> safe than sorry. This is something to fix in a separate patch set,
> though.
Flagging, voting, notifying and adopting a package is all done through
POST requests AFAIK. Deleting or merging a package is not even
available for unauthenticated users.
Hence a malicious URL would not flag a package since the corresponding
variable is not set.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: This is a digitally signed message part
URL: <https://lists.archlinux.org/pipermail/aur-dev/attachments/20150626/4c617b78/attachment.asc>
More information about the aur-dev
mailing list