Vulnerabilities > CVE-2018-19789 - Unrestricted Upload of File with Dangerous Type vulnerability in multiple products
Summary
An issue was discovered in Symfony 2.7.x before 2.7.50, 2.8.x before 2.8.49, 3.x before 3.4.20, 4.0.x before 4.0.15, 4.1.x before 4.1.9, and 4.2.x before 4.2.1. When using the scalar type hint `string` in a setter method (e.g. `setName(string $name)`) of a class that's the `data_class` of a form, and when a file upload is submitted to the corresponding field instead of a normal text input, then `UploadedFile::__toString()` is called which will then return and disclose the path of the uploaded file. If combined with a local file inclusion issue in certain circumstances this could escalate it to a Remote Code Execution.
Vulnerable Configurations
Common Weakness Enumeration (CWE)
Common Attack Pattern Enumeration and Classification (CAPEC)
- Accessing Functionality Not Properly Constrained by ACLs In applications, particularly web applications, access to functionality is mitigated by the authorization framework, whose job it is to map ACLs to elements of the application's functionality; particularly URL's for web apps. In the case that the administrator failed to specify an ACL for a particular element, an attacker may be able to access it with impunity. An attacker with the ability to access functionality not properly constrained by ACLs can obtain sensitive information and possibly compromise the entire application. Such an attacker can access resources that must be available only to users at a higher privilege level, can access management sections of the application or can run queries for data that he is otherwise not supposed to.
- Privilege Abuse An adversary is able to exploit features of the target that should be reserved for privileged users or administrators but are exposed to use by lower or non-privileged accounts. Access to sensitive information and functionality must be controlled to ensure that only authorized users are able to access these resources. If access control mechanisms are absent or misconfigured, a user may be able to access resources that are intended only for higher level users. An adversary may be able to exploit this to utilize a less trusted account to gain information and perform activities reserved for more trusted accounts. This attack differs from privilege escalation and other privilege stealing attacks in that the adversary never actually escalates their privileges but instead is able to use a lesser degree of privilege to access resources that should be (but are not) reserved for higher privilege accounts. Likewise, the adversary does not exploit trust or subvert systems - all control functionality is working as configured but the configuration does not adequately protect sensitive resources at an appropriate level.
Nessus
NASL family Fedora Local Security Checks NASL id FEDORA_2018-8D3A9BDFF1.NASL description **Version 3.4.20** (2018-12-06) - security [CVE-2018-19790](https://symfony.com/cve-2018-19790) [Security\Http] detect bad redirect targets using backslashes (@xabbuh) - security [CVE-2018-19789](https://symfony.com/cve-2018-19789) [Form] Filter file uploads out of regular form types (@nicolas-grekas) - bug #29436 [Cache] Fixed Memcached adapter doClear()to call flush() (raitocz) - bug #29441 [Routing] ignore trailing slash for non-GET requests (nicolas-grekas) - bug #29432 [DI] dont inline when lazy edges are found (nicolas-grekas) - bug #29413 [Serializer] fixed DateTimeNormalizer to maintain microseconds when a different timezone required (rvitaliy) - bug #29424 [Routing] fix taking verb into account when redirecting (nicolas-grekas) - bug #29414 [DI] Fix dumping expressions accessing single-use private services (chalasr) - bug #29375 [Validator] Allow `ConstraintViolation::__toString()` to expose codes that are not null or emtpy strings (phansys) - bug #29376 [EventDispatcher] Fix eventListener wrapper loop in TraceableEventDispatcher (jderusse) - bug #29343 [Form] Handle all case variants of last seen 2020-06-05 modified 2019-01-03 plugin id 120600 published 2019-01-03 reporter This script is Copyright (C) 2019-2020 and is owned by Tenable, Inc. or an Affiliate thereof. source https://www.tenable.com/plugins/nessus/120600 title Fedora 29 : php-symfony3 (2018-8d3a9bdff1) code #%NASL_MIN_LEVEL 80502 # # (C) Tenable Network Security, Inc. # # The descriptive text and package checks in this plugin were # extracted from Fedora Security Advisory FEDORA-2018-8d3a9bdff1. # include("compat.inc"); if (description) { script_id(120600); script_version("1.5"); script_set_attribute(attribute:"plugin_modification_date", value:"2020/06/04"); script_cve_id("CVE-2018-19789", "CVE-2018-19790"); script_xref(name:"FEDORA", value:"2018-8d3a9bdff1"); script_name(english:"Fedora 29 : php-symfony3 (2018-8d3a9bdff1)"); script_summary(english:"Checks rpm output for the updated package."); script_set_attribute( attribute:"synopsis", value:"The remote Fedora host is missing a security update." ); script_set_attribute( attribute:"description", value: "**Version 3.4.20** (2018-12-06) - security [CVE-2018-19790](https://symfony.com/cve-2018-19790) [Security\Http] detect bad redirect targets using backslashes (@xabbuh) - security [CVE-2018-19789](https://symfony.com/cve-2018-19789) [Form] Filter file uploads out of regular form types (@nicolas-grekas) - bug #29436 [Cache] Fixed Memcached adapter doClear()to call flush() (raitocz) - bug #29441 [Routing] ignore trailing slash for non-GET requests (nicolas-grekas) - bug #29432 [DI] dont inline when lazy edges are found (nicolas-grekas) - bug #29413 [Serializer] fixed DateTimeNormalizer to maintain microseconds when a different timezone required (rvitaliy) - bug #29424 [Routing] fix taking verb into account when redirecting (nicolas-grekas) - bug #29414 [DI] Fix dumping expressions accessing single-use private services (chalasr) - bug #29375 [Validator] Allow `ConstraintViolation::__toString()` to expose codes that are not null or emtpy strings (phansys) - bug #29376 [EventDispatcher] Fix eventListener wrapper loop in TraceableEventDispatcher (jderusse) - bug #29343 [Form] Handle all case variants of 'nan' when parsing a number (mwhudson, xabbuh) - bug #29355 [PropertyAccess] calculate cache keys for property setters depending on the value (xabbuh) - bug #29369 [DI] fix combinatorial explosion when analyzing the service graph (nicolas-grekas) - bug #29349 [Debug] workaround opcache bug mutating '$this' !?! (nicolas-grekas) Note that Tenable Network Security has extracted the preceding description block directly from the Fedora update system website. Tenable has attempted to automatically clean and format it as much as possible without introducing additional issues." ); script_set_attribute( attribute:"see_also", value:"https://bodhi.fedoraproject.org/updates/FEDORA-2018-8d3a9bdff1" ); script_set_attribute( attribute:"see_also", value:"https://symfony.com/cve-2018-19789" ); script_set_attribute( attribute:"see_also", value:"https://symfony.com/cve-2018-19790" ); script_set_attribute( attribute:"solution", value:"Update the affected php-symfony3 package." ); script_set_cvss_base_vector("CVSS2#AV:N/AC:M/Au:N/C:P/I:P/A:N"); script_set_cvss_temporal_vector("CVSS2#E:U/RL:OF/RC:C"); script_set_cvss3_base_vector("CVSS:3.0/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N"); script_set_cvss3_temporal_vector("CVSS:3.0/E:U/RL:O/RC:C"); script_set_attribute(attribute:"exploitability_ease", value:"No known exploits are available"); script_set_attribute(attribute:"plugin_type", value:"local"); script_set_attribute(attribute:"cpe", value:"p-cpe:/a:fedoraproject:fedora:php-symfony3"); script_set_attribute(attribute:"cpe", value:"cpe:/o:fedoraproject:fedora:29"); script_set_attribute(attribute:"vuln_publication_date", value:"2018/12/18"); script_set_attribute(attribute:"patch_publication_date", value:"2018/12/17"); script_set_attribute(attribute:"plugin_publication_date", value:"2019/01/03"); script_set_attribute(attribute:"generated_plugin", value:"current"); script_end_attributes(); script_category(ACT_GATHER_INFO); script_copyright(english:"This script is Copyright (C) 2019-2020 and is owned by Tenable, Inc. or an Affiliate thereof."); script_family(english:"Fedora Local Security Checks"); script_dependencies("ssh_get_info.nasl"); script_require_keys("Host/local_checks_enabled", "Host/RedHat/release", "Host/RedHat/rpm-list"); exit(0); } include("audit.inc"); include("global_settings.inc"); include("rpm.inc"); if (!get_kb_item("Host/local_checks_enabled")) audit(AUDIT_LOCAL_CHECKS_NOT_ENABLED); release = get_kb_item("Host/RedHat/release"); if (isnull(release) || "Fedora" >!< release) audit(AUDIT_OS_NOT, "Fedora"); os_ver = pregmatch(pattern: "Fedora.*release ([0-9]+)", string:release); if (isnull(os_ver)) audit(AUDIT_UNKNOWN_APP_VER, "Fedora"); os_ver = os_ver[1]; if (! preg(pattern:"^29([^0-9]|$)", string:os_ver)) audit(AUDIT_OS_NOT, "Fedora 29", "Fedora " + os_ver); if (!get_kb_item("Host/RedHat/rpm-list")) audit(AUDIT_PACKAGE_LIST_MISSING); cpu = get_kb_item("Host/cpu"); if (isnull(cpu)) audit(AUDIT_UNKNOWN_ARCH); if ("x86_64" >!< cpu && cpu !~ "^i[3-6]86$") audit(AUDIT_LOCAL_CHECKS_NOT_IMPLEMENTED, "Fedora", cpu); flag = 0; if (rpm_check(release:"FC29", reference:"php-symfony3-3.4.20-1.fc29")) flag++; if (flag) { security_report_v4( port : 0, severity : SECURITY_WARNING, extra : rpm_report_get() ); exit(0); } else { tested = pkg_tests_get(); if (tested) audit(AUDIT_PACKAGE_NOT_AFFECTED, tested); else audit(AUDIT_PACKAGE_NOT_INSTALLED, "php-symfony3"); }
NASL family Fedora Local Security Checks NASL id FEDORA_2018-84A1F77D89.NASL description **Version 4.1.9** (2018-12-06) - security [CVE-2018-19790](https://symfony.com/cve-2018-19790) [Security\Http] detect bad redirect targets using backslashes (@xabbuh) - security [CVE-2018-19789](https://symfony.com/cve-2018-19789) [Form] Filter file uploads out of regular form types (@nicolas-grekas) - bug #29436 [Cache] Fixed Memcached adapter doClear()to call flush() (raitocz) - bug #29441 [Routing] ignore trailing slash for non-GET requests (nicolas-grekas) - bug #29444 [Workflow] Fixed BC break for Workflow metadata (lyrixx) - bug #29432 [DI] dont inline when lazy edges are found (nicolas-grekas) - bug #29413 [Serializer] fixed DateTimeNormalizer to maintain microseconds when a different timezone required (rvitaliy) - bug #29424 [Routing] fix taking verb into account when redirecting (nicolas-grekas) - bug #29414 [DI] Fix dumping expressions accessing single-use private services (chalasr) - bug #29375 [Validator] Allow `ConstraintViolation::__toString()` to expose codes that are not null or emtpy strings (phansys) - bug #29376 [EventDispatcher] Fix eventListener wrapper loop in TraceableEventDispatcher (jderusse) - bug #29386 undeprecate the single-colon notation for controllers (fbourigault) - bug #29393 [DI] fix edge case in InlineServiceDefinitionsPass (nicolas-grekas) - bug #29380 [Routing] fix greediness of trailing slash (nicolas-grekas) - bug #29343 [Form] Handle all case variants of last seen 2020-06-05 modified 2019-01-03 plugin id 120580 published 2019-01-03 reporter This script is Copyright (C) 2019-2020 and is owned by Tenable, Inc. or an Affiliate thereof. source https://www.tenable.com/plugins/nessus/120580 title Fedora 29 : php-symfony4 (2018-84a1f77d89) NASL family Debian Local Security Checks NASL id DEBIAN_DLA-1707.NASL description Several security vulnerabilities have been discovered in symfony, a PHP web application framework. Numerous symfony components are affected: Security, bundle readers, session handling, SecurityBundle, HttpFoundation, Form, and Security\Http. The corresponding upstream advisories contain further details : [CVE-2017-16652] https://symfony.com/blog/cve-2017-16652-open-redirect-vulnerability-on -security-handlers [CVE-2017-16654] https://symfony.com/blog/cve-2017-16654-intl-bundle-readers-breaking-o ut-of-paths [CVE-2018-11385] https://symfony.com/blog/cve-2018-11385-session-fixation-issue-for-gua rd-authentication [CVE-2018-11408] https://symfony.com/blog/cve-2018-11408-open-redirect-vulnerability-on -security-handlers [CVE-2018-14773] https://symfony.com/blog/cve-2018-14773-remove-support-for-legacy-and- risky-http-headers [CVE-2018-19789] https://symfony.com/blog/cve-2018-19789-disclosure-of-uploaded-files-f ull-path [CVE-2018-19790] https://symfony.com/blog/cve-2018-19790-open-redirect-vulnerability-wh en-using-security-http For Debian 8 last seen 2020-06-01 modified 2020-06-02 plugin id 122721 published 2019-03-11 reporter This script is Copyright (C) 2019-2020 and is owned by Tenable, Inc. or an Affiliate thereof. source https://www.tenable.com/plugins/nessus/122721 title Debian DLA-1707-1 : symfony security update NASL family Debian Local Security Checks NASL id DEBIAN_DSA-4441.NASL description Multiple vulnerabilities were discovered in the Symfony PHP framework which could lead to cache bypass, authentication bypass, information disclosure, open redirect, cross-site request forgery, deletion of arbitrary files, or arbitrary code execution. last seen 2020-06-01 modified 2020-06-02 plugin id 124779 published 2019-05-13 reporter This script is Copyright (C) 2019-2020 and is owned by Tenable, Inc. or an Affiliate thereof. source https://www.tenable.com/plugins/nessus/124779 title Debian DSA-4441-1 : symfony - security update NASL family Fedora Local Security Checks NASL id FEDORA_2018-8C06B6DEFD.NASL description **Version 2.8.49** (2018-12-06) - security [CVE-2018-19790](https://symfony.com/cve-2018-19790) [Security\Http] detect bad redirect targets using backslashes (@xabbuh) - security [CVE-2018-19789](https://symfony.com/cve-2018-19789) [Form] Filter file uploads out of regular form types (@nicolas-grekas) Note that Tenable Network Security has extracted the preceding description block directly from the Fedora update system website. Tenable has attempted to automatically clean and format it as much as possible without introducing additional issues. last seen 2020-06-05 modified 2019-01-03 plugin id 120596 published 2019-01-03 reporter This script is Copyright (C) 2019-2020 and is owned by Tenable, Inc. or an Affiliate thereof. source https://www.tenable.com/plugins/nessus/120596 title Fedora 28 : php-symfony (2018-8c06b6defd) NASL family Fedora Local Security Checks NASL id FEDORA_2018-6EDF04D9D6.NASL description **Version 4.0.15** (2018-12-06) - security [CVE-2018-19790](https://symfony.com/cve-2018-19790) [Security\Http] detect bad redirect targets using backslashes (@xabbuh) - security [CVE-2018-19789](https://symfony.com/cve-2018-19789) [Form] Filter file uploads out of regular form types (@nicolas-grekas) Note that Tenable Network Security has extracted the preceding description block directly from the Fedora update system website. Tenable has attempted to automatically clean and format it as much as possible without introducing additional issues. last seen 2020-06-05 modified 2019-01-03 plugin id 120515 published 2019-01-03 reporter This script is Copyright (C) 2019-2020 and is owned by Tenable, Inc. or an Affiliate thereof. source https://www.tenable.com/plugins/nessus/120515 title Fedora 28 : php-symfony4 (2018-6edf04d9d6) NASL family Fedora Local Security Checks NASL id FEDORA_2018-66547A8C14.NASL description **Version 3.4.20** (2018-12-06) - security [CVE-2018-19790](https://symfony.com/cve-2018-19790) [Security\Http] detect bad redirect targets using backslashes (@xabbuh) - security [CVE-2018-19789](https://symfony.com/cve-2018-19789) [Form] Filter file uploads out of regular form types (@nicolas-grekas) - bug #29436 [Cache] Fixed Memcached adapter doClear()to call flush() (raitocz) - bug #29441 [Routing] ignore trailing slash for non-GET requests (nicolas-grekas) - bug #29432 [DI] dont inline when lazy edges are found (nicolas-grekas) - bug #29413 [Serializer] fixed DateTimeNormalizer to maintain microseconds when a different timezone required (rvitaliy) - bug #29424 [Routing] fix taking verb into account when redirecting (nicolas-grekas) - bug #29414 [DI] Fix dumping expressions accessing single-use private services (chalasr) - bug #29375 [Validator] Allow `ConstraintViolation::__toString()` to expose codes that are not null or emtpy strings (phansys) - bug #29376 [EventDispatcher] Fix eventListener wrapper loop in TraceableEventDispatcher (jderusse) - bug #29343 [Form] Handle all case variants of last seen 2020-06-05 modified 2019-01-03 plugin id 120481 published 2019-01-03 reporter This script is Copyright (C) 2019-2020 and is owned by Tenable, Inc. or an Affiliate thereof. source https://www.tenable.com/plugins/nessus/120481 title Fedora 28 : php-symfony3 (2018-66547a8c14) NASL family Fedora Local Security Checks NASL id FEDORA_2018-B38A4DD0C7.NASL description **Version 2.8.49** (2018-12-06) - security [CVE-2018-19790](https://symfony.com/cve-2018-19790) [Security\Http] detect bad redirect targets using backslashes (@xabbuh) - security [CVE-2018-19789](https://symfony.com/cve-2018-19789) [Form] Filter file uploads out of regular form types (@nicolas-grekas) Note that Tenable Network Security has extracted the preceding description block directly from the Fedora update system website. Tenable has attempted to automatically clean and format it as much as possible without introducing additional issues. last seen 2020-06-05 modified 2019-01-03 plugin id 120720 published 2019-01-03 reporter This script is Copyright (C) 2019-2020 and is owned by Tenable, Inc. or an Affiliate thereof. source https://www.tenable.com/plugins/nessus/120720 title Fedora 29 : php-symfony (2018-b38a4dd0c7)
References
- https://symfony.com/blog/cve-2018-19789-disclosure-of-uploaded-files-full-path
- http://www.securityfocus.com/bid/106249
- https://lists.debian.org/debian-lts-announce/2019/03/msg00009.html
- https://www.debian.org/security/2019/dsa-4441
- https://seclists.org/bugtraq/2019/May/21
- https://lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/OA4WVFN5FYPIXAPLWZI6N425JHHDSWAZ/
- https://lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/4TD3E7FZIXLVFG3SMFJPDEKPZ26TJOW7/
- https://lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/JZMRJ7VTHCY5AZK24G4QGX36RLUDTDKE/