# CVE-2016-9938: Auth bypass in n/a

> Attackers can bypass authentication and process unauthorized calls when Asterisk uses the chan_sip driver behind a non-dialog-aware SIP proxy.

- **Severity:** Medium 5.3 (`CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N`)
- **Exploited in the wild:** Not known
- **Login needed:** Not needed
- **Attackable:** Over the internet
- **Victim action needed:** Not needed
- **Fix available:** Yes
- **Published:** 12 Dec 2016
- **Updated:** 6 Aug 2024
- **Also known as:** DEBIAN-CVE-2016-9938, GHSA-4h4c-qgxg-p3qv, UBUNTU-CVE-2016-9938

## What is CVE-2016-9938?

CVE-2016-9938 is a medium-severity authentication bypass vulnerability in Digium Asterisk, published on 12 Dec 2016. An attacker can exploit it over the internet without logging in, with no action from the victim.

### Official description

An issue was discovered in Asterisk Open Source 11.x before 11.25.1, 13.x before 13.13.1, and 14.x before 14.2.1 and Certified Asterisk 11.x before 11.6-cert16 and 13.x before 13.8-cert4. The chan_sip channel driver has a liberal definition for whitespace when attempting to strip the content between a SIP header name and a colon character. Rather than following RFC 3261 and stripping only spaces and horizontal tabs, Asterisk treats any non-printable ASCII character as if it were whitespace. This means that headers such as Contact\x01: will be seen as a valid Contact header. This mostly does not pose a problem until Asterisk is placed in tandem with an authenticating SIP proxy. In such a case, a crafty combination of valid and invalid To headers can cause a proxy to allow an INVITE request into Asterisk without authentication since it believes the request is an in-dialog request. However, because of the bug described above, the request will look like an out-of-dialog request to Asterisk. Asterisk will then process the request as a new call. The result is that Asterisk can process calls from unvetted sources without any authentication. If you do not use a proxy for authentication, then this issue does not affect you. If your proxy is dialog-aware (meaning that the proxy keeps track of what dialogs are currently valid), then this issue does not affect you. If you use chan_pjsip instead of chan_sip, then this issue does not affect you.

Weakness: CWE-285 (Improper Authorization)

## Which versions are affected by CVE-2016-9938?

It affects 2 products.


Products: Digium Asterisk, Digium Certified Asterisk.

## How do I fix CVE-2016-9938?

Upgrade to a fixed version.

## Is CVE-2016-9938 being exploited?

There is no known exploitation of CVE-2016-9938 in the wild and no public exploit code.

## Other vulnerabilities in Digium Asterisk

- [CVE-2017-14100](https://insights.sbomify.com/CVE-2017-14100/): Command injection in n/a (critical 9.8)
- [CVE-2014-8418](https://insights.sbomify.com/CVE-2014-8418/): Privilege escalation in n/a (critical 9.0)
- [CVE-2011-1599](https://insights.sbomify.com/CVE-2011-1599/): Missing authorization in n/a (critical 9.0)
- [CVE-2017-16671](https://insights.sbomify.com/CVE-2017-16671/): Memory corruption in n/a (high 8.8)
- [CVE-2017-7617](https://insights.sbomify.com/CVE-2017-7617/): Memory corruption in n/a (high 8.8)

## Fix prompt for AI coding agents

```text
Check this codebase for CVE-2016-9938 and fix it if it is affected.

What it is: CVE-2016-9938 is a medium-severity authentication bypass vulnerability in Digium Asterisk, published on 12 Dec 2016. An attacker can exploit it over the internet without logging in, with no action from the victim.
Exploitation: There is no known exploitation of CVE-2016-9938 in the wild and no public exploit code.

Affected product: Digium Asterisk. No package-level version data is available, so check the vendor advisory linked from the reference page.

Task:
1. Search the dependency manifests and lockfiles (for example package.json, package-lock.json, requirements.txt, poetry.lock, uv.lock, pom.xml, build.gradle, go.mod, Cargo.lock, Gemfile.lock) and any Dockerfiles for the affected packages, including transitive dependencies.
2. If an affected version is in use, upgrade it to the fixed version for its release line with the project's package manager, so the lockfile is regenerated. Prefer the smallest upgrade that fixes it.
3. If there is no fix, or the upgrade would break the build, do not guess: explain the risk and the safest workaround instead.
4. Run the tests and summarise what changed and why.
5. If nothing in the project is affected, say so and change nothing.

Reference: https://insights.sbomify.com/CVE-2016-9938/ (Markdown: https://insights.sbomify.com/CVE-2016-9938/index.md)
```

## Sources

- CVE record: https://www.cve.org/CVERecord?id=CVE-2016-9938
- NVD: https://nvd.nist.gov/vuln/detail/CVE-2016-9938
- OSV: https://osv.dev/vulnerability/CVE-2016-9938

---
From sbomify Insights: https://insights.sbomify.com/CVE-2016-9938/
Summaries are generated and may contain mistakes; the official description above is the record.
