Redmine Security Test Results
Site: www.redmine.org
F
- It looks like your Redmine is vulnerable to hacker attacks with severe impact on your Redmine data.
- It appears that you are running Redmine
2.5.1
which is an old release that has not been updated for over 10 years. - Your Redmine is protected by TLS/SSL but it is also accessible via an unencrypted connection.
- Your server configuration is missing some security relevant headers.
What now?
Get Free Redmine Security Monitoring:
Move to Professionally Hosted Redmine by Planio.
Detailed Analysis
-
Remote Code Execution (RCE)
An RCE vulnerability allows attackers to run arbitrary code on your server. In consequence, this enables them to bypass all Redmine roles and permissions. They may read, change and delete all data stored in the Redmine database. Depending on the server configuration, they may even take over the entire server and do things like delete all backups or send out SPAM messages in your or your company's name. -
Possible RCE escalation bug with Serialized Columns in Active RecordCriticalWhen serialized columns that use YAML (the default) are deserialized, Rails before versions 5.2.8.1 / 6.1.7 used YAML.unsafe_load to convert the YAML data in to Ruby objects. If an attacker can manipulate data in the database (via means like SQL injection), then it may be possible for the attacker to escalate to an RCE.
-
ImageTragick vulnerabilityCriticalBy uploading manipulated images, an attack can take over the server and read and manipulate all data stored within your Redmine, possible even take over the whole machine.
-
Remote Code Execution through Mercurial adapterHighOn Redmine installations with active Mercurial repositories, an attacker can take over the server and read and manipulate all data stored within your Redmine, possibly even take over the entire machine.
-
Information Leak
By exploiting an information leak, an attacker may see pieces of information, which would otherwise be hidden, effectively circumventing Redmine's roles and permissions. -
Arbitrary file read in Git adapterCriticalOn Redmine installations with active Git repositories, an attacker may have been able to extract and read any file readable by the application server.
-
SQL InjectionCriticalA SQL injection vulnerability allows Redmine users to access protected information via a crafted object query.
-
Information Leak in QueryAssociationColumn and QueryAssociationCustomFieldColumnHighA missing visibility check of associated objects in custom queries might allow read access to fields of otherwise unaccessible objects.
-
Improper Handling of Unexpected Data Type in NokogiriHighNokogiri < v1.13.6 does not type-check all inputs into the XML and HTML4 SAX parsers. For CRuby users, this may allow specially crafted untrusted inputs to cause illegal memory access errors (segfault) or reads from unrelated memory. Updates for Nokogiri are available when using Ruby 2.6 or newer.
-
Possible Information Disclosure / Unintended Method Execution in Action PackHighThere is a possible information disclosure / unintended method execution vulnerability in Action Pack (a dependency of Redmine) when using the redirect_to or polymorphic_url helper with untrusted user input.
-
Watcher list visible with only "Add watchers" permissionModerateUsers who are authorized to add watchers to an issue, wiki page or forum topic may see the list of current watchers of the object even if they do not explicitly have the respective "view watchers" permission.
-
Activities index view is leaking usernamesModerateUsing crafted requests to activities listings, Redmine may disclose the names of all active users.
-
Timing attacks in some key comparisonsModerateSome key comparision operations in Redmine were vulnerable to timing attacks which might have allowed a determined attacker to learn the keys for the sys API or the incoming mail web service through careful timing of many requests.
-
Information leak in issue journalsModerateIf an issue was moved between projects, issue journals may have shown the name of previous projects of this issue, even if the current user has no permission to see those projects.
-
Information leak in time entries CSV exportModerateUnder certain circumstances the CSV export might disclose subjects of issues that are not visible to the exporting user.
-
Possible Information Leak / Session Hijack VulnerabilityModerateBy carefully measuring the amount of time it takes to look up a session (timing attack), an attacker may be able to find a valid session id and hijack the session.Fixed in:
4.0.6
More details: CVE-2019-16782 -
Missing permission check when access a repository via SVNModerateRedmine.pm lacks a check for whether the Repository module is enabled in a project's settings, which might allow remote attackers to obtain sensitive differences information or possibly have unspecified other impact.
-
Erroneous rendering of activity viewsModerateRedmine mishandles Time Entry rendering in activity views, which allows remote attackers to obtain sensitive information.
-
Erroneous rendering of wiki linksModerateRedmine mishandles the rendering of wiki links, which allows remote attackers to obtain sensitive information.
-
Atom feed may contain sensitive informationModerateRedmine allows remote attackers to obtain sensitive information by viewing an Atom feed.
-
Issues API may disclose changeset messages that are not visibleModerateBy fetching the issues details via the REST API, an authenticated user may see changeset details, without having the necessary permissions.
-
Time log form reveals private issue subjectModerateThe time log form can be used to see issue subject for issues, which are inaccessible to the user.
-
Leaking of project names on error viewModerateSince the server state was not managed properly in case of an exception, the error page could have contained information from a different user – in this case the list of projects visible to the respective user.
-
Double-render error with ApplicationController#find_optional_projectLowBy crafting URLs and observing responses to those URLs, an attacker might learn the existence of private projects.
-
Improper Restriction of XML External Entity Reference (XXE) in Nokogiri on JRubyLowIn Nokogiri v1.12.4 and earlier, on JRuby only, the SAX parser resolves external entities by default. This security advisory does not apply to CRuby users. When using JRuby, make sure to run at least JRuby 9.2.0 to be able to use the Nokogiri update.
-
Reminder sent to ex-project membersLowReminder mails were sent to assignees, even if they no longer have access to the issue itself. This may reveal sensitive information.
-
Cross-Site Scripting (XSS)
By exploiting an XSS vulnerability an attacker may take over your login sessions and do anything your user account would be allowed to do. If they can lure an adminstrator into their trap, they would have access to all the data stored within Redmine, enabling them to read, change and delete everything. -
XSS in Markdown formatterHighBy submitting crafted markup to a Redmine which is configured to use the legacy Markdown formatter, an attacker can inject malicious JavaScript code into submitted Markdown text. Depending on the Redmine configuration, this may require prior login with a registered user.
-
XSS in Textile formatterHighBy submitting crafted markup to a Redmine which is configured to use Textile formatting, an attacker can inject malicious JavaScript code into submitted Textile text. Depending on the Redmine configuration, this may require prior login with a registered user.
-
XSS in image thumbnailsHighBy submitting specifically crafted image attachments to a Redmine, an attacker may inject malicious JavaScript code into Redmine which may be executed within the Redmine origin. Depending on the Redmine configuration, this may require prior login with a registered user.
-
Persistent XSS in textile formatting due to blockquote citationHighBy submitting crafted markup to a Redmine which is configured to use Textile formatting, an attacker can inject malicious JavaScript code into submitted Textile text. Depending on the Redmine configuration, this may require prior login with a registered user.
-
Persistent XSS in textile formattingHighBy submitting crafted markup to a Redmine which is configured to use Textile formatting, an attacker can inject malicious JavaScript code into submitted Textile text. Depending on the Redmine configuration, this may require prior login with a registered user.
-
Persistent XSS vulnerabilities in Textile inline linksHighThe Textile text formatter did not sufficiently filter link targets for javascript, which allowed plain javascript: link targets through crafted links.
-
Persistent XSS in textile formattingHighSpecially crafted input in Redmine Textile text areas would allow an attacker to insert arbitrary Javascript which in turn was executed when any user opens an affected page, e.g. an issue, wiki page, etc.
-
Incomplete sanitization of multi-value custom fieldsHighAn attacker may use multi-value custom fields to embed malicious code into the issue history, the issue list, or the time log.Fixed in:
3.2.8
,3.3.5
,3.4.3
More details: CVE-2017-15568, CVE-2017-15569, CVE-2017-15570, CVE-2017-15571 -
Cross-site scripting attack using manipulated SVG imagesHighAn attacker may attach malicious SVG images to issues or comments. When they are displayed to regular users, embeded code would be executed without their knowledge.
-
Incomplete sanitization of Textile and Markdown textHighAn attacker may embed malicious code into issue descriptions or comments.Fixed in:
3.2.3
More details: CVE-2016-10515 -
3 XSS security vulnerabilities in jQuery UIModerateThe updated date picker control in jQuery UI 1.13 fixes 3 possible XSS vulnerabilities.
-
Possible XSS Vulnerability in Action View tag helpersModerateThere is a possible XSS vulnerability in Action View tag helpers when passing untrusted input as hash keys.
-
XSS vulnerability due to missing URL validationModerateIncomplete validation of return URLs could be used to trick users into making unintended requests.
-
Incomplete sanitization of user supplied textModerateAn attacker may embed malicious code into issue descriptions or comments.
-
Incomplete sanitization of user supplied textModerateAn attacker may embed malicious code into issue descriptions or comments.
-
jQuery UI: XSS when refreshing a checkboxradio with an HTML-like initial text labelLowThe checkboxradio widget of jQuery UI might erroneously decode HTML entities on refresh. This can lead to potentially executing JavaScript code. This widget is not used by standard Redmine but might be leveraged by plugins.
-
Erroneous Flash renderingLowFlash messages are not sanitized properly.
-
Denial of Service (DOS)
In a Denial of Service attack, your Redmine becomes compromised in a way that it does not function properly anymore. Using a Denial of Service vulnerability, attackers may not necessarily obtain or modify any data on the server, but they may render it unresponsive for users or disrupt certain functionality of your Redmine installation. -
Inefficient Regular Expression Complexity in NokogiriHighNokogiri < v1.13.4 contains an inefficient regular expression that is susceptible to excessive backtracking when attempting to detect encoding in HTML documents. Updates for Nokogiri are available when using Ruby 2.6 or newer.
-
Update packaged libxml2 and libxslt in NokogiriHighUpdates in the packaged dependencies libxml2 (to 2.9.14) and libxsl (to 1.1.35) of Nokogiri addresses various security issues, having multiple and partially unspecified impact including denial of service, memory disclosure, or code execution. Updates for Nokogiri are available when using Ruby 2.6 or newer.
-
Update packaged zlib from 1.2.11 to 1.2.12HighNokogiri v1.13.4 updates the vendored zlib from 1.2.11 to 1.2.12. zlib before 1.2.12 allows memory corruption when deflating (i.e., when compressing) if the input has many distant matches. This advisory only applies to the CRuby implementation of Nokogiri and only if the packaged version of zlib is being used.
-
Possible ReDoS vulnerability in query parameter filtering in Action DispatchModerateCarefully crafted query parameters can cause query parameter filtering to take an unexpected amount of time, possibly resulting in a DoS vulnerability.
-
Update packaged libxml2 in NokogiriModerateUpdates in the packaged dependencies libxml2 (to 2.10.4) of Nokogiri addresses various security issues, having multiple and partially unspecified impact including dereferencing NULL pointers and potentially segfaulting while parsing untrusted inputs, as well as various logic or memory errors, including double frees. Updates for Nokogiri are available when using Ruby 2.7 or newer.
-
Various vulnerabilities in NokogiriModerateVarious vulnerabilities in Nokigiri and its bundled libxml and libz libraries were fixed in Nokogiri 1.13.10. Updates for Nokogiri are available when using Ruby 2.6 or newer.Fixed in:
4.2.10
,5.0.5
More details: CVE-2022-2309, CVE-2022-40304, CVE-2022-40303, CVE-2022-37434, CVE-2022-23476 -
Denial of Service Vulnerability in Rails Action ViewModerateSpecially crafted accept headers can cause the Action View template location code to consume 100% CPU, causing the Redmine server to be unable to process requests.
-
Update packaged Xerces Java from 2.12.0 to 2.12.2 in Nokogiri on JRubyLowNokogiri v1.13.4 updates the vendored xerces:xercesImpl to handle a case where the XercesJ XML parser when handling specially crafted XML document payloads waits in an infinite loop, which may sometimes consume system resources for prolonged duration. This security advisory does not apply to CRuby users. When using JRuby, make sure to run at least JRuby 9.3.0 to be able to use the Nokogiri update.
-
Denial of Service (DoS) in Nokogiri on JRubyLowNokogiri v1.13.4 updates the vendored org.cyberneko.html library which raises a java.lang.OutOfMemoryError exception when parsing ill-formed HTML markup. This security advisory does not apply to CRuby users. When using JRuby, make sure to run at least JRuby 9.3.0 to be able to use the Nokogiri update.
-
File Content Disclosure
By exploiting a File Content Disclosure vulnerability, attackers may be able to download certain files from your server. In severe cases, hackers could get access to any file they wish, including the files storing your Redmine database or server passwords. In consequence, they might be able to take over the entire server by logging in using a regular user's password. -
File Content Disclosure in Rails Action ViewHighSpecially crafted accept headers in combination with calls to certain URLs within Redmine can cause arbitrary files on the target server to be rendered, disclosing the file contents.
-
Privilege Escalation
By exploiting a privilege escalation vulnerability, an attacker may be able to perform actions which they would otherwise not be allowed to perform, effectively circumventing Redmine's roles and permissions. -
Insufficient permission checks when adding attachments to issuesModerateDue to missing permission checks, Redmine might allow unauthorized users to add attachments to issues when could not otherwise edit. Accessing existing attachments is not affected by this.
-
no-permission-check option in mail handler allows issue creation in closed/archived projectsModerateSetting --no-permission-check in the mail receiver allows creating issues and probably other objects in closed and archived projects.
-
Allowed filename extensions of attachments can be circumventedModerateThe global setting to restrict uploaded files to only selected file extensions could be circumvented if the user is allowed to rename file attachments.
-
Server Side Request Forgery (SSRF)
In a Server-Side Request Forgery (SSRF) attack, the attacker can abuse functionality on the server to read or update internal resources. The attacker can supply or modify a URL which the code running on the server will read or submit data to, and by carefully selecting the URLs, the attacker may be able to read server configuration such as AWS metadata, connect to internal services like http enabled databases or perform post requests towards internal services which are not intended to be exposed. -
Ruby OpenID security updateModerateRuby OpenID (aka ruby-openid) is used by Redmine to integrate with OpenID Providers. ruby-openid performed discovery first, and then verification. This allowed an attacker to change the URL used for discovery and trick the server into connecting to the URL. This server in turn could be a private server not publicly accessible.
-
Reset tokens may leak to other websitesModerateSince the password reset tokens were part of the web address, users which follow links from the password reset page to other web sites, leak the token to these websites. It will appear in the log files of those external websites.
-
Open Redirect
By exploiting an open redirect vulnerability an attacker may lure a user on to a phishing site (e.g. a fake login form) using a legitimately looking link. This usually increases the likelihood of users to fall for this kind of attack. With a stolen password, the attacker may take over the user's account and view, change or delete anything the user would be allowed to. -
Redirect after login not verified properlyModerateSince the redirect URL after login is not checked properly an attacker is able to lure users into phishing attacks.
General Server Test
- TLS/SSL enabled
- TLS/SSL encrypts your server's HTTP traffic and prevents attackers from eavesdropping on connections to and from your Redmine server.
- TLS/SSL certificate is valid and trusted
- Using a valid and trusted certificate prevents error messages in your user's browsers and makes sure that the connection has not been intercepted by attackers.
- Not redirecting to TLS/SSL
- Your Redmine is protected by TLS/SSL but it is also accessible via an unencrypted connection. Without TLS/SSL, attackers in the same (wireless) network as your users can easily intercept all traffic and steal your user's passwords. To avoid such attacks, the server should be configured to redirect unprotected access to TLS/SSL.
- HTTP Strict Transport Security header not set
- A properly configured Strict Transport Security header instructs your user's browser to automatically access your Redmine using an encrypted connection. This would further reduce the risk of man-in-the-middle and phishing attacks in shared (wireless) networks.
- X-Frame-Options header not set
- Your Redmine server does not send an
X-Frame-Options
header and therefore exposes your users to Clickjacking attacks. - Failed
- Failed Html
- X-Content-Type-Options header not set
- Content sniffing
may enable cross-site scripting attacks. Since your Redmine server
is not properly sending the
X-Content-Type-Options
header, your users are vulnerable to this attack vector.
How this works
Redmine Security Scanner tries to determine the version of your Redmine installation and it will list all known security vulnerabilities for that version. In addition, it will check your server configuration and make sure everything is set up securely.
Based on the results of these checks, Redmine Security Scanner will assign one of the following grades:
-
A+
- Your Redmine installation is up to date, protected by properly configured TLS/SSL, not accessible via an unencrypted connection and all security relevant server headers are configured properly. Well done!
-
A
- Your Redmine installation is up to date, protected by properly configured TLS/SSL and not accessible via an unencrypted connection. However you are missing some security relevant server headers which we recommend to further harden your server.
-
B
- Your Redmine installation is up to date, protected by SSL but you are using a self-signed or untrusted certificate. This may lead to security warnings in your browser. Attackers may use this for phishing attacks and steal your user's passwords.
-
C
- Your Redmine installation is up to date, but it's accessible via an unencrypted plain text HTTP connection. Attackers in the same (wireless) network as your users can easily intercept all traffic and steal your user's passwords. Servers with enabled TLS/SSL will get the same rating if unencrypted access is possible as well.
-
D
- Your Redmine installation is too old and is vulnerable to at least one security issue of low severity.
-
E
- Your Redmine installation is too old and is vulnerable to at least one security issue of moderate severity.
-
F
- Your Redmine installation is too old and is vulnerable to at least one security issue of critical or high severity.
Disclaimer and terms of use
Redmine Security Scanner is a free community service provided by the Redmine professionals at Planio. You are only allowed to use this service to scan your own Redmine installation.
All checks are performed using black box testing, that means Redmine Security Scanner will only collect information about your Redmine server that is publicly accessible. It will not attempt to login or access any privileged information.
If your Redmine code has been modified or deviates from the standard releases available on the Redmine website, Redmine Security Scanner may occasionally detect a wrong version or display vulnerabilities which are not present or exploitable on your Redmine server. It might also claim that your Redmine server isn't vulnerable to any known vulnerabilities when it actually is. In some cases, Redmine Security Scanner will not be able to detect a Redmine version with 100% certainty. A version range and the associated vulnerabilities will be shown in this case.
Redmine Security Scanner was built and tested with meticulous care and to the best of our knowledge, but Planio GmbH does not give any guarantees as to the correctness of the information displayed. Planio GmbH cannot be held liable for the correctness of the results of Redmine Security Scanner. The security of your Redmine server is your own responsibility. We also provide professional Redmine hosting should you wish to focus on your core business instead of your Redmine server.
If you believe that Redmine Security Scanner shows wrong results for your server, please get in touch and we will be happy to see if we can improve it.
Target | Started | Duration |
---|---|---|
https://www.redmine.org/ | March 13, 2019 09:43 | 2.57s |