Homec4science

Detect missing 'params' in Conduit calls

Authored by epriestley <git@epriestley.com> on Dec 11 2012, 23:01.

Description

Detect missing 'params' in Conduit calls

Summary:
Suhosin has about 50 options for filtering input variables, doucmented here:

http://www.hardened-php.net/suhosin/configuration.html

The default behavior of Suhosin is to drop the variable entirely if it violates any of the rules, then continue with the request. It doesn't affect 'php://input' and doesn't drop other variables, so it evades existing detection, and we can't figure out that it's happened at runtime. We could add blanket checks (Suhosin enabled + suhosin.filter.action set to nothing means this may happen, and will be undetectable if it does happen) but can't tailor a check or recovery to this specific problem.

Instead, raise a better error in the specific case where we encounter this, which is Conduit calls of "arc diff" of files over 1MB (the default POST limit). In these cases, Suhosin drops the variable entirely. If there is no 'params', scream. We never encounter this case normall (arc, including arc call-conduit, always sends this parameter) although other clients might omit it. The only exception is the web console with conduit.ping, which submits nothing; make it submit something so it keeps working.

See also https://github.com/facebook/phabricator/issues/233#issuecomment-11186074

Test Plan: Brought up a Debian + Suhosin box, verified the behavior of Suhosin, made requests with and without 'params'.

Reviewers: btrahan, vrana

Reviewed By: btrahan

CC: aran

Differential Revision: https://secure.phabricator.com/D4144

Details

Committed
epriestley <git@epriestley.com>Dec 11 2012, 23:01
Pushed
aubortJan 31 2017, 17:16
Parents
rPHba7723d9057b: Modernize Macro application
Branches
Unknown
Tags
Unknown

Event Timeline

epriestley <git@epriestley.com> committed rPH0b9c54a6bb78: Detect missing 'params' in Conduit calls (authored by epriestley <git@epriestley.com>).Dec 11 2012, 23:01