The Unguarded First Day: 17 CVEs in Juniper Session Smart Router

On October 28, 2026, Juniper Networks published JSA112183, a coordinated advisory that lands differently from the usual single-CVE bulletin: it discloses seventeen vulnerabilities in Session Smart Router (SSR) and Session Smart Conductor, all on the same day, all fixed in the same set of releases. Two of them are critical. One (CVE-2026-103409, CVSS 9.8) hands administrative control of a router to anyone on the network who can reach its management interface - but only in a specific, easily-overlooked window of the device’s life: before it has been onboarded to Mist or a Conductor. The other (CVE-2026-103406, CVSS 9.8) turns the name of a Salt minion into a root command injection on the Conductor itself - the box that manages your whole fleet.
The remaining fifteen fill out a complete takeover kit: a stack overflow in the DHCP client that gives remote code execution to anyone L2-adjacent, a symlink bug that overwrites files as root, an unsigned model cache that PCLI executes happily, two command injections in AccessManager, a path traversal into the certificate store, and a spread of memory-corruption bugs in the TCP optimization and VRRP paths.
This article walks through the full batch: what each vulnerability is, how the affected components fit together, which windows of exposure actually matter, and a lab PoC for the DHCP attack surface - the one part of this advisory you can meaningfully rehearse without a licensed appliance. If you run SSR or a Juniper Mist WAN Edge deployment, the practical takeaway is simple: there are no workarounds, and the fix is 7.0.5, 7.1.7, or 7.2.3.
Background: What Is Session Smart Router?
Session Smart Router is a software router and SD-WAN platform that came to Juniper through acquisition: Juniper announced its intent to buy 128 Technology on October 19, 2020, in a deal valued at $450 million, and the platform has since become part of Juniper’s Mist WAN portfolio - the advisory itself speaks of devices being “onboarded to Mist”. Where a classic router forwards packets hop by hop, the 128T platform was built around sessions and service policies: its documentation dedicates concept pages to session timers, service design, and its signature “Secure Vector Routing” technology. That design is why the CVE list below reads like a tour of the platform: several of the memory bugs sit in exactly the session machinery that distinguishes SSR from a plain Linux router.
The platform has two roles:
| Component | Role | Where the batch hits it |
|---|---|---|
| Session Smart Router (SSR) | The data-plane node. Runs forwarding, session setup, DHCP client, VRRP, DPI scanning, the local management web UI and PCLI | Affected by 16 of the 17 CVEs |
| Session Smart Conductor | The management node. Hosts configuration, the REST/web API, provisioning, and a Salt master that routers connect to as Salt minions | Affected by 9 of the 17 CVEs (one exclusively Conductor) |
Two implementation details from the public documentation matter for this advisory. First, provisioning is Salt-based: the Conductor runs a Salt master (configured under /etc/128technology/salt/master), each router joins as a Salt minion, and the master executes Salt highstate for the minion on connect, pushing rendered configuration down via Salt pillars. That is precisely the machinery CVE-2026-103406 corrupts. Second, a fresh router is a wide-open box by design: the installation flow ends with a QuickStart web page on the router - reachable on the management LAN, with DHCP enabled on its ports and documented default credentials (admin / 128Tadmin) - that waits for an operator to apply a QuickStart file and join it to a Conductor. That is precisely the window CVE-2026-103409 lives in.
The Batch at a Glance
All seventeen CVEs were published by Juniper’s PSIRT (the CNA for these records) on the same day, and all reference the same advisory. Sorted by severity:
| CVE | CVSS | CWE | Component | Access | Products |
|---|---|---|---|---|---|
| CVE-2026-103409 | 9.8 Critical | CWE-306 | Missing auth on insecure endpoint running as root | Network, unauthenticated (pre-onboarding) | Router |
| CVE-2026-103406 | 9.8 Critical | CWE-78 | AutomatedProvisioner, salt minion ID command injection | Network, unauthenticated | Conductor |
| CVE-2026-103401 | 8.8 High | CWE-59 | Symlink following in unauthenticated web server handlers | Low-priv, via web API | Router + Conductor |
| CVE-2026-103402 | 8.8 High | CWE-345 | PCLI executes unverified model cache files | Local, cache-dir write | Router + Conductor |
| CVE-2026-103403 | 8.8 High | CWE-78 | AccessManager audit-rule deletion command injection | Low-priv | Router + Conductor |
| CVE-2026-103407 | 8.8 High | CWE-22 | ConfigDirector certificate/key path traversal | Authenticated REST user | Router + Conductor |
| CVE-2026-103408 | 8.8 High | CWE-121 | DHCP client stack buffer overflow | Adjacent network, unauthenticated | Router |
| CVE-2026-106079 | 8.8 High | CWE-78 | AccessManager YANG configuration command injection | Config-write privileges | Router + Conductor |
| CVE-2026-103410 | 7.5 High | CWE-190/835 | DPI certificate scanner integer overflow | Network, unauthenticated (crafted TLS cert) | Router |
| CVE-2026-103411 | 7.1 High | CWE-191 | DhcpMessageDecoder integer underflow | Adjacent network, unauthenticated | Router |
| CVE-2026-103400 | 5.5 Medium | CWE-74 | Ember service output injection | Local | Router + Conductor |
| CVE-2026-103405 | 5.8 Medium | CWE-74 | Web server HTTP header injection | Network | Router + Conductor |
| CVE-2026-103390 | 5.3 Medium | CWE-125 | HttpParser out-of-bounds read | Network | Router + Conductor |
| CVE-2026-103391 | 5.3 Medium | CWE-787 | TCP proxy/optimization out-of-bounds write | Network, transit packet | Router |
| CVE-2026-103392 | 4.8 Medium | CWE-787 | Oversized SACK option out-of-bounds write | Network, transit packet | Router |
| CVE-2026-103393 | 4.3 Medium | CWE-125 | VRRPv3 advertisement out-of-bounds read | Adjacent | Router |
| CVE-2026-103394 | 3.7 Low | CWE-665 | Improper initialization in security policy assignment | Network, high complexity | Router |
Every CVE in the batch shares the same version matrix, which makes triage refreshingly simple:
| Installed version | Status | Fixed in |
|---|---|---|
| All releases before 7.0.5 | Affected | 7.0.5 |
| 7.1.0 through before 7.1.7 | Affected | 7.1.7 |
| 7.2.0 through before 7.2.3 | Affected | 7.2.3 |
The advisory states there are no workarounds for any of the seventeen issues. Upgrading is the only remediation - and since CVE-2026-103406 targets the Conductor, fleet managers should treat the Conductor as the first hop in the upgrade order, not the last.
The Criticals
CVE-2026-103409: Administrative Access Before Onboarding
A Missing authentication for critical function vulnerability in Juniper Networks Session Smart Router allows an unauthenticated network-based attacker to obtain administrative privileges by passing crafted URL parameters to an insecure endpoint running as root. - Juniper PSIRT
The CVSS 9.8 vector (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H) describes the worst case on paper: network-reachable, no privileges, no user interaction, total confidentiality/integrity/availability impact. The qualifier in the advisory is what makes it operationally interesting:
Note that this vulnerability can only be exploited prior to the device being onboarded to Mist/Conductor. The issue can no longer be exploited once a device is onboarded to Mist/Conductor.
So the attack window is the provisioning phase. From the public installation documentation, that phase is not a side note - it is a designed state where the router:
- exposes a QuickStart web page for initial configuration: the documented flow has the operator plug a laptop into any ethernet port except port 1, log into the router’s staging address with factory credentials (
admin/128Tadmin- the docs also listroot/128tRoutesandt128/128tRoutesas accounts created during ISO install), and drag in the QuickStart file generated by the Conductor. The router hands out a staging address over DHCP on those ports (192.168.0.128is the documented default device host address).
In other words, Juniper’s own advisory confirms what the docs imply: an unconfigured SSR sitting on a staging LAN is running a privileged, insecure endpoint with no authentication boundary. Anyone who can reach the device’s staging address in that state - a colleague on the staging VLAN, a mis-patched switch, a rogue laptop - can pass crafted URL parameters to that endpoint and obtain administrative privileges on the root-running service, no credentials required. Once the device is onboarded to Mist or a Conductor, the vulnerable path closes.
This is why zero-touch deployments deserve specific attention here: the entire point of staging flows is that boxes get powered up on ordinary LANs before anyone configures them. The advisory does not enumerate the affected endpoint, and neither will we - but the practical defense is to treat every un-onboarded SSR as hostile ground until it is upgraded: stage on an isolated VLAN, or upgrade the ISO before the device ever touches a shared network.
CVE-2026-103406: Salt Minion ID to Root on the Conductor
An Improper Neutralization of Special Elements used in an OS Command vulnerability in the AutomatedProvisioner in Juniper Networks Session Smart Conductor allows a remote attacker to execute arbitrary commands as root via a specially crafted salt minion ID. - Juniper PSIRT
If CVE-2026-103409 is about a single un-onboarded router, this one is about the box behind your whole deployment. Recall the provisioning architecture from the public documentation: routers join the Conductor as Salt minions, and the moment a minion connects, the Salt master runs provisioning logic against it. The AutomatedProvisioner is that logic - and per the advisory, it interpolates the minion ID supplied by the connecting device into a command without neutralizing shell metacharacters. A connecting party that controls its own minion ID string therefore reaches command execution as root on the Conductor.
The severity vector (AV:N/AC:L/PR:N/UI:N) says this needs no credentials and no user interaction - it is a network-reachable critical against the management node. The Conductor is not a forwarding box; it holds the configuration authority, the certificate store, and the Salt pillars (which the documentation describes as the mechanism for delivering confidential configuration to minions). Root on a Conductor is therefore one step from fleet-wide compromise: config push, certificate extraction, and arbitrary re-provisioning of every router that reports to it.
It is worth noting how familiar this bug class is. Salt’s own 2020 advisory wave covered authentication bypass and command-injection flaws in the same master/minion architecture (CVE-2020-11651, for example, allowed an unauthenticated caller to invoke master functions and run commands on connected minions), and the lesson from those advisories applies unchanged here: any string a client supplies that ends up in a shell command is an injection waiting for its CVE number. The minion ID looks like an innocuous label; it is remote input, and it clearly reached a root-privileged shell.
The LAN Attacker: DHCP as a Weapon
CVE-2026-103408: Stack Overflow in the DHCP Client
A Stack Buffer Overflow vulnerability in the DHCP client in Juniper Networks Session Smart Router allows an unauthenticated attacker on the local network to achieve remote code execution via a malicious DHCP reply. - Juniper PSIRT
The DHCP client is a recurring villain in router advisories for a structural reason: it is a network service that parses attacker-controlled packets before any trust relationship exists. A DHCP client’s job is to accept a reply from whichever server answers on its broadcast segment - by definition, any L2-adjacent host can send one. In an office, that is everyone on the same VLAN; on a misconfigured switch port, it is whoever can reach your uplink; at a temporary site, it is the conference room.
Per the advisory, a malicious DHCP reply here is enough for remote code execution (CWE-121, stack buffer overflow, CVSS 8.8 with the adjacent vector AV:A). The advisory does not specify which DHCP reply fields carry the overflow, and we will not guess - but the PoC section below shows how the delivery vector works and how you can rehearse detection for it in your own lab, honestly, without the appliance.
CVE-2026-103411: Integer Underflow in DhcpMessageDecoder
Same delivery vehicle, milder outcome (CVSS 7.1): an integer underflow (CWE-191) in a component literally named DhcpMessageDecoder lets a malicious DHCP reply cause information disclosure and denial of service. The component name suggests a DHCP packet parser reading length fields from the wire - underflows in that pattern typically walk a parser past a buffer’s start, leaking memory or crashing the process. Again: crafted DHCP reply, unauthenticated, adjacent network. If your monitoring sees a router’s DHCP client flapping, this is one candidate explanation.
One network segment, two bugs, two outcomes - and both need nothing from the attacker but the ability to answer a DHCPDISCOVER first. Network-side DHCP snooping on switching infrastructure, which drops DHCP server messages from untrusted ports, breaks the delivery vector for both.
The Post-Auth and Local Kit: From Foothold to Root
The remaining high-severity issues form a coherent escalation kit. Individually each requires some prior access; chained together, they turn a minor foothold into root:
| CVE | Entry requirement | What it yields |
|---|---|---|
| CVE-2026-103401 | Local unprivileged user, via unauthenticated web server handlers | Arbitrary file overwrite as root (symlink following, CWE-59) |
| CVE-2026-103402 | Write access to the PCLI model cache directory | Code execution + privilege escalation (unverified cache files, CWE-345) |
| CVE-2026-103403 | Low-privileged attacker | File deletion + command execution via audit-rule deletion in AccessManager (CWE-78) |
| CVE-2026-106079 | Config-write privileges | Command execution as root via YANG configuration in AccessManager (CWE-78) |
| CVE-2026-103407 | Authenticated REST user | Read/overwrite/delete arbitrary certificate and key files via path traversal (CWE-22) |
Two of these deserve a second look. CVE-2026-103401 pairs symlink following with unauthenticated web server handlers: the CVSS vector (AV:N/PR:L) and the description together indicate a web API that a low-privileged local user can drive into overwriting arbitrary files as root - the classic /etc/shadow or service-binary overwrite, delivered through the product’s own HTTP interface. CVE-2026-103407 is quieter but strategically valuable for an attacker: the certificate and private-key store. Path traversal that reads, overwrites, or deletes those files is identity theft for a router - keys for the web UI, for tunnel authentication, for the Conductor relationship.
For anyone operating SSR deployments, this table is a reminder that “authenticated, low-privilege” accounts are not safe placeholders: on this platform they have been a direct line to root.
The Data-Plane Set: Memory Bugs Where Traffic Flows
The mediums and the one low-severity issue are memory-safety and injection bugs in the packet path - less dramatic than the criticals, but sitting on interfaces that face untrusted networks by definition:
- CVE-2026-103390 (CWE-125): out-of-bounds read in
HttpParser, denial of service via crafted HTTP request. - CVE-2026-103391 (CWE-787): out-of-bounds write in the SSR TCP proxy/optimization path - a transit TCP packet with crafted fields can corrupt forwarded data and crash the data plane. This is the session-oriented forwarding machinery the platform is built around.
- CVE-2026-103392 (CWE-787): oversized SACK option write in TCP header processing - data corruption and session desynchronization from transit traffic.
- CVE-2026-103393 (CWE-125): out-of-bounds read in VRRPv3 handling - stale memory disclosure or a system fault from a crafted advertisement. VRRP packets are trivially spoofable on any L2 segment without authentication.
- CVE-2026-103410 (CWE-190/835): integer overflow in the DPI certificate scanner - a crafted TLS server certificate causes denial of service. Note the delivery: any TLS session the SSR’s DPI scanner inspects is an input channel.
- CVE-2026-103400 (CWE-74) and CVE-2026-103405 (CWE-74): injection flaws in the local ember service and the web server’s HTTP header handling respectively.
- CVE-2026-103394 (CWE-665): improper initialization that can leave traffic decryptable or disruptible through security policy assignment - the lowest score in the batch, but the only one that speaks directly to confidentiality of routed traffic.
Attack Scenarios
Pulling the batch together into the three scenarios that matter operationally - the map below shows where each CVE group sits on the platform:
Scenario A - the staging LAN. A batch of new routers arrives at a branch office and gets powered on a shared switch before someone walks them through onboarding. Any device on that VLAN reaches the un-onboarded routers’ QuickStart interface; CVE-2026-103409 converts reachability into root-level administrative access, and the victim boxes never know provisioning was intercepted.
Scenario B - the shared segment. A deployed SSR sits on a WAN hand-off or a user VLAN where the attacker has L2 presence. A rogue DHCP responder wins the race against the legitimate server; CVE-2026-103408 turns the reply into code execution on the router. No credentials, no user interaction.
Scenario C - the conductor. The attacker can reach the Conductor’s network interface (CVE-2026-103406 is unauthenticated), sends a minion-join with a crafted ID, and executes commands as root on the management node - with configuration authority, the certificate store, and Salt pillars on the same disk. From there, every managed router is a push away.
Attacker (L2-adjacent) Attacker (network)
| |
v v
+-------------+ DHCP reply +--------+ minion join +-----------+
| SSR Router |<--------------| LAN | | |
| (pre- | CVE-2026- | segment| CVE-2026- | Conductor |
| onboarding)| 103408/411 +--------+ 103406 | |
+------+------+ +-----+-----+
| crafted URL params | root
v (CVE-2026-103409) v
+-------------+ fleet config push
| admin=root |<----- one compromise away from ------+
+-------------+ the whole deployment
None of these scenarios requires chaining across more than one vulnerability, which is what distinguishes this advisory from the usual single-bug bulletin: it ships the entry, the escalation, and the fleet pivot in one release.
Proof of Concept: Rehearsing the DHCP Attack Surface
All PoC tooling for this article is in the companion repository:
https://github.com/Hunt-Benito/the-unguarded-first-day-cve-2026-103409-juniper-session-smart-router
Caveat first, in bold, because it matters: no part of this PoC reproduces an actual SSR compromise. SSR software is distributed under Juniper entitlements, and the advisory does not publish the vulnerable parser internals, so a truthful lab demo has to stop where the facts stop. What the kit does instead is honest and still useful: it crafts the two generic malformed-DHCP-reply shapes that the advisory’s CWE classes describe (CWE-121 overflow via reply options for CVE-2026-103408, CWE-191 length underflow for CVE-2026-103411), detects those shapes, and audits for the pre-onboarding exposure CVE-2026-103409 depends on. Everything below ran on plain Linux with Python 3 and scapy, in pcap mode, with no root privileges and no Juniper software.
Crafting the malformed replies
01_dhcp_replay.py builds a compliant-looking OFFER and then patches the options area by hand (scapy caps the DHCP options field, so the malformed TLVs are spliced into the raw BOOTP payload and the packet is reserialized with recomputed IP/UDP checksums):
$ python3 01_dhcp_replay.py --shape overflow --demo-pcap overflow.pcap
[+] built overflow frame, 1014 bytes - options area intentionally oversized (CVE-2026-103408 class)
[+] wrote overflow.pcap
$ python3 01_dhcp_replay.py --shape underflow --demo-pcap underflow.pcap
[+] built underflow frame, 302 bytes - trailing option length overclaims remaining bytes (CVE-2026-103411 class)
[+] wrote underflow.pcap
The underflow shape is worth inspecting byte-by-byte, because it is the exact pattern an integer-underflow decoder chokes on. The frame tail after the DHCP magic cookie reads:
0110 00 00 00 00 00 00 63 82 53 63 35 01 02 36 04 C0 ......c.Sc5..6..
0120 A8 01 05 33 04 00 01 51 80 72 20 41 42 FF ...3...Q.r AB.
Walk it as a decoder would: 35 01 02 is the message-type option, 36 04 C0 A8 01 05 the server identifier, 33 04 00 01 51 80 the lease time. Then comes 72 20 41 42 - option 114, whose length byte claims 32 bytes but which carries only 2 before the end marker (FF). A parser that trusts the claimed length and walks 32 bytes forward is now reading stack memory that was never a DHCP option.
Detecting the shapes
02_dhcp_monitor.py parses server replies independently of any DHCP implementation and flags four anomaly classes, including both shapes above. Run against the three pcaps (two malicious, one compliant control):
$ python3 02_dhcp_monitor.py --pcap overflow.pcap --pcap underflow.pcap --pcap benign.pcap
[!] overflow.pcap src=02:00:00:aa:bb:01 -> OVERSIZED-OPTIONS(732B>312B)
[!] underflow.pcap src=02:00:00:aa:bb:01 -> LENGTH-OVERRUN(code=114,claims=32,available=3)
[=] done: 2 alert(s)
The compliant control frame raises no alert. The monitor also flags a rogue-OFFER race - multiple OFFERs with different source MACs for one transaction id - which is the delivery condition for both DHCP CVEs regardless of which parser bug receives the reply. In production, wire the same rules into your network monitoring (a tcpdump/Zeek sensor on the client VLANs), since the tool’s live mode is a lab convenience, not a sensor platform.
Auditing for the pre-onboarding exposure
03_ssr_exposure_audit.sh answers the operational question CVE-2026-103409 raises from outside the box: is anything on my network sitting in the un-onboarded state the advisory warns about? It probes the management ports, looks for 128T/SSR markers in the HTTP response, extracts a version banner if present, and compares it against the fixed releases. It is passive - no exploit traffic, no credential guessing:
$ PORTS="18080" ./03_ssr_exposure_audit.sh 127.0.0.1 # against a mock page
[*] auditing 127.0.0.1 (ports: 18080)
[+] port 18080 open
[!] HTTP 18080: marker 'QuickStart' present - host identifies as 128T/SSR
[!] HTTP 18080: marker '128T' present - host identifies as 128T/SSR
[!] HTTP 18080: marker 'Session Smart' present - host identifies as 128T/SSR
[*] HTTP 18080: banner 'Version: 7.2.1'
[!] version does not match a fixed JSA112183 release
[=] CONCLUSION: host answers with 128T/SSR markers on management ports.
If this box is not yet onboarded to Mist/Conductor, treat it as
exposed to CVE-2026-103409: isolate or upgrade (fixed in 7.0.5 7.1.7 7.2.3).
(That output is from a local mock server reproducing the documented marker layout - the real thing only you can check on your network.)
Remediation and Hardening
The advisory publishes no workarounds: the fix is 7.0.5, 7.1.7, or 7.2.3, and every one of the seventeen CVEs is closed by moving to a fixed release. Sequencing matters - upgrade Conductors first, since CVE-2026-103406 gives unauthenticated root on the box that controls the fleet, and a compromised Conductor makes every downstream router’s trust story moot.
Exposure reduction worth doing regardless, because it removes the delivery paths rather than the bugs:
- DHCP snooping on switching infrastructure: drop server replies from untrusted ports. This kills the delivery vector for CVE-2026-103408 and CVE-2026-103411 in one move, and the same rule base catches rogue responders on user VLANs.
- Isolate the staging process. Un-onboarded routers are, per the advisory itself, exploitable until they are onboarded. Stage on an isolated VLAN (or bench), upgrade the ISO first if the image predates the fixed releases, and audit for forgotten boxes with
03_ssr_exposure_audit.sh. - Treat Conductor reachability as critical surface. It is a 9.8 unauthenticated command-injection target in this batch; it should be reachable from management networks only.
- Watch the certificate store. CVE-2026-103407 reads, overwrites, and deletes certificate and key files through the REST API. If your fleet keys rotate on a schedule, a rotation event you did not schedule is a signal.
- Do not hand out low-privilege access casually. The post-auth kit in this advisory (symlink overwrite as root, PCLI cache execution, two AccessManager command injections) means a “read-only” operator account is a step away from root.
Closing Thoughts
There is a pattern worth naming in this advisory. The two criticals both sit on the provisioning path - the phase where a network appliance is supposed to be reachable, because it is waiting for someone to configure it. The QuickStart flow assumes a friendly staging LAN; the Salt join assumes the minion ID is a label, not input. Every convenience that makes zero-touch deployment easy widens the window where the box is trusted before it has proven anything.
Batches like this one also read as a maturity signal in the other direction: seventeen findings, published together, with a clean version matrix and no ambiguity about the fix. If you operate SSR or Mist WAN Edge, the decision is unusually easy this month. Patch the Conductors, then the routers, and while the boxes reboot, spend ten minutes making sure nothing on your staging VLANs is still living in its unguarded first day.
SOURCES
- Juniper Networks PSIRT advisory (JSA112183): https://supportportal.juniper.net/JSA112183
- CVE Program record, CVE-2026-103409: https://www.cve.org/CVERecord?id=CVE-2026-103409
- CVE Program record, CVE-2026-103406: https://www.cve.org/CVERecord?id=CVE-2026-103406
- NVD entry, CVE-2026-103409: https://nvd.nist.gov/vuln/detail/CVE-2026-103409
- NVD entry, CVE-2026-103408: https://nvd.nist.gov/vuln/detail/CVE-2026-103408
- 128 Technology documentation (Juniper Networks), About 128T / Secure Vector Routing (archived): https://web.archive.org/web/2020/https://docs.128technology.com/docs/about_128t/
- 128 Technology documentation (Juniper Networks), Using Saltstack at Scale With SSR (archived): https://web.archive.org/web/2024/https://docs.128technology.com/docs/bcp_salt_pillars/
- 128 Technology documentation (Juniper Networks), Router Installation QuickStart from the OTP ISO (archived): https://web.archive.org/web/2025/https://docs.128technology.com/docs/intro_install_quickstart_otpiso/
- 128 Technology documentation (Juniper Networks), Programmable Command Line Interface (PCLI) (archived): https://web.archive.org/web/2020/https://docs.128technology.com/docs/concepts_pcli/
- Wikipedia, List of acquisitions by Juniper Networks (128 Technology, announced October 19, 2020): https://en.wikipedia.org/wiki/List_of_acquisitions_by_Juniper_Networks
- CVE Program record, CVE-2020-11651 (Salt master ClearFuncs, background on the Salt 2020 advisory wave): https://www.cve.org/CVERecord?id=CVE-2020-11651
- RFC 2131, Dynamic Host Configuration Protocol: https://www.rfc-editor.org/rfc/rfc2131
- RFC 2132, DHCP Options and BOOTP Vendor Extensions: https://www.rfc-editor.org/rfc/rfc2132
- Scapy documentation: https://scapy.readthedocs.io/