Skip to content

Add After callsites support for void methods#8116

Merged
manuel-alvarez-alvarez merged 1 commit intomasterfrom
malvarez/iast-fix-after-call-site-with-void
Dec 20, 2024
Merged

Add After callsites support for void methods#8116
manuel-alvarez-alvarez merged 1 commit intomasterfrom
malvarez/iast-fix-after-call-site-with-void

Conversation

@manuel-alvarez-alvarez
Copy link
Copy Markdown
Member

@manuel-alvarez-alvarez manuel-alvarez-alvarez commented Dec 19, 2024

What Does This Do

Adds support for After callsites in void methods, validations have been updated so:

  • Void methods should have void callsites not annotated with @Return
  • Non void methods should have a return parameter compatible with the call site annotated with @Return

As an example:

  @CallSite(spi = CallSites)
  class AfterAdviceWithVoidReturn {
    @CallSite.After("void java.lang.StringBuilder.setLength(int)")
    static void after(@CallSite.This StringBuilder self, @CallSite.Argument(0) int length) {
    }
  }

Motivation

Additional Notes

Contributor Checklist

Jira ticket: APPSEC-55359

@manuel-alvarez-alvarez manuel-alvarez-alvarez added the comp: asm iast Application Security Management (IAST) label Dec 19, 2024
@manuel-alvarez-alvarez manuel-alvarez-alvarez marked this pull request as ready for review December 19, 2024 10:45
@manuel-alvarez-alvarez manuel-alvarez-alvarez requested a review from a team as a code owner December 19, 2024 10:45
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Dec 19, 2024

Hi! 👋 Thanks for your pull request! 🎉

To help us review it, please make sure to:

  • Add at least one type, and one component or instrumentation label to the pull request

If you need help, please check our contributing guidelines.

@pr-commenter
Copy link
Copy Markdown

pr-commenter Bot commented Dec 19, 2024

Benchmarks

Startup

Load

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
end_time 2024-12-20T11:09:07 2024-12-20T11:16:03
git_branch master malvarez/iast-fix-after-call-site-with-void
git_commit_date 1734691666 1734692459
git_commit_sha 8d5f5ac 981eee2
release_version 1.45.0-SNAPSHOT~8d5f5acd23 1.45.0-SNAPSHOT~981eee20be
start_time 2024-12-20T11:08:54 2024-12-20T11:15:50
See matching parameters
Baseline Candidate
application insecure-bank insecure-bank
ci_job_date 1734693715 1734693715
ci_job_id 746869260 746869260
ci_pipeline_id 51646218 51646218
cpu_model Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz
variant iast iast

Summary

Found 0 performance improvements and 0 performance regressions! Performance is the same for 11 metrics, 17 unstable metrics.

Request duration reports for insecure-bank
gantt
    title insecure-bank - request duration [CI 0.99] : candidate=1.45.0-SNAPSHOT~981eee20be, baseline=1.45.0-SNAPSHOT~8d5f5acd23
    dateFormat X
    axisFormat %s
section baseline
no_agent (373.697 µs) : 354, 393
.   : milestone, 374,
iast (484.817 µs) : 463, 506
.   : milestone, 485,
iast_FULL (647.166 µs) : 626, 669
.   : milestone, 647,
iast_GLOBAL (519.855 µs) : 498, 542
.   : milestone, 520,
iast_HARDCODED_SECRET_DISABLED (486.955 µs) : 465, 508
.   : milestone, 487,
iast_INACTIVE (448.623 µs) : 428, 470
.   : milestone, 449,
iast_TELEMETRY_OFF (486.014 µs) : 464, 508
.   : milestone, 486,
tracing (447.069 µs) : 426, 468
.   : milestone, 447,
section candidate
no_agent (376.142 µs) : 354, 398
.   : milestone, 376,
iast (491.413 µs) : 469, 513
.   : milestone, 491,
iast_FULL (648.386 µs) : 627, 670
.   : milestone, 648,
iast_GLOBAL (512.271 µs) : 491, 534
.   : milestone, 512,
iast_HARDCODED_SECRET_DISABLED (492.875 µs) : 471, 514
.   : milestone, 493,
iast_INACTIVE (449.532 µs) : 429, 470
.   : milestone, 450,
iast_TELEMETRY_OFF (480.067 µs) : 458, 502
.   : milestone, 480,
tracing (442.706 µs) : 422, 463
.   : milestone, 443,
Loading
  • baseline results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 373.697 µs [354.119 µs, 393.276 µs] -
iast 484.817 µs [463.243 µs, 506.391 µs] 111.12 µs (29.7%)
iast_FULL 647.166 µs [625.701 µs, 668.631 µs] 273.469 µs (73.2%)
iast_GLOBAL 519.855 µs [498.055 µs, 541.654 µs] 146.157 µs (39.1%)
iast_HARDCODED_SECRET_DISABLED 486.955 µs [465.485 µs, 508.424 µs] 113.257 µs (30.3%)
iast_INACTIVE 448.623 µs [427.666 µs, 469.58 µs] 74.925 µs (20.0%)
iast_TELEMETRY_OFF 486.014 µs [463.993 µs, 508.035 µs] 112.317 µs (30.1%)
tracing 447.069 µs [425.847 µs, 468.291 µs] 73.372 µs (19.6%)
  • candidate results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 376.142 µs [354.125 µs, 398.16 µs] -
