Ruby before 2.4.3 allows Net::FTP command injection. Net::FTP#get, getbinaryfile, gettextfile, put, putbinaryfile, and puttextfile use Kernel#open to open a local file. If the localfile argument starts with the "|" pipe character, the command following the pipe character is executed. The default value of localfile is File.basename(remotefile), so malicious FTP servers could cause arbitrary command execution.
CVE-2017-17405
Score elevated to 9.0 because EPSS predicts 74% probability of exploitation within the next 30 days (99th percentile of EPSS-scored CVEs). NVD baseline CVSS 8.8 retained for reference. Confidence: see factors.
- High exploitation likelihood — EPSS 74%
A fix is available — apply it.
- CVSS v3
- 8.8
- EG Score
- 9.0CRITICALhigh confidence
- EG Risk
- 75EG Risk 75/100CISA SSVC
EG Risk is EchelonGraph's 0–100 priority score: it fuses intrinsic severity with real-world exploitation and automatability so you can rank equal-severity CVEs and fix the most dangerous first. Higher = act sooner. Distinct from the 0–10 EG Score (severity).
How it’s computedSeverity90% × 45%Exploitation74% × 40%Automatability30% × 15%CISA SSVC: Track at low or medium mission impact; Track* or Attend at high (mission-essential systems).Action: A fix is available. Apply it within your standard update timelines at low or medium mission impact and sooner than that at high. - EPSS PROB
- 74%
- EPSS %ILE
- 99th
- KEV
- Not listed
CISA SSVCTrack at low or medium mission impact; Track* or Attend at high (mission-essential systems).
A fix is available. Apply it within your standard update timelines at low or medium mission impact and sooner than that at high.
Exploitation public PoC (EG-KEV: elevated) · Automatable unknown (not published for this CVE) · Technical impact partial (CVSS below 9.0). Mission impact is CISA's Mission & Well-being decision point, and only you can judge it: high means the affected system is essential to your organisation's mission, or its compromise could cause irreversible harm to people. CISA's decision table
Published
December 15, 2017
Last Modified
June 17, 2026
Advisory Details (10)
Auto-updated May 22, 2026[SECURITY] [DLA 1421-1] ruby2.1 security update
https://lists.debian.org/debian-lts-announce/2018/07/msg00012.html[SECURITY] [DLA 1221-1] ruby1.9.1 security update
https://lists.debian.org/debian-lts-announce/2017/12/msg00025.html[SECURITY] [DLA 1222-1] ruby1.8 security update
https://lists.debian.org/debian-lts-announce/2017/12/msg00024.htmlAffected: Red Hat Enterprise Linux 7.3 Advanced Update Support, Red Hat Enterprise Linux 7.3 Telco Extended Update Support, and Red Hat
https://access.redhat.com/errata/RHSA-2019:2806Affected: Red Hat Enterprise Linux 7.
https://access.redhat.com/errata/RHSA-2018:0378Patch Availability(6)
| Vendor / Ecosystem | Fix (by version range) / Patch | Released | Source |
|---|---|---|---|
| ubuntu | ruby2.3 (2.3.3-1ubuntu1.1) @ artful | 2026-05-22 | ubuntu |
| redhat | ruby-0:2.0.0.648-30.el7_3 | 2019-09-19 | redhat |
| redhat | rh-ruby23-ruby-0:2.3.6-67.el7 | 2018-03-26 | redhat |
| redhat | rh-ruby22-ruby-0:2.2.9-19.el7 | 2018-03-26 | redhat |
| redhat | rh-ruby24-ruby-0:2.4.3-90.el7 | 2018-03-26 | redhat |
| redhat | ruby-0:2.0.0.648-33.el7_4 | 2018-02-28 | redhat |
Patches are aggregated from vendor advisories (Red Hat, Microsoft, Cisco, GitHub) and package ecosystems (OSV, GHSA). Multiple rows for the same upstream release have been deduplicated.
Affected Packages
(26 across 25 ecosystems)
Debian:7(2)
| Package | Vulnerable range | Fix by version range | Dependents |
|---|---|---|---|
| ruby1.8 | 1.8.7.358-7 ... 1.8.7.358-7.1+deb7u4 (6 versions) |
| — |
| ruby1.9.1 | 1.9.3.194-8.1 ... 1.9.3.194-8.1+deb7u6 (6 versions) |
| — |
Alpine:v3.10(1)
| Package | Vulnerable range | Fix by version range | Dependents |
|---|---|---|---|
| ruby | — |
| — |
Alpine:v3.11(1)
| Package | Vulnerable range | Fix by version range | Dependents |
|---|---|---|---|
| ruby | — |
| — |
Alpine:v3.12(1)
| Package | Vulnerable range | Fix by version range | Dependents |
|---|---|---|---|
| ruby | — |
| — |
Alpine:v3.13(1)
| Package | Vulnerable range | Fix by version range | Dependents |
|---|---|---|---|
| ruby | — |
| — |
Alpine:v3.14(1)
| Package | Vulnerable range | Fix by version range | Dependents |
|---|---|---|---|
| ruby | — |
| — |
Alpine:v3.15(1)
| Package | Vulnerable range | Fix by version range | Dependents |
|---|---|---|---|
| ruby | — |
| — |
Alpine:v3.16(1)
| Package | Vulnerable range | Fix by version range | Dependents |
|---|---|---|---|
| ruby | — |
| — |
Alpine:v3.17(1)
| Package | Vulnerable range | Fix by version range | Dependents |
|---|---|---|---|
| ruby | — |
| — |
Alpine:v3.18(1)
| Package | Vulnerable range | Fix by version range | Dependents |
|---|---|---|---|
| ruby | — |
| — |
Alpine:v3.19(1)
| Package | Vulnerable range | Fix by version range | Dependents |
|---|---|---|---|
| ruby | — |
| — |
Alpine:v3.20(1)
| Package | Vulnerable range | Fix by version range | Dependents |
|---|---|---|---|
| ruby | — |
| — |
Alpine:v3.21(1)
| Package | Vulnerable range | Fix by version range | Dependents |
|---|---|---|---|
| ruby | — |
| — |
Alpine:v3.22(1)
| Package | Vulnerable range | Fix by version range | Dependents |
|---|---|---|---|
| ruby | — |
| — |
Alpine:v3.23(1)
| Package | Vulnerable range | Fix by version range | Dependents |
|---|---|---|---|
| ruby | — |
| — |
Alpine:v3.24(1)
| Package | Vulnerable range | Fix by version range | Dependents |
|---|---|---|---|
| ruby | — |
| — |
Alpine:v3.3(1)
| Package | Vulnerable range | Fix by version range | Dependents |
|---|---|---|---|
| ruby | — |
| — |
Alpine:v3.4(1)
| Package | Vulnerable range | Fix by version range | Dependents |
|---|---|---|---|
| ruby | — |
| — |
Alpine:v3.5(1)
| Package | Vulnerable range | Fix by version range | Dependents |
|---|---|---|---|
| ruby | — |
| — |
Alpine:v3.6(1)
| Package | Vulnerable range | Fix by version range | Dependents |
|---|---|---|---|
| ruby | — |
| — |
Alpine:v3.7(1)
| Package | Vulnerable range | Fix by version range | Dependents |
|---|---|---|---|
| ruby | — |
| — |
Alpine:v3.8(1)
| Package | Vulnerable range | Fix by version range | Dependents |
|---|---|---|---|
| ruby | — |
| — |
Alpine:v3.9(1)
| Package | Vulnerable range | Fix by version range | Dependents |
|---|---|---|---|
| ruby | — |
| — |
Debian:8(1)
| Package | Vulnerable range | Fix by version range | Dependents |
|---|---|---|---|
| ruby2.1 | 2.1.5-2, 2.1.5-2+deb8u1, 2.1.5-2+deb8u2, 2.1.5-2+deb8u3 |
| — |
Debian:9(1)
| Package | Vulnerable range | Fix by version range | Dependents |
|---|---|---|---|
| ruby2.3 | 2.3.3-1, 2.3.3-1+deb9u1, 2.3.3-1+deb9u2 |
| — |
Weakness Classification(1)
MITRE Common Weakness Enumeration — the root-cause categories this CVE belongs to.
All Vendor Advisories
(6)
Every vendor that published an advisory referencing this CVE — pulled from our cve_vendor_advisories aggregation. Click any row for the vendor's original advisory page.
- Red HatRHSA-2018:0378IMPORTANT2017-12-14
RHSA-2018:0378 — Important
- Red HatRHSA-2018:0583IMPORTANT2017-12-14
RHSA-2018:0583 — Important
- Red HatRHSA-2018:0584IMPORTANT2017-12-14
RHSA-2018:0584 — Important
- Red HatRHSA-2018:0585IMPORTANT2017-12-14
RHSA-2018:0585 — Important
- Red HatRHSA-2019:2806IMPORTANT2017-12-14
RHSA-2019:2806 — Important
- UbuntuUSN-3515-1MEDIUM
Ruby vulnerability
Data Freshness Timeline
(refreshed 4× in last 7d / 15× in last 30d)
Each row is a source pipeline that fetched or updated this CVE on that date, with what changed. For example, "NVD update" means NVD published or revised its analysis for this CVE; "MITRE cvelistV5" means we ingested or refreshed it from the CNA feed. Most recent first.
- 2026-10-09 20:02 UTCEPSS rescore
- 2026-10-07 23:41 UTCEPSS rescore
- 2026-10-07 20:24 UTCOSV refresh
- 2026-10-06 15:11 UTCEPSS rescore
- 2026-10-03 14:21 UTCEPSS rescore
- 2026-09-30 09:30 UTCEG score recompute
- 2026-09-26 15:53 UTCEPSS rescore
- 2026-09-24 13:59 UTCEPSS rescore
- 2026-09-19 15:36 UTCEPSS rescore
- 2026-09-18 19:22 UTCEPSS rescore
- 2026-09-18 02:20 UTCOSV refresh
- 2026-09-17 19:22 UTCEPSS rescore
- 2026-09-15 03:05 UTCEPSS rescore
- 2026-09-13 16:42 UTCEPSS rescore
- 2026-09-12 14:55 UTCEPSS rescore
- 2026-09-10 09:26 UTCEPSS rescore
- 2026-09-04 13:56 UTCEPSS rescore
- 2026-09-01 13:48 UTCEPSS rescore
- 2026-08-30 19:13 UTCEPSS rescore
- 2026-08-30 03:18 UTCOSV refresh
- 2026-08-28 21:36 UTCEPSS rescore
- 2026-08-26 14:41 UTCEPSS rescore
- 2026-08-25 13:44 UTCEPSS rescore
- 2026-08-24 14:10 UTCEPSS rescore
- 2026-08-21 23:44 UTCEPSS rescore
Show 75 moreShow fewer
- 2026-08-20 22:50 UTCEPSS rescore
- 2026-08-19 16:59 UTCEPSS rescore
- 2026-08-16 02:10 UTCEPSS rescore
- 2026-08-15 01:26 UTCEPSS rescore
- 2026-08-13 21:56 UTCEPSS rescore
- 2026-08-13 14:51 UTCOSV refresh
- 2026-08-08 16:32 UTCEPSS rescore
- 2026-08-06 13:42 UTCEPSS rescore
- 2026-08-05 19:12 UTCEPSS rescore
- 2026-08-02 02:23 UTCEPSS rescore
- 2026-07-30 16:24 UTCEPSS rescore
- 2026-07-30 01:26 UTCEPSS rescore
- 2026-07-28 21:21 UTCOSV refresh
- 2026-07-28 15:32 UTCEPSS rescore
- 2026-07-25 14:13 UTCEPSS rescore
- 2026-07-23 14:15 UTCEPSS rescore
- 2026-07-23 01:28 UTCEG score recompute▲ 0.20
- 2026-07-22 22:07 UTCEG score recompute▼ 0.20
- 2026-07-22 14:04 UTCEPSS rescore
- 2026-07-20 17:04 UTCEPSS rescore
- 2026-07-20 17:04 UTCEPSS rescore
- 2026-07-19 14:28 UTCEPSS rescore
- 2026-07-19 14:28 UTCEPSS rescore
- 2026-07-19 02:26 UTCEPSS rescore
- 2026-07-19 02:26 UTCEPSS rescore
- 2026-07-18 10:00 UTCEPSS rescore
- 2026-07-16 16:59 UTCEPSS rescore
- 2026-07-16 16:59 UTCEPSS rescore
- 2026-07-15 16:54 UTCEPSS rescore
- 2026-07-15 16:54 UTCEPSS rescore
- 2026-07-13 22:26 UTCEPSS rescore
- 2026-07-13 06:09 UTCEPSS rescore
- 2026-07-11 13:52 UTCOSV refresh
- 2026-07-11 08:24 UTCEPSS rescore
- 2026-07-06 02:20 UTCEPSS rescore
- 2026-07-01 15:02 UTCEPSS rescore
- 2026-07-01 15:02 UTCEPSS rescore
- 2026-06-30 23:19 UTCEPSS rescore
- 2026-06-30 23:19 UTCEPSS rescore
- 2026-06-29 14:03 UTCEPSS rescore
- 2026-06-28 04:53 UTCEPSS rescore
- 2026-06-25 13:47 UTCEPSS rescore
- 2026-06-25 13:47 UTCEPSS rescore
- 2026-06-24 14:02 UTCEPSS rescore
- 2026-06-23 21:30 UTCEPSS rescore
- 2026-06-22 20:35 UTCOSV refresh
- 2026-06-21 14:54 UTCEPSS rescore
- 2026-06-21 14:54 UTCEPSS rescore
- 2026-06-18 17:50 UTCEPSS rescore
- 2026-06-17 17:50 UTCEPSS rescore
- 2026-06-15 17:45 UTCEPSS rescore
- 2026-06-13 22:57 UTCEPSS rescore
- 2026-06-12 23:09 UTCEPSS rescore
- 2026-06-11 13:57 UTCEPSS rescore
- 2026-06-10 22:15 UTCEPSS rescore
- 2026-06-07 15:22 UTCEPSS rescore
- 2026-06-07 15:22 UTCEPSS rescore
- 2026-06-05 22:44 UTCEPSS rescore
- 2026-06-05 10:57 UTCOSV refresh
- 2026-06-01 13:49 UTCEPSS rescore
- 2026-06-01 13:49 UTCEPSS rescore
- 2026-05-28 13:42 UTCEPSS rescore
- 2026-05-28 13:42 UTCEPSS rescore
- 2026-05-26 07:17 UTCEPSS rescore
- 2026-05-26 07:17 UTCEPSS rescore
- 2026-05-22 21:15 UTCEPSS rescore
- 2026-05-22 21:15 UTCEPSS rescore
- 2026-05-22 21:15 UTCEPSS rescore
- 2026-05-22 07:13 UTCEG score recompute
- 2026-05-22 07:13 UTCVendor advisory
- 2026-05-22 07:12 UTCGHSA enrichment
- 2026-05-20 22:37 UTCEPSS rescore
- 2026-05-20 22:37 UTCEPSS rescore
- 2026-05-18 21:30 UTCEPSS rescore
- 2026-05-18 21:30 UTCEPSS rescore
Publicly available exploits
(1 reference)Working exploit code is in the public domain (1 Exploit-DB entry). Defenders should treat patch urgency accordingly — public PoCs typically lead to mass-exploitation within 24-72 hours.
- Exploit-DBEDB-43381First seen Dec 2, 2017
Ruby < 2.2.8 / < 2.3.5 / < 2.4.2 / < 2.5.0-preview1 - 'NET::Ftp' Command Injection
Open source ↗
Related CVEs(same product + same vendor + same CWE)
Same product
10 shownAlpine:v3.3:ruby · Debian:7:ruby1.8
- CVE-2017-0898EG 9.1EPSS p95CRITICAL
- CVE-2017-10784EG 8.8EPSS p97HIGH
- CVE-2017-0899EG 9.8EPSS p96CRITICAL
- CVE-2017-14064EG 9.8EPSS p95CRITICAL
- CVE-2017-14033EG 7.5EPSS p94HIGH
- CVE-2017-0901EG 7.5EPSS p98HIGH
- CVE-2017-0900EG 7.5EPSS p95HIGH
- CVE-2018-8780EG 9.1EPSS p95CRITICAL
- CVE-2018-8779EG 7.5EPSS p94HIGH
- CVE-2018-8778EG 7.5EPSS p94HIGH
Same vendor
10 shownredhat:RHSA-2018:0378
- CVE-2017-17790EG 9.8EPSS p93CRITICAL
- CVE-2017-0903EG 9.8EPSS p97CRITICAL
- CVE-2017-0899EG 9.8EPSS p96CRITICAL
- CVE-2017-14064EG 9.8EPSS p95CRITICAL
- CVE-2017-0898EG 9.1EPSS p95CRITICAL
- CVE-2017-10784EG 8.8EPSS p97HIGH
- CVE-2017-0902EG 8.1EPSS p92HIGH
- CVE-2017-14033EG 7.5EPSS p94HIGH
- CVE-2017-0901EG 7.5EPSS p98HIGH
- CVE-2017-0900EG 7.5EPSS p95HIGH
Same CWE
10 shownCWE-78
- CVE-2017-10904EG 9.8CRITICAL
- CVE-2017-15103EG 8.8EPSS p93HIGH
- CVE-2017-17105EG 9.8EPSS p100CRITICAL
- CVE-2017-17757EG 8.8HIGH
- CVE-2017-17758EG 8.8HIGH
- CVE-2017-15049EG 8.8EPSS p97HIGH
- CVE-2017-5255NVD 8.8EG 9.0EPSS p99CRITICAL
- CVE-2017-17411EG 9.8EPSS p100CRITICAL
- CVE-2017-16921EG 8.8EPSS p97HIGH
- CVE-2017-17458EG 9.8EPSS p93CRITICAL
Frequently asked(5)
What is CVE-2017-17405?
When was CVE-2017-17405 disclosed?
Is CVE-2017-17405 actively exploited?
What is the CVSS score of CVE-2017-17405?
How do I remediate CVE-2017-17405?
Dependency Blast Radius
See which npm, PyPI, Go, and Maven packages are affected by CVE-2017-17405
Is Your Infrastructure Affected by CVE-2017-17405?
EchelonGraph automatically scans your cloud infrastructure and maps CVE exposure using blast radius analysis.