# KCM Version 2.16.0

## Security Updates

* Base version of Apache Guacamole updated to 1.5.2 from 1.3.0
  * KCM has been using Apache Guacamole 1.3.0 as its basis for some time now, backporting changes from upstream over time. With the latest upstream release being 1.5.2, we should bring our packages up-to-date with that release and remove any patches that are no longer necessary.
  * The upstream Apache Guacamole 1.5.2 release contains changes that address issues with security implications. The issues in question:
    * [CVE-2023-30575: Apache Guacamole: Incorrect calculation of Guacamole protocol element lengths](https://lists.apache.org/thread/tn63n2lon0h5p45oft834t1dqvvxownv)
    * [CVE-2023-30576: Apache Guacamole: Use-after-free in handling of RDP audio input buffer](https://lists.apache.org/thread/vgtvxb3w7mm84hx6v8dfc0onsoz05gb6)
  * With this base version update, there are no implications for compatibility. Extensions that worked with previous versions of KCM should continue to work identically.
* Dependency updates
  * The various C, Java, and JavaScript dependencies used by KCM are brought up-to-date with their latest available and compatible versions.

## New Features

* `apply` command for `kcm-setup.run`
  * The `kcm-setup.run` installation script now provides an `apply` command to more easily allow administrators to apply changes made to `docker-compose.yml`:  \
    `./kcm-setup.run apply`
    * Unlike `upgrade`, the `apply` command strictly applies changes made externally to `docker-compose.yml` and *does not pull new images*.
    * The installation script has also been updated to use `depends_on` within declared services to ensure that `stop` need not be run before `upgrade` or `apply` are used. Administrators can simply run the command and rely on the script and Docker Compose to automatically stop/start services as needed.

## Bug Fixes

* Resolved Issue where Batch import does not support some unicode characters

##


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://newdocs.keeper.io/en/release-notes/enterprise/keeper-connection-manager/kcm-version-2.16.0.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