iast 491.413 µs [469.333 µs, 513.494 µs] 115.271 µs (30.6%)
iast_FULL 648.386 µs [626.865 µs, 669.908 µs] 272.244 µs (72.4%)
iast_GLOBAL 512.271 µs [490.745 µs, 533.797 µs] 136.129 µs (36.2%)
iast_HARDCODED_SECRET_DISABLED 492.875 µs [471.448 µs, 514.302 µs] 116.733 µs (31.0%)
iast_INACTIVE 449.532 µs [428.585 µs, 470.479 µs] 73.39 µs (19.5%)
iast_TELEMETRY_OFF 480.067 µs [458.007 µs, 502.127 µs] 103.925 µs (27.6%)
tracing 442.706 µs [422.114 µs, 463.297 µs] 66.563 µs (17.7%)
Request duration reports for petclinic
gantt
    title petclinic - request duration [CI 0.99] : candidate=1.45.0-SNAPSHOT~981eee20be, baseline=1.45.0-SNAPSHOT~8d5f5acd23
    dateFormat X
    axisFormat %s
section baseline
no_agent (1.337 ms) : 1318, 1356
.   : milestone, 1337,
appsec (1.745 ms) : 1719, 1770
.   : milestone, 1745,
appsec_no_iast (1.755 ms) : 1731, 1780
.   : milestone, 1755,
iast (1.501 ms) : 1478, 1524
.   : milestone, 1501,
profiling (1.494 ms) : 1470, 1518
.   : milestone, 1494,
tracing (1.47 ms) : 1444, 1495
.   : milestone, 1470,
section candidate
no_agent (1.356 ms) : 1335, 1376
.   : milestone, 1356,
appsec (1.739 ms) : 1715, 1763
.   : milestone, 1739,
appsec_no_iast (1.76 ms) : 1736, 1784
.   : milestone, 1760,
iast (1.504 ms) : 1481, 1527
.   : milestone, 1504,
profiling (1.497 ms) : 1473, 1520
.   : milestone, 1497,
tracing (1.483 ms) : 1457, 1508
.   : milestone, 1483,
Loading
  • baseline results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 1.337 ms [1.318 ms, 1.356 ms] -
appsec 1.745 ms [1.719 ms, 1.77 ms] 407.492 µs (30.5%)
appsec_no_iast 1.755 ms [1.731 ms, 1.78 ms] 418.255 µs (31.3%)
iast 1.501 ms [1.478 ms, 1.524 ms] 163.903 µs (12.3%)
profiling 1.494 ms [1.47 ms, 1.518 ms] 156.701 µs (11.7%)
tracing 1.47 ms [1.444 ms, 1.495 ms] 132.404 µs (9.9%)
  • candidate results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 1.356 ms [1.335 ms, 1.376 ms] -
appsec 1.739 ms [1.715 ms, 1.763 ms] 383.747 µs (28.3%)
appsec_no_iast 1.76 ms [1.736 ms, 1.784 ms] 404.734 µs (29.9%)
iast 1.504 ms [1.481 ms, 1.527 ms] 148.55 µs (11.0%)
profiling 1.497 ms [1.473 ms, 1.52 ms] 141.039 µs (10.4%)
tracing 1.483 ms [1.457 ms, 1.508 ms] 127.433 µs (9.4%)

Dacapo

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
git_branch master malvarez/iast-fix-after-call-site-with-void
git_commit_date 1734691666 1734692459
git_commit_sha 8d5f5ac 981eee2
release_version 1.45.0-SNAPSHOT~8d5f5acd23 1.45.0-SNAPSHOT~981eee20be
See matching parameters
Baseline Candidate
application biojava biojava
ci_job_date 1734694280 1734694280
ci_job_id 746869261 746869261
ci_pipeline_id 51646218 51646218
cpu_model Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz
variant appsec appsec

Summary

Found 0 performance improvements and 0 performance regressions! Performance is the same for 11 metrics, 1 unstable metrics.

Execution time for biojava
gantt
    title biojava - execution time [CI 0.99] : candidate=1.45.0-SNAPSHOT~981eee20be, baseline=1.45.0-SNAPSHOT~8d5f5acd23
    dateFormat X
    axisFormat %s
