Cantara/Whydah-SSOLoginWebApp

Vulnerabilities

3 via 8 paths

Dependencies

143

Source

GitHub

Commit

190fd68b

Find, fix and prevent vulnerabilities in your code.

Issue type
  • 3
  • 2
Severity
  • 4
  • 1
Status
  • 5
  • 0
  • 0

medium severity

Improper Validation of Syntactic Correctness of Input

  • Vulnerable module: org.eclipse.jetty:jetty-http
  • Introduced through: org.eclipse.jetty:jetty-server@11.0.25 and org.eclipse.jetty:jetty-servlet@11.0.25

Detailed paths

  • Introduced through: Cantara/Whydah-SSOLoginWebApp@Cantara/Whydah-SSOLoginWebApp#190fd68b08d40d69b2a4e3d26616b88595964e0d org.eclipse.jetty:jetty-server@11.0.25 org.eclipse.jetty:jetty-http@11.0.25
    Remediation: Upgrade to org.eclipse.jetty:jetty-server@12.0.12.
  • Introduced through: Cantara/Whydah-SSOLoginWebApp@Cantara/Whydah-SSOLoginWebApp#190fd68b08d40d69b2a4e3d26616b88595964e0d org.eclipse.jetty:jetty-servlet@11.0.25 org.eclipse.jetty:jetty-security@11.0.25 org.eclipse.jetty:jetty-server@11.0.25 org.eclipse.jetty:jetty-http@11.0.25

Overview

org.eclipse.jetty:jetty-http is an is a http module for jetty server.

Affected versions of this package are vulnerable to Improper Validation of Syntactic Correctness of Input via the HttpURI class due to insufficient validation on the authority segment of a URI. An attacker can manipulate the URI parsing to redirect requests or initiate server-side requests to unintended destinations by supplying malformed URIs that bypass validation checks.

Notes:

  1. This is only exploitable if the application uses decoded user data as encoded URIs in conjunction with the HttpURI class used directly;

  2. The Jetty usage of the HttpURI class is not vulnerable.

Workaround

This vulnerability can be mitigated by not passing decoded user data as encoded URIs to any URI class/method, including HttpURI.

PoC

http://browser.check &@vulndetector.com/
http://browser.check #@vulndetector.com/
http://browser.check?@vulndetector.com/
http://browser.check#@vulndetector.com/
http://vulndetector.com\\/

Remediation

Upgrade org.eclipse.jetty:jetty-http to version 9.4.57.v20241219, 12.0.12 or higher.

References

medium severity

Improper Validation of Syntactic Correctness of Input

  • Vulnerable module: org.eclipse.jetty:jetty-server
  • Introduced through: org.eclipse.jetty:jetty-server@11.0.25 and org.eclipse.jetty:jetty-servlet@11.0.25

Detailed paths

  • Introduced through: Cantara/Whydah-SSOLoginWebApp@Cantara/Whydah-SSOLoginWebApp#190fd68b08d40d69b2a4e3d26616b88595964e0d org.eclipse.jetty:jetty-server@11.0.25
    Remediation: Upgrade to org.eclipse.jetty:jetty-server@12.0.12.
  • Introduced through: Cantara/Whydah-SSOLoginWebApp@Cantara/Whydah-SSOLoginWebApp#190fd68b08d40d69b2a4e3d26616b88595964e0d org.eclipse.jetty:jetty-servlet@11.0.25 org.eclipse.jetty:jetty-security@11.0.25 org.eclipse.jetty:jetty-server@11.0.25

Overview

org.eclipse.jetty:jetty-server is a lightweight highly scalable java based web server and servlet engine.

Affected versions of this package are vulnerable to Improper Validation of Syntactic Correctness of Input via the HttpURI class due to insufficient validation on the authority segment of a URI. An attacker can manipulate the URI parsing to redirect requests or initiate server-side requests to unintended destinations by supplying malformed URIs that bypass validation checks.

Notes:

  1. This is only exploitable if the application uses decoded user data as encoded URIs in conjunction with the HttpURI class used directly;

  2. The Jetty usage of the HttpURI class is not vulnerable.

Workaround

This vulnerability can be mitigated by not passing decoded user data as encoded URIs to any URI class/method, including HttpURI.

PoC

http://browser.check &@vulndetector.com/
http://browser.check #@vulndetector.com/
http://browser.check?@vulndetector.com/
http://browser.check#@vulndetector.com/
http://vulndetector.com\\/

Remediation

Upgrade org.eclipse.jetty:jetty-server to version 9.4.57.v20241219, 12.0.12 or higher.

References

medium severity

Dual license: EPL-1.0, LGPL-2.1

  • Module: ch.qos.logback:logback-classic
  • Introduced through: ch.qos.logback:logback-classic@1.5.18

Detailed paths

  • Introduced through: Cantara/Whydah-SSOLoginWebApp@Cantara/Whydah-SSOLoginWebApp#190fd68b08d40d69b2a4e3d26616b88595964e0d ch.qos.logback:logback-classic@1.5.18

Dual license: EPL-1.0, LGPL-2.1

medium severity

Dual license: EPL-1.0, LGPL-2.1

  • Module: ch.qos.logback:logback-core
  • Introduced through: ch.qos.logback:logback-classic@1.5.18

