Hi,

(Adding yadd as suggested on IRC, solicating yadd's input as well)

Some updates on php-cas:

I've continued to work on php-cas to better assess
the situation: I've also received information to better
assess the serverity of the CVE and now I think this issue
should be fixed.
(However, I'd like also to hear the opinion of the security team ;-))

<TL;DR:>

The test suite make me think my patch is working. I'd appreciate other people
testing them too, though. (On my TODO list is to try with an real CAS Server)

The reverse dependencies for buster src:fusiondirectory and
src:ocsinventory-server can be fixed quite easily, by adding
configuration options and telling the users what to do.

For customers using non-packaged software using php-cas,
they *will* need to update it:
The phpCAS client initializer needs an additional $service_base_url
parameter:

- static function client($server_version, $server_hostname, $server_port, 
$server_uri, $changeSessionID = true)
+ static function client($server_version, $server_hostname, $server_port, 
$server_uri, $service_base_url, $changeSessionID = true)

from upstream uppgrading guide:
    PhpCAS now requires an additional service base URL argument when 
constructing
    the client class, similar to other CAS client's serverName config. It 
accepts
    any argument of:

    1. A service base URL string. The service URL discovery will always use this
    server name (protocol, hostname and port number) without using any external
    host names.
    2. An array of service base URL strings. The service URL discovery will 
check
    against this list before using the auto discovered base URL. If there is no
    match, the first base URL in the array will be used as the default. This
    option is helpful if your PHP website is accessible through multiple domains
    without a canonical name, or through both HTTP and HTTPS.
    3. A class that implements CAS_ServiceBaseUrl_Interface. If you need to
    customize the base URL discovery behavior, you can pass in a class that
    implements the interface.

</TL;DR>



My more detailed notes:

Upstream Test suite:
####################

The test suite for 1.3.6 is not packaged in the debian package,
but I made a branch including it:
https://salsa.debian.org/lts-team/packages/php-cas/-/tree/debian/buster-with-testsuite

The test suite is patched as required for CVE-2022-29369, as the CAS_Client 
class
needs an additional "service" parameter (this is the API breakage)

Before the patch for the CVE:
    $ phpunit TestSuite.php
    OK, but incomplete, skipped, or risky tests!
    Tests: 79, Assertions: 412, Incomplete: 4, Risky: 2.

After patch for the CVE: (The patch adds some tests.)
    $ phpunit TestSuite.php
    OK, but incomplete, skipped, or risky tests!
    Tests: 92, Assertions: 425, Incomplete: 4, Risky: 2.

(When removing the additional tests (file: 
test/CAS/Tests/ServiceBaseUrlTest.php):
    $ phpunit TestSuite.php
    OK, but incomplete, skipped, or risky tests!
    Tests: 79, Assertions: 412, Incomplete: 4, Risky: 2.)


Reverse Dependencies for buster:
################################

    php-cas
      Reverse Depends: fusiondirectory (1.0.19-1+deb9u1)
      Reverse Depends: ocsinventory-reports (2.5+dfsg1-1)

fusiondirectory
---------------

    - Use of php-cas is optional, (get_cfg_value('casActivated'))
    - Uses php-cas in core/html/index.php, likely only change required
      is to add the new $service_base_url parameter after 
core/html/index.php:128
      (upstream has refactored in the meantime, upstream has change at [a], but
       it seems that we don't have the CasClientServiceName config entry in 
buster,
       probably can be backported.)
     - Possibly users will need to run fusiondirectory-insert-schema and 
possibly
       reconfigure fusiondirectory and possibly a Debian.NEWS should tell them 
so.
       (needs to be evaluated once I have patches)

ocsinventory-reports
--------------------
     ( yadd is Maintainer of this package and probably can better comment on it)
     - Use of php-cas is optional, ($affich_method == 'CAS')
       - not default
       - seems that /usr/share/ocsinventory-reports/backend/AUTH/auth.php needs 
to be
         edited to make it work. (which is not a conffile.)
     - 3 locations initializes php-cas and will needs updating with 
$service_base_url
            ocsreports/backend/AUTH/methode/cas.php:$cas = new phpCas();
            ocsreports/update.php:        $cas = new phpCas();
            ocsreports/require/header.php:        $cas = new phpCas();
       - As the auth method is not a conffile, every update will reset user 
configuration,
         defaulting back to HTML-Form authenticication.
       - Cas confiuration is done in 
/usr/share/ocsinventory-reports/backend/require/cas.config.php:
         This is a central point where $service_base_url can be configured (it 
also not a conffile…)
     (- ocsinventory-server is on limited security support, reason given:
       Details: Only supported behind an authenticated HTTP zone)



[a] 
https://github.com/fusiondirectory/fusiondirectory/blob/919b407cdf5c409b20c500e6eadecf0c62270aac/include/login/class_LoginCAS.inc#L48C16-L48C16

On Tue, Jun 20, 2023 at 04:14:42PM +0200, Tobias Frost wrote:
> (As suggested, I'm moving the discussion to debian-lts@lists.debian.org, 
> CC'ing 
> the security team)
> 
> > On 19/06/2023 18:17, Tobias Frost wrote:
> > > Hey,
> > > 
> > > As I am currently preparing a fix for php-cas to tackle CVE-2022-39369 
> > > [1], and
> > > as the changes required are breaking changes, I'd like to discuss whether 
> > > the
> > > vulnerability justifies a breaking change, or if the issue should be 
> > > ignored instead.
> > > (Maybe feedback from interested customers can be collected, so that they 
> > > can assess
> > > the impact on their side already.)
> > > 
> > > I've packaged my backport of the patch and uploaded it to [3] as an 
> > > (untested) preview.
> > > 
> > > The breaking change: users of php-cas needs to perform additional steps 
> > > when
> > > using the php module, as described in docs/updating of the upstream pull
> > > request fixing the issue: [2]
> > > 
> > >      phpCAS now requires an additional service base URL argument when
> > >      constructing the client class, similar to other CAS client's 
> > > serverName config.
> > > 
> > > Upstream asses the situation as [4]
> > > 
> > >      This vulnerability may allow an attacker to gain access to a 
> > > victim's account
> > >      on a vulnerable CASified service without victim's knowledge, when 
> > > the victim
> > >      visits attacker's website while being logged in to the same CAS 
> > > server.
> > > 
> 
> 
> The patch applied to the package is this commit:
> https://salsa.debian.org/lts-team/packages/php-cas/-/commit/2c2b5f73da55f5c6d9f69e1ac11b3a1ee565d435
> (also debdiff attached.)
> 
> -- 
> Cheers, 
> tobi
> 
> 


Attachment: signature.asc
Description: PGP signature

Reply via email to