Crisis response for server operators

An actively exploited vulnerability has no fix yet

When a warning cannot be resolved by updating: check exposure, mitigate, and accept the risk with an expiry.

  • Level: Practice
  • About 30 min
  • 2026-11-03

#The situation

In the evening, a notification arrives from your server

"A vulnerability that is likely to be exploited remains unfixed (1 item)." The package is webkit2gtk, the CVE is CVE-2026-3909, and it carries a KEV mark. The notification says "update the package."

You update. The warning does not go away.

This is not a made-up story. It is based on a warning that actually appeared. When the assumption "updating fixes it" breaks, the operator is forced to make a call. This module is a playbook for the reasoning behind that call. It uses Matching packages against known vulnerabilities, Diagnosis of vulnerabilities likely to be exploited, and Vulnerability acceptance.

#The first 15 minutes: read the warning

Before you rush, check what the words in the warning mean.

ShownMeaningIn this warning
KEVA list by CISA (the US cybersecurity agency) of vulnerabilities that were actually exploited (KEV catalog). Organizations are advised to use it as an input for deciding prioritiesListed
EPSSAn estimated probability that the CVE will be exploited in the wild within the next 30 days (0 to 1, FIRST). Updated daily2%
CVSSA measure of how severe the vulnerability is. It is a separate measure from how easily it gets exploited8.8
Fixed versionWhether a fixed version has been published as a packageNot yet

Two points are easy to overlook.

  • The KEV mark means "exploited somewhere." It does not mean your server is being targeted
  • The product the CVE describes and the package you installed are not necessarily the same. This CVE's description is "an out-of-bounds write in Skia in Google Chrome." Whether WebKitGTK is actually affected is not settled by the description alone. In Ubuntu's vulnerability tracker, webkit2gtk is deferred for both 24.04 and 26.04 (Ubuntu CVE)
What "updating does not clear it" means

When there is no fixed version, RoamSwitch says so: "Fixed version: not yet. Updating the package will not resolve this." You learn from the start that this warning cannot be resolved by updating.

#Decision points

Answer three questions, in order
  1. Is the package used on this machine? If not, removing it is the surest move. The warning goes away too
  2. If it is used, can an attacker deliver crafted data to it? Check whether it listens on the network, or whether it is used in a way that opens crafted content (web pages, email, and so on)
  3. Can you mitigate it? Consider stopping the app that uses it, or replacing it with something else

If you cannot answer "yes" to any of the three, consider knowingly accepting it, with an expiry.

#Lab: check the exposure

Check how the package is actually used on this machine. These are read-only commands.

Find out how it is used

Replace the CVE and the package name to match your own warning.

# 1. The contents of the warning (read-only)
sudo roamswitch scan-packages | grep -A9 "CVE-2026-3909"

# 2. What installed packages depend on it
apt-cache rdepends --installed libwebkit2gtk-4.1-0

# 3. Running processes that have loaded the library right now
sudo grep -l "libwebkit2gtk\|libwebkitgtk" /proc/[0-9]*/maps | cut -d/ -f3 | while read p; do ps -o comm= -p $p; done | sort | uniq -c

# 4. Whether those processes listen on the network (a count per PID; if all are 0, nothing listens)
for p in $(sudo grep -l "libwebkit2gtk\|libwebkitgtk" /proc/[0-9]*/maps | cut -d/ -f3 | sort -u); do sudo ss -lntup | grep -c "pid=$p,"; done
Output excerpt
CVE-2026-3909  [Ubuntu 26.04] webkit2gtk 2.52.6-0ubuntu0.26.04.1 (CVSS 8.8)
  KEV  米国CISAが、実際に悪用されていることを確認した脆弱性です。
  EPSS 2% (2026-11-01)
  修正版: まだありません

Reverse Depends:
  gir1.2-webkit2-4.1
  libedataserverui-1.2-4t64

      1 evolution-alarm
      1 evolution-sourc
      1 gnome-initial-s

0
0
0

The warning text follows the language of your RoamSwitch settings (this example is in Japanese). Here, "修正版: まだありません" means "Fixed version: not yet." What we learned:

  • What depends on it is the Evolution mail client and a GNOME initial-setup component. Neither relates to the server's job
  • What is running now is only Evolution's background processing. No screen that opens web pages or mail is running
  • None of the three processes listens on a port (0 each). There is no route that reaches them directly from the network

In step 4, match by PID, not by process name. If you filter by name, as in ss -ltnp | grep webkit, you get 0 only because the process name does not contain "webkit," even when the process is listening, and you miss it. You can check that your method is right by trying it on a process you know is listening (for example sshd).

#Accept it, with an expiry

Suppose the answers to the three questions lead you to this: "it is used, it is not used in a way that opens crafted data, nothing listens, and there is no mitigation for now." Recording it with a reason and an expiry is called acceptance.

This changes state

The command below leaves a record (~/.config/roamswitch/vuln_acceptances.json). The labs in this lesson do not run it. Run it in real operation, after you have made your decision.

Record an acceptance (changes state)
sudo roamswitch vuln-accept Ubuntu webkit2gtk CVE-2026-3909 \
  --version 2.52.6-0ubuntu0.26.04.1 --days 30 \
  --reason 'Ubuntu deferred, no fixed version. The CVE is Chrome Skia. Only Evolution etc. use webkit2gtk, no network listeners. Re-evaluate in 30 days'
The list of acceptances (roamswitch vuln-accept --list)
Ubuntu webkit2gtk CVE-2026-3909 (2.52.6-0ubuntu0.26.04.1)
  期限: 2026-12-03 (あと29日)
  理由: Ubuntuが対応見送り(deferred)で修正版なし。CVEはChromeのSkia。(以下略)
  記録: tetsuharu (2026-11-03)

The labels mean: 期限 is the expiry (29 days left), 理由 is the reason, and 記録 is who recorded it and when. The nature of acceptance:

  • It is not a fix. The warning leaves the "needs action" count and is counted separately as "accepted." It stays in the list
  • It has an expiry. The default is 90 days and the maximum is 365 days. When it arrives, the item returns to "needs action" and a record is left
  • A reason is required. Later, anyone can read who accepted it and why
  • It applies only to that version. If the package changes to another vulnerable version, it becomes a new finding that needs action

#When the expiry arrives

The expiry is a scheduled re-evaluation. On that day, check in this order.

  1. Has a fixed version been released? (Check with apt-cache policy and the vendor's vulnerability tracker)
  2. Is this package still needed? If you no longer use it, remove it
  3. Has the situation changed? (a new way of using it, a case of opening crafted data, and so on)
  4. If you still accept it, write a new reason and record it again
What not to do
  • Accept without writing a reason. Your later self, and other operators, can no longer read the basis for the decision
  • Choose the maximum 365 days without thinking. The expiry is the day you look again
  • Ignore it without checking because "it is a Chrome issue." You can only say that after you have checked the relation between the description and the package you installed
  • Turn off the check itself to silence the warning. It only becomes invisible; the situation does not change

#What it cannot see

What this procedure cannot confirm
  • Whether this package is actually affected by this CVE cannot be known from the warning. The warning comes from matching package name and version against a vulnerability map
  • The method in step 3 sees only what is running now. An app that starts later is a separate matter
  • The map is updated regularly. New information can change the situation (a fixed version appears, a report of exploitation is added, and so on)
  • Acceptance does not lower the risk. What lowers it is mitigation (removing, stopping, replacing)
Check yourself

Which is correct about the state after you record an acceptance?

Show the explanation

Acceptance is a record of the decision to "knowingly leave it, with an expiry." It does not mean it was fixed. When the expiry arrives, it is time to re-evaluate.

Features covered
What was verified

Verified on 2026-11-03. Target: Linux 1.17.30. The steps used on a real warning (webkit2gtk) on Ubuntu 26.04, Server Edition

Command output varies with the product version and the environment. If yours differs, check the version first.