section baseline
no_agent (15.499 s) : 15499000, 15499000
.   : milestone, 15499000,
appsec (14.967 s) : 14967000, 14967000
.   : milestone, 14967000,
iast (18.844 s) : 18844000, 18844000
.   : milestone, 18844000,
iast_GLOBAL (17.693 s) : 17693000, 17693000
.   : milestone, 17693000,
profiling (15.052 s) : 15052000, 15052000
.   : milestone, 15052000,
tracing (15.253 s) : 15253000, 15253000
.   : milestone, 15253000,
section candidate
no_agent (15.216 s) : 15216000, 15216000
.   : milestone, 15216000,
appsec (15.14 s) : 15140000, 15140000
.   : milestone, 15140000,
iast (18.963 s) : 18963000, 18963000
.   : milestone, 18963000,
iast_GLOBAL (18.056 s) : 18056000, 18056000
.   : milestone, 18056000,
profiling (14.777 s) : 14777000, 14777000
.   : milestone, 14777000,
tracing (15.134 s) : 15134000, 15134000
.   : milestone, 15134000,
Loading
  • baseline results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 15.499 s [15.499 s, 15.499 s] -
appsec 14.967 s [14.967 s, 14.967 s] -532.0 ms (-3.4%)
iast 18.844 s [18.844 s, 18.844 s] 3.345 s (21.6%)
iast_GLOBAL 17.693 s [17.693 s, 17.693 s] 2.194 s (14.2%)
profiling 15.052 s [15.052 s, 15.052 s] -447.0 ms (-2.9%)
tracing 15.253 s [15.253 s, 15.253 s] -246.0 ms (-1.6%)
  • candidate results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 15.216 s [15.216 s, 15.216 s] -
appsec 15.14 s [15.14 s, 15.14 s] -76.0 ms (-0.5%)
iast 18.963 s [18.963 s, 18.963 s] 3.747 s (24.6%)
iast_GLOBAL 18.056 s [18.056 s, 18.056 s] 2.84 s (18.7%)
profiling 14.777 s [14.777 s, 14.777 s] -439.0 ms (-2.9%)
tracing 15.134 s [15.134 s, 15.134 s] -82.0 ms (-0.5%)
Execution time for tomcat
gantt
    title tomcat - execution time [CI 0.99] : candidate=1.45.0-SNAPSHOT~981eee20be, baseline=1.45.0-SNAPSHOT~8d5f5acd23
    dateFormat X
    axisFormat %s
section baseline
no_agent (1.47 ms) : 1458, 1481
.   : milestone, 1470,
appsec (2.347 ms) : 2306, 2389
.   : milestone, 2347,
iast (2.076 ms) : 2023, 2128
.   : milestone, 2076,
iast_GLOBAL (2.122 ms) : 2069, 2175
.   : milestone, 2122,
profiling (1.953 ms) : 1910, 1996
.   : milestone, 1953,
tracing (1.928 ms) : 1888, 1969
.   : milestone, 1928,
section candidate
no_agent (1.461 ms) : 1450, 1472
.   : milestone, 1461,
appsec (2.34 ms) : 2298, 2382
.   : milestone, 2340,
iast (2.081 ms) : 2028, 2134
.   : milestone, 2081,
iast_GLOBAL (2.132 ms) : 2079, 2185
.   : milestone, 2132,
profiling (2.433 ms) : 2252, 2614
.   : milestone, 2433,
tracing (1.926 ms) : 1886, 1967
.   : milestone, 1926,
Loading
  • baseline results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 1.47 ms [1.458 ms, 1.481 ms] -
appsec 2.347 ms [2.306 ms, 2.389 ms] 877.556 µs (59.7%)
iast 2.076 ms [2.023 ms, 2.128 ms] 605.64 µs (41.2%)
iast_GLOBAL 2.122 ms [2.069 ms, 2.175 ms] 652.202 µs (44.4%)
profiling 1.953 ms [1.91 ms, 1.996 ms] 482.88 µs (32.9%)
tracing 1.928 ms [1.888 ms, 1.969 ms] 458.543 µs (31.2%)
  • candidate results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 1.461 ms [1.45 ms, 1.472 ms] -
appsec 2.34 ms [2.298 ms, 2.382 ms] 878.685 µs (60.1%)
iast 2.081 ms [2.028 ms, 2.134 ms] 620.291 µs (42.5%)
iast_GLOBAL 2.132 ms [2.079 ms, 2.185 ms] 670.68 µs (45.9%)
profiling 2.433 ms [2.252 ms, 2.614 ms] 971.834 µs (66.5%)
tracing 1.926 ms [1.886 ms, 1.967 ms] 465.395 µs (31.9%)

@manuel-alvarez-alvarez manuel-alvarez-alvarez added the type: enhancement Enhancements and improvements label Dec 19, 2024
@smola smola added the tag: no release notes Changes to exclude from release notes label Dec 19, 2024
@manuel-alvarez-alvarez manuel-alvarez-alvarez force-pushed the malvarez/iast-fix-after-call-site-with-void branch from 16ed803 to 981eee2 Compare December 20, 2024 11:01
@manuel-alvarez-alvarez manuel-alvarez-alvarez merged commit a3e9bda into master Dec 20, 2024
@manuel-alvarez-alvarez manuel-alvarez-alvarez deleted the malvarez/iast-fix-after-call-site-with-void branch December 20, 2024 11:37
@github-actions github-actions Bot added this to the 1.45.0 milestone Dec 20, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

comp: asm iast Application Security Management (IAST) tag: no release notes Changes to exclude from release notes type: enhancement Enhancements and improvements

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants