Skip to content

Commit 16c891b

Browse files
committed
Taint analysis
1 parent 389ea0f commit 16c891b

File tree

119 files changed

+10357
-2181
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

119 files changed

+10357
-2181
lines changed

.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,7 @@
33
build/
44
idea-community
55
*.db
6+
*.sarif
7+
*.html
8+
*.jfr
9+
*.csv

build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,7 @@ if (!repoUrl.isNullOrEmpty()) {
188188
register<MavenPublication>("jar") {
189189
from(components["java"])
190190
artifact(tasks.named("sourcesJar"))
191-
artifact(tasks.named("dokkaJavadocJar"))
191+
// artifact(tasks.named("dokkaJavadocJar"))
192192

193193
groupId = "org.jacodb"
194194
artifactId = project.name

buildSrc/src/main/kotlin/Dependencies.kt

Lines changed: 27 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,13 @@
22

33
import org.gradle.plugin.use.PluginDependenciesSpec
44

5-
65
object Versions {
76
const val asm = "9.5"
87
const val dokka = "1.7.20"
98
const val gradle_download = "5.3.0"
109
const val gradle_versions = "0.47.0"
11-
const val hikaricp = "5.0.1"
1210
const val guava = "31.1-jre"
11+
const val hikaricp = "5.0.1"
1312
const val javax_activation = "1.1"
1413
const val javax_mail = "1.4.7"
1514
const val javax_servlet_api = "2.5"
@@ -22,6 +21,7 @@ object Versions {
2221
const val junit = "5.9.2"
2322
const val kotlin = "1.7.21"
2423
const val kotlin_logging = "1.8.3"
24+
const val kotlin_logging5 = "5.1.0"
2525
const val kotlinx_benchmark = "0.4.4"
2626
const val kotlinx_cli = "0.3.5"
2727
const val kotlinx_collections_immutable = "0.3.5"
@@ -66,6 +66,13 @@ object Libs {
6666
version = Versions.kotlin_logging
6767
)
6868

69+
// https://github.com/oshai/kotlin-logging
70+
val kotlin_logging5 = dep(
71+
group = "io.github.oshai",
72+
name = "kotlin-logging",
73+
version = Versions.kotlin_logging5
74+
)
75+
6976
// https://github.com/qos-ch/slf4j
7077
val slf4j_simple = dep(
7178
group = "org.slf4j",
@@ -100,7 +107,7 @@ object Libs {
100107
// https://github.com/Kotlin/kotlinx.collections.immutable
101108
val kotlinx_collections_immutable = dep(
102109
group = "org.jetbrains.kotlinx",
103-
name = "kotlinx-collections-immutable-jvm",
110+
name = "kotlinx-collections-immutable",
104111
version = Versions.kotlinx_collections_immutable
105112
)
106113

@@ -134,6 +141,11 @@ object Libs {
134141
)
135142

136143
// https://github.com/Kotlin/kotlinx.serialization
144+
val kotlinx_serialization_core = dep(
145+
group = "org.jetbrains.kotlinx",
146+
name = "kotlinx-serialization-core",
147+
version = Versions.kotlinx_serialization
148+
)
137149
val kotlinx_serialization_json = dep(
138150
group = "org.jetbrains.kotlinx",
139151
name = "kotlinx-serialization-json",
@@ -278,46 +290,48 @@ object Libs {
278290
}
279291

280292
object Plugins {
281-
282-
abstract class ProjectPlugin(val version: String, val id: String)
293+
abstract class Plugin(
294+
val version: String,
295+
val id: String,
296+
)
283297

284298
// https://github.com/Kotlin/dokka
285-
object Dokka: ProjectPlugin(
299+
object Dokka : Plugin(
286300
version = Versions.dokka,
287301
id = "org.jetbrains.dokka"
288302
)
289303

290304
// https://github.com/michel-kraemer/gradle-download-task
291-
object GradleDownload: ProjectPlugin(
305+
object GradleDownload : Plugin(
292306
version = Versions.gradle_download,
293307
id = "de.undercouch.download"
294308
)
295309

296310
// https://github.com/ben-manes/gradle-versions-plugin
297-
object GradleVersions: ProjectPlugin(
311+
object GradleVersions : Plugin(
298312
version = Versions.gradle_versions,
299313
id = "com.github.ben-manes.versions"
300314
)
301315

302316
// https://github.com/Kotlin/kotlinx-benchmark
303-
object KotlinxBenchmark : ProjectPlugin(
317+
object KotlinxBenchmark : Plugin(
304318
version = Versions.kotlinx_benchmark,
305319
id = "org.jetbrains.kotlinx.benchmark"
306320
)
307321

308322
// https://github.com/CadixDev/licenser
309-
object Licenser : ProjectPlugin(
323+
object Licenser : Plugin(
310324
version = Versions.licenser,
311325
id = "org.cadixdev.licenser"
312326
)
313327

314328
// https://github.com/johnrengelman/shadow
315-
object Shadow : ProjectPlugin(
329+
object Shadow : Plugin(
316330
version = Versions.shadow,
317331
id = "com.github.johnrengelman.shadow"
318332
)
319333
}
320334

321-
fun PluginDependenciesSpec.id(plugin: Plugins.ProjectPlugin) {
335+
fun PluginDependenciesSpec.id(plugin: Plugins.Plugin) {
322336
id(plugin.id).version(plugin.version)
323-
}
337+
}

buildSrc/src/main/kotlin/Tests.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import org.gradle.api.tasks.TaskProvider
22
import org.gradle.api.tasks.testing.Test
3+
import org.gradle.api.tasks.testing.logging.TestExceptionFormat
34

45
object Tests {
56
val lifecycleTag = "lifecycle"
@@ -9,6 +10,7 @@ object Tests {
910
fun Test.setup(jacocoTestReport: TaskProvider<*>) {
1011
testLogging {
1112
events("passed", "skipped", "failed")
13+
exceptionFormat = TestExceptionFormat.FULL
1214
}
1315
finalizedBy(jacocoTestReport) // report is always generated after tests run
1416
jvmArgs = listOf("-Xmx2g", "-XX:+HeapDumpOnOutOfMemoryError", "-XX:HeapDumpPath=heapdump.hprof")

jacodb-analysis/.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
webgoat/
2+
owasp/
3+
shopizer/

jacodb-analysis/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Module `jacodb-analysis`
1+
# The `jacodb-analysis` module
22

33
The `jacodb-analysis` module allows launching application dataflow analyses.
44
It contains an API to write custom analyses, and several ready-to-use analyses.

jacodb-analysis/build.gradle.kts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,14 @@ plugins {
66
dependencies {
77
api(project(":jacodb-core"))
88
api(project(":jacodb-api"))
9+
api(project(":jacodb-taint-configuration"))
910

1011
implementation(Libs.kotlin_logging)
12+
implementation(Libs.kotlin_logging5)
1113
implementation(Libs.slf4j_simple)
1214
implementation(Libs.kotlinx_coroutines_core)
1315
implementation(Libs.kotlinx_serialization_json)
16+
implementation(Libs.jdot)
1417

1518
testImplementation(testFixtures(project(":jacodb-core")))
1619
testImplementation(project(":jacodb-api"))

jacodb-analysis/src/main/kotlin/org/jacodb/analysis/AnalysisMain.kt

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,10 @@
1515
*/
1616

1717
@file:JvmName("AnalysisMain")
18+
1819
package org.jacodb.analysis
1920

2021
import kotlinx.serialization.Serializable
21-
import mu.KLogging
2222
import org.jacodb.analysis.engine.IfdsUnitRunnerFactory
2323
import org.jacodb.analysis.engine.MainIfdsUnitManager
2424
import org.jacodb.analysis.engine.SummaryStorage
@@ -28,14 +28,11 @@ import org.jacodb.analysis.graph.newApplicationGraphForAnalysis
2828
import org.jacodb.api.JcMethod
2929
import org.jacodb.api.analysis.JcApplicationGraph
3030

31-
internal val logger = object : KLogging() {}.logger
32-
3331
typealias AnalysesOptions = Map<String, String>
3432

3533
@Serializable
3634
data class AnalysisConfig(val analyses: Map<String, AnalysesOptions>)
3735

38-
3936
/**
4037
* This is the entry point for every analysis.
4138
* Calling this function will find all vulnerabilities reachable from [methods].
@@ -65,10 +62,10 @@ data class AnalysisConfig(val analyses: Map<String, AnalysesOptions>)
6562
*/
6663
fun runAnalysis(
6764
graph: JcApplicationGraph,
68-
unitResolver: UnitResolver<*>,
65+
unitResolver: UnitResolver,
6966
ifdsUnitRunnerFactory: IfdsUnitRunnerFactory,
7067
methods: List<JcMethod>,
71-
timeoutMillis: Long = Long.MAX_VALUE
68+
timeoutMillis: Long = Long.MAX_VALUE,
7269
): List<VulnerabilityInstance> {
7370
return MainIfdsUnitManager(graph, unitResolver, ifdsUnitRunnerFactory, methods, timeoutMillis).analyze()
74-
}
71+
}

0 commit comments

Comments
 (0)