ruby — security advisory
An issue was discovered in Ruby through 2.6.7, 2.7.x through 2.7.3, and 3.x through 3.0.1. A malicious FTP server can use the PASV response to trick Net::FTP into connecting back to a given IP address and port. This potentially makes curl extract information about services that are otherwise private and not disclosed (e.g., the attacker can conduct port scans and service banner extractions).
- Products
- ruby
- Affected versions
- Not specified
- Fixed versions
- 2.6.8-r0, 2.7.4-r0
- CVEs
- CVE-2021-31810
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 31 Oct 2026, 22:04 UTC · Revision 1
Source evidence
An issue was discovered in Ruby through 2.6.7, 2.7.x through 2.7.3, and 3.x through 3.0.1. A malicious FTP server can use the PASV response to trick Net::FTP into connecting back to a given IP address and port. This potentially makes curl extract information about services that are otherwise private and not disclosed (e.g., the attacker can conduct port scans and service banner extractions).
osv:ALPINE-CVE-2021-31810
ruby
Fixed versions: 2.6.8-r0
ruby
Fixed versions: 2.7.4-r0
ruby
Fixed versions: 2.7.4-r0
ruby
Fixed versions: 2.7.4-r0
ruby
Fixed versions: 2.7.4-r0
ruby
Fixed versions: 2.7.4-r0
ruby
Fixed versions: 2.7.4-r0
ruby
Fixed versions: 2.7.4-r0
ruby
Fixed versions: 2.7.4-r0
ruby
Fixed versions: 2.7.4-r0
ruby
Fixed versions: 2.7.4-r0
ruby
Fixed versions: 2.7.4-r0
ruby
Fixed versions: 2.7.4-r0
ruby
Fixed versions: 2.7.4-r0
Complete source record
{
"id": "4fbd47ce3db6aa78b414237efebfae942e1df971a73d1488b9ac75cf7e4bc5d7",
"url": "https://osv.dev/vulnerability/ALPINE-CVE-2021-31810",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "ALPINE-CVE-2021-31810",
"summary": "An issue was discovered in Ruby through 2.6.7, 2.7.x through 2.7.3, and 3.x through 3.0.1. A malicious FTP server can use the PASV response to trick Net::FTP into connecting back to a given IP address and port. This potentially makes curl extract information about services that are otherwise private and not disclosed (e.g., the attacker can conduct port scans and service banner extractions).",
"evidence": "osv:ALPINE-CVE-2021-31810",
"products": [
{
"name": {
"value": "ruby",
"evidence": "/affected/0/package/name"
},
"prerequisites": [],
"fixed_versions": [
{
"value": "2.6.8-r0",
"evidence": "/affected/0/ranges"
}
],
"affected_versions": []
},
{
"name": {
"value": "ruby",
"evidence": "/affected/1/package/name"
},
"prerequisites": [],
"fixed_versions": [
{
"value": "2.7.4-r0",
"evidence": "/affected/1/ranges"
}
],
"affected_versions": []
},
{
"name": {
"value": "ruby",
"evidence": "/affected/2/package/name"
},
"prerequisites": [],
"fixed_versions": [
{
"value": "2.7.4-r0",
"evidence": "/affected/2/ranges"
}
],
"affected_versions": []
},
{
"name": {
"value": "ruby",
"evidence": "/affected/3/package/name"
},
"prerequisites": [],
"fixed_versions": [
{
"value": "2.7.4-r0",
"evidence": "/affected/3/ranges"
}
],
"affected_versions": []
},
{
"name": {
"value": "ruby",
"evidence": "/affected/4/package/name"
},
"prerequisites": [],
"fixed_versions": [
{
"value": "2.7.4-r0",
"evidence": "/affected/4/ranges"
}
],
"affected_versions": []
},
{
"name": {
"value": "ruby",
"evidence": "/affected/5/package/name"
},
"prerequisites": [],
"fixed_versions": [
{
"value": "2.7.4-r0",
"evidence": "/affected/5/ranges"
}
],
"affected_versions": []
},
{
"name": {
"value": "ruby",
"evidence": "/affected/6/package/name"
},
"prerequisites": [],
"fixed_versions": [
{
"value": "2.7.4-r0",
"evidence": "/affected/6/ranges"
}
],
"affected_versions": []
},
{
"name": {
"value": "ruby",
"evidence": "/affected/7/package/name"
},
"prerequisites": [],
"fixed_versions": [
{
"value": "2.7.4-r0",
"evidence": "/affected/7/ranges"
}
],
"affected_versions": []
},
{
"name": {
"value": "ruby",
"evidence": "/affected/8/package/name"
},
"prerequisites": [],
"fixed_versions": [
{
"value": "2.7.4-r0",
"evidence": "/affected/8/ranges"
}
],
"affected_versions": []
},
{
"name": {
"value": "ruby",
"evidence": "/affected/9/package/name"
},
"prerequisites": [],
"fixed_versions": [
{
"value": "2.7.4-r0",
"evidence": "/affected/9/ranges"
}
],
"affected_versions": []
},
{
"name": {
"value": "ruby",
"evidence": "/affected/10/package/name"
},
"prerequisites": [],
"fixed_versions": [
{
"value": "2.7.4-r0",
"evidence": "/affected/10/ranges"
}
],
"affected_versions": []
},
{
"name": {
"value": "ruby",
"evidence": "/affected/11/package/name"
},
"prerequisites": [],
"fixed_versions": [
{
"value": "2.7.4-r0",
"evidence": "/affected/11/ranges"
}
],
"affected_versions": []
},
{
"name": {
"value": "ruby",
"evidence": "/affected/12/package/name"
},
"prerequisites": [],
"fixed_versions": [
{
"value": "2.7.4-r0",
"evidence": "/affected/12/ranges"
}
],
"affected_versions": []
},
{
"name": {
"value": "ruby",
"evidence": "/affected/13/package/name"
},
"prerequisites": [],
"fixed_versions": [
{
"value": "2.7.4-r0",
"evidence": "/affected/13/ranges"
}
],
"affected_versions": []
}
],
"severity": "medium",
"structured": {
"id": "ALPINE-CVE-2021-31810",
"aliases": [
"ALPINE-CVE-2021-31810"
],
"metrics": [
{
"type": "CVSS_V3",
"score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:N/A:N"
}
],
"affected": [
{
"ranges": [
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "2.7.0"
},
{
"fixed": "2.6.8-r0"
}
]
}
],
"package": {
"name": "ruby",
"purl": "pkg:apk/alpine/ruby?arch=source",
"ecosystem": "Alpine:v3.11"
},
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/alpine/ALPINE-CVE-2021-31810.json"
},
"ecosystem_specific": {}
},
{
"ranges": [
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "2.7.0"
},
{
"fixed": "2.7.4-r0"
}
]
}
],
"package": {
"name": "ruby",
"purl": "pkg:apk/alpine/ruby?arch=source",
"ecosystem": "Alpine:v3.12"
},
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/alpine/ALPINE-CVE-2021-31810.json"
},
"ecosystem_specific": {}
},
{
"ranges": [
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "2.7.0"
},
{
"fixed": "2.7.4-r0"
}
]
}
],
"package": {
"name": "ruby",
"purl": "pkg:apk/alpine/ruby?arch=source",
"ecosystem": "Alpine:v3.13"
},
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/alpine/ALPINE-CVE-2021-31810.json"
},
"ecosystem_specific": {}
},
{
"ranges": [
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "2.7.0"
},
{
"fixed": "2.7.4-r0"
}
]
}
],
"package": {
"name": "ruby",
"purl": "pkg:apk/alpine/ruby?arch=source",
"ecosystem": "Alpine:v3.14"
},
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/alpine/ALPINE-CVE-2021-31810.json"
},
"ecosystem_specific": {}
},
{
"ranges": [
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "2.7.0"
},
{
"fixed": "2.7.4-r0"
}
]
}
],
"package": {
"name": "ruby",
"purl": "pkg:apk/alpine/ruby?arch=source",
"ecosystem": "Alpine:v3.15"
},
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/alpine/ALPINE-CVE-2021-31810.json"
},
"ecosystem_specific": {}
},
{
"ranges": [
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "2.7.0"
},
{
"fixed": "2.7.4-r0"
}
]
}
],
"package": {
"name": "ruby",
"purl": "pkg:apk/alpine/ruby?arch=source",
"ecosystem": "Alpine:v3.16"
},
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/alpine/ALPINE-CVE-2021-31810.json"
},
"ecosystem_specific": {}
},
{
"ranges": [
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "2.7.0"
},
{
"fixed": "2.7.4-r0"
}
]
}
],
"package": {
"name": "ruby",
"purl": "pkg:apk/alpine/ruby?arch=source",
"ecosystem": "Alpine:v3.17"
},
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/alpine/ALPINE-CVE-2021-31810.json"
},
"ecosystem_specific": {}
},
{
"ranges": [
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "2.7.0"
},
{
"fixed": "2.7.4-r0"
}
]
}
],
"package": {
"name": "ruby",
"purl": "pkg:apk/alpine/ruby?arch=source",
"ecosystem": "Alpine:v3.18"
},
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/alpine/ALPINE-CVE-2021-31810.json"
},
"ecosystem_specific": {}
},
{
"ranges": [
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "2.7.0"
},
{
"fixed": "2.7.4-r0"
}
]
}
],
"package": {
"name": "ruby",
"purl": "pkg:apk/alpine/ruby?arch=source",
"ecosystem": "Alpine:v3.19"
},
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/alpine/ALPINE-CVE-2021-31810.json"
},
"ecosystem_specific": {}
},
{
"ranges": [
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "2.7.0"
},
{
"fixed": "2.7.4-r0"
}
]
}
],
"package": {
"name": "ruby",
"purl": "pkg:apk/alpine/ruby?arch=source",
"ecosystem": "Alpine:v3.20"
},
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/alpine/ALPINE-CVE-2021-31810.json"
},
"ecosystem_specific": {}
},
{
"ranges": [
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "2.7.0"
},
{
"fixed": "2.7.4-r0"
}
]
}
],
"package": {
"name": "ruby",
"purl": "pkg:apk/alpine/ruby?arch=source",
"ecosystem": "Alpine:v3.21"
},
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/alpine/ALPINE-CVE-2021-31810.json"
},
"ecosystem_specific": {}
},
{
"ranges": [
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "2.7.0"
},
{
"fixed": "2.7.4-r0"
}
]
}
],
"package": {
"name": "ruby",
"purl": "pkg:apk/alpine/ruby?arch=source",
"ecosystem": "Alpine:v3.22"
},
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/alpine/ALPINE-CVE-2021-31810.json"
},
"ecosystem_specific": {}
},
{
"ranges": [
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "2.7.0"
},
{
"fixed": "2.7.4-r0"
}
]
}
],
"package": {
"name": "ruby",
"purl": "pkg:apk/alpine/ruby?arch=source",
"ecosystem": "Alpine:v3.23"
},
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/alpine/ALPINE-CVE-2021-31810.json"
},
"ecosystem_specific": {}
},
{
"ranges": [
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "2.7.0"
},
{
"fixed": "2.7.4-r0"
}
]
}
],
"package": {
"name": "ruby",
"purl": "pkg:apk/alpine/ruby?arch=source",
"ecosystem": "Alpine:v3.24"
},
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/alpine/ALPINE-CVE-2021-31810.json"
},
"ecosystem_specific": {}
}
],
"modified": "2026-10-23T17:17:56.186434118Z",
"provider": "osv",
"upstream": [
"CVE-2021-31810"
],
"references": [
"https://security.alpinelinux.org/vuln/CVE-2021-31810"
]
},
"related_cves": [
{
"value": "CVE-2021-31810",
"evidence": "/upstream"
}
],
"security_relevant": true,
"severity_evidence": "/severity/0/score"
},
"source_id": "core-osv",
"document_id": 415436,
"published_at": "2021-07-13T13:15:09.243+00:00"
}