Security
Headlines
HeadlinesLatestCVEs

Headline

CVE-2023-46240: Merge pull request from GHSA-hwxf-qxj7-7rfj · codeigniter4/CodeIgniter4@423569f

CodeIgniter is a PHP full-stack web framework. Prior to CodeIgniter4 version 4.4.3, if an error or exception occurs, a detailed error report is displayed even if in the production environment. As a result, confidential information may be leaked. Version 4.4.3 contains a patch. As a workaround, replace ini_set('display_errors', '0') with ini_set('display_errors', 'Off') in app/Config/Boot/production.php.

CVE
#web#git#php

2 changes: 2 additions & 0 deletions app/Config/Boot/development.php

Expand Up

@@ -7,6 +7,8 @@

| In development, we want to show as many errors as possible to help

| make sure they don’t make it to production. And save us hours of

| painful debugging.

|

| If you set ‘display_errors’ to '1’, CI4’s detailed error report will show.

*/

error_reporting(-1);

ini_set('display_errors’, ‘1’);

Expand Down

2 changes: 2 additions & 0 deletions app/Config/Boot/production.php

Expand Up

@@ -6,6 +6,8 @@

|--------------------------------------------------------------------------

| Don’t show ANY in production environments. Instead, let the system catch

| it and display a generic error message.

|

| If you set ‘display_errors’ to '1’, CI4’s detailed error report will show.

*/

ini_set('display_errors’, ‘0’);

error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT & ~E_USER_NOTICE & ~E_USER_DEPRECATED);

Expand Down

6 changes: 6 additions & 0 deletions app/Config/Boot/testing.php

@@ -1,5 +1,11 @@

<?php

/*

* The environment testing is reserved for PHPUnit testing. It has special

* conditions built into the framework at various places to assist with that.

* You can’t use it for your development.

*/

/*

|--------------------------------------------------------------------------

| ERROR DISPLAY

Expand Down

2 changes: 1 addition & 1 deletion app/Views/errors/html/error_404.php

Expand Up

@@ -77,7 +77,7 @@

<?= nl2br(esc($message)) ?>

<?php else : ?>

<?= lang(‘Errors.sorryCannotFind’) ?>

<?php endif ?>

<?php endif; ?>

</p>

</div>

</body>

Expand Down

7 changes: 5 additions & 2 deletions app/Views/errors/html/error_exception.php

Expand Up

@@ -44,6 +44,7 @@

<?php endif; ?>

</div>

<?php if (defined(‘SHOW_DEBUG_BACKTRACE’) && SHOW_DEBUG_BACKTRACE) : ?>

<div class="container">

<ul class="tabs" id="tabs">

Expand All

@@ -66,7 +67,7 @@

<li>

<p>

<!-- Trace info -->

<?php if (isset($row[‘file’]) && is_file($row[‘file’])) :?>

<?php if (isset($row[‘file’]) && is_file($row[‘file’])) : ?>

<?php

if (isset($row[‘function’]) && in_array($row[‘function’], ['include’, 'include_once’, 'require’, ‘require_once’], true)) {

echo esc($row[‘function’] . ' ' . clean_path($row[‘file’]));

Expand Down Expand Up

@@ -375,14 +376,16 @@

</div> <!-- /tab-content -->

</div> <!-- /container -->

<?php endif; ?>

<div class="footer">

<div class="container">

<p>

Displayed at <?= esc(date(‘H:i:sa’)) ?> —

PHP: <?= esc(PHP_VERSION) ?> —

CodeIgniter: <?= esc(CodeIgniter::CI_VERSION) ?>

CodeIgniter: <?= esc(CodeIgniter::CI_VERSION) ?> –

Environment: <?= ENVIRONMENT ?>

</p>

</div>

Expand Down

8 changes: 7 additions & 1 deletion system/Debug/ExceptionHandler.php

Expand Up

@@ -129,7 +129,13 @@ protected function determineView(Throwable $exception, string $templatePath): st

// Production environments should have a custom exception file.

$view = 'production.php’;

if (str_ireplace(['off’, 'none’, 'no’, 'false’, ‘null’], '’, ini_get(‘display_errors’)) !== ‘’) {

if (

in_array(

strtolower(ini_get(‘display_errors’)),

['1’, 'true’, 'on’, ‘yes’],

true

)

) {

$view = 'error_exception.php’;

}

Expand Down

8 changes: 7 additions & 1 deletion system/Debug/Exceptions.php

Expand Up

@@ -253,7 +253,13 @@ protected function determineView(Throwable $exception, string $templatePath): st

$view = 'production.php’;

$templatePath = rtrim($templatePath, '\\/ ') . DIRECTORY_SEPARATOR;

if (str_ireplace(['off’, 'none’, 'no’, 'false’, ‘null’], '’, ini_get(‘display_errors’)) !== ‘’) {

if (

in_array(

strtolower(ini_get(‘display_errors’)),

['1’, 'true’, 'on’, ‘yes’],

true

)

) {

$view = 'error_exception.php’;

}

Expand Down

15 changes: 15 additions & 0 deletions tests/system/Debug/ExceptionHandlerTest.php

Expand Up

@@ -70,6 +70,21 @@ public function testDetermineViewsRuntimeExceptionCode404(): void

$this->assertSame('error_404.php’, $viewFile);

}

public function testDetermineViewsDisplayErrorsOffRuntimeException(): void

{

ini_set('display_errors’, ‘0’);

$determineView = $this->getPrivateMethodInvoker($this->handler, ‘determineView’);

$exception = new RuntimeException(‘Exception’);

$templatePath = APPPATH . 'Views/errors/html’;

$viewFile = $determineView($exception, $templatePath);

$this->assertSame('production.php’, $viewFile);

ini_set('display_errors’, ‘1’);

}

public function testCollectVars(): void

{

$collectVars = $this->getPrivateMethodInvoker($this->handler, ‘collectVars’);

Expand Down

7 changes: 7 additions & 0 deletions user_guide_src/source/changelogs/v4.4.3.rst

Expand Up

@@ -9,6 +9,13 @@ Release Date: Unreleased

:local:

:depth: 3

SECURITY

********

- *Detailed Error Report is Displayed in Production Environment* was fixed.

See the `Security advisory GHSA-hwxf-qxj7-7rfj https://github.com/codeigniter4/CodeIgniter4/security/advisories/GHSA-hwxf-qxj7-7rfj\`_

for more information.

BREAKING

********

Expand Down

2 changes: 2 additions & 0 deletions user_guide_src/source/general/environments.rst

Expand Up

@@ -30,6 +30,8 @@ By default, CodeIgniter has three environments defined.

If you want another environment, e.g., for staging, you can add custom environments.

See `Adding Environments`_.

… _setting-environment:

*******************

Setting Environment

*******************

Expand Down

8 changes: 6 additions & 2 deletions user_guide_src/source/general/errors.rst

Expand Up

@@ -49,8 +49,12 @@ Error Reporting

---------------

By default, CodeIgniter will display a detailed error report with all errors in the ``development`` and ``testing`` environments, and will not

display any errors in the ``production`` environment. You can change this by setting the ``CI_ENVIRONMENT`` variable

in the :ref:`.env <dotenv-file>` file.

display any errors in the ``production`` environment.

… image:: …/images/error.png

You can change your environment by setting the ``CI_ENVIRONMENT`` variable.

See :ref:`setting-environment`.

… important:: Disabling error reporting DOES NOT stop logs from being written if there are errors.

Expand Down

14 changes: 14 additions & 0 deletions user_guide_src/source/installation/upgrade_443.rst

Expand Up

@@ -15,6 +15,14 @@ Please refer to the upgrade instructions corresponding to your installation meth

Mandatory File Changes

**********************

error_exception.php

===================

The following file received significant changes and

**you must merge the updated versions** with your application:

- app/Views/errors/html/error_exception.php

Breaking Changes

****************

Expand Down Expand Up

@@ -48,3 +56,9 @@ This is a list of all files in the **project space** that received changes;

many will be simple comments or formatting that have no effect on the runtime:

- @TODO

- app/Config/Boot/development.php

- app/Config/Boot/production.php

- app/Config/Boot/testing.php

- app/Config/Filters.php

- app/Views/errors/html/error_404.php

- app/Views/errors/html/error_exception.php

Related news

GHSA-hwxf-qxj7-7rfj: CodeIgniter4 vulnerable to information disclosure when detailed error report is displayed in production environment

### Impact If an error or exception occurs in CodeIgniter4 v4.4.2 and earlier, a detailed error report is displayed even if in the production environment. As a result, confidential information may be leaked. ### Patches Upgrade to v4.4.3 or later. See [upgrading guide](https://codeigniter4.github.io/userguide/installation/upgrade_443.html). ### Workarounds Replace `ini_set('display_errors', '0')` with `ini_set('display_errors', 'Off')` in `app/Config/Boot/production.php`. ### For more information If you have any questions or comments about this advisory: * Open an issue in [codeigniter4/CodeIgniter4](https://github.com/codeigniter4/CodeIgniter4/issues) * Email us at [SECURITY.md](https://github.com/codeigniter4/CodeIgniter4/blob/develop/SECURITY.md)

CVE: Latest News

CVE-2023-50976: Transactions API Authorization by oleiman · Pull Request #14969 · redpanda-data/redpanda
CVE-2023-6905
CVE-2023-6903
CVE-2023-6904
CVE-2023-3907