Detailed paths

  • Introduced through: Cantara/Whydah-SSOLoginWebApp@Cantara/Whydah-SSOLoginWebApp#190fd68b08d40d69b2a4e3d26616b88595964e0d ch.qos.logback:logback-classic@1.5.18 ch.qos.logback:logback-core@1.5.18

Dual license: EPL-1.0, LGPL-2.1

low severity

Information Exposure

  • Vulnerable module: org.jetbrains.kotlin:kotlin-stdlib
  • Introduced through: com.slack.api:slack-api-client@1.45.3

Detailed paths

  • Introduced through: Cantara/Whydah-SSOLoginWebApp@Cantara/Whydah-SSOLoginWebApp#190fd68b08d40d69b2a4e3d26616b88595964e0d com.slack.api:slack-api-client@1.45.3 com.squareup.okhttp3:okhttp@4.12.0 org.jetbrains.kotlin:kotlin-stdlib-jdk8@1.8.21 org.jetbrains.kotlin:kotlin-stdlib@1.8.21
  • Introduced through: Cantara/Whydah-SSOLoginWebApp@Cantara/Whydah-SSOLoginWebApp#190fd68b08d40d69b2a4e3d26616b88595964e0d com.slack.api:slack-api-client@1.45.3 com.squareup.okhttp3:okhttp@4.12.0 org.jetbrains.kotlin:kotlin-stdlib-jdk8@1.8.21 org.jetbrains.kotlin:kotlin-stdlib-jdk7@1.8.21 org.jetbrains.kotlin:kotlin-stdlib@1.8.21
  • Introduced through: Cantara/Whydah-SSOLoginWebApp@Cantara/Whydah-SSOLoginWebApp#190fd68b08d40d69b2a4e3d26616b88595964e0d com.slack.api:slack-api-client@1.45.3 com.squareup.okhttp3:okhttp@4.12.0 com.squareup.okio:okio@3.6.0 com.squareup.okio:okio-jvm@3.6.0 org.jetbrains.kotlin:kotlin-stdlib-jdk8@1.8.21 org.jetbrains.kotlin:kotlin-stdlib@1.8.21
  • Introduced through: Cantara/Whydah-SSOLoginWebApp@Cantara/Whydah-SSOLoginWebApp#190fd68b08d40d69b2a4e3d26616b88595964e0d com.slack.api:slack-api-client@1.45.3 com.squareup.okhttp3:okhttp@4.12.0 com.squareup.okio:okio@3.6.0 com.squareup.okio:okio-jvm@3.6.0 org.jetbrains.kotlin:kotlin-stdlib-jdk8@1.8.21 org.jetbrains.kotlin:kotlin-stdlib-jdk7@1.8.21 org.jetbrains.kotlin:kotlin-stdlib@1.8.21

…and 1 more

Overview

org.jetbrains.kotlin:kotlin-stdlib is a Kotlin Standard Library for JVM.

Affected versions of this package are vulnerable to Information Exposure. A Kotlin application using createTempDir or createTempFile and placing sensitive information within either of these locations would be leaking this information in a read-only way to other users also on this system.

Note: As of version 1.4.21, the vulnerable functions have been marked as deprecated. Due to still being usable, this advisory is kept as "unfixed".

PoC by JLLeitschuh

package org.jlleitschuh.sandbox

import org.junit.jupiter.api.Test
import java.io.BufferedReader
import java.io.File
import java.io.IOException
import java.io.InputStreamReader
import java.nio.file.Files

class KotlinTempDirectoryPermissionCheck {
    @Test
    fun `kotlin check default directory permissions`() {
        val dir = createTempDir()
        runLS(dir.parentFile, dir) // Prints drwxr-xr-x
    }

    @Test
    fun `Files check default directory permissions`() {
        val dir = Files.createTempDirectory("random-directory")
        runLS(dir.toFile().parentFile, dir.toFile()) // Prints drwx------
    }

    @Test
    fun `kotlin check default file permissions`() {
        val file = createTempFile()
        runLS(file.parentFile, file) // Prints -rw-r--r--
    }

    @Test
    fun `Files check default file permissions`() {
        val file = Files.createTempFile("random-file", ".txt")
        runLS(file.toFile().parentFile, file.toFile()) // Prints -rw-------
    }

    private fun runLS(file: File, lookingFor: File) {
        val processBuilder = ProcessBuilder()
        processBuilder.command("ls", "-l", file.absolutePath)
        try {
            val process = processBuilder.start()
            val output = StringBuilder()
            val reader = BufferedReader(
                InputStreamReader(process.inputStream)
            )
            reader.lines().forEach { line ->
                if (line.contains("total")) {
                    output.append(line).append('\n')
                }
                if (line.contains(lookingFor.name)) {
                    output.append(line).append('\n')
                }
            }
            val exitVal = process.waitFor()
            if (exitVal == 0) {
                println("Success!")
                println(output)
            } else {
                //abnormal...
            }
        } catch (e: IOException) {
            e.printStackTrace()
        } catch (e: InterruptedException) {
            e.printStackTrace()
        }
    }
}

Remediation

Upgrade org.jetbrains.kotlin:kotlin-stdlib to version 2.1.0 or higher.

References