Skip to content

Commit 9f1d5eb

Browse files
committed
Merge branch 'refs/heads/main' into feature/include-http-response
# Conflicts: # newrelic-security-api-test-impl/src/main/java/com/newrelic/api/agent/security/Agent.java
2 parents 4370bd2 + 27e35ef commit 9f1d5eb

File tree

75 files changed

+1322
-1312
lines changed

Some content is hidden

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

75 files changed

+1322
-1312
lines changed

.github/workflows/X-Reusable-Build-Security-Agent.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ jobs:
5858
# this job reads the directories in csec-java-agent/instrumentation-security and creates a JSON with the list of the modules
5959
# this list is paginated and will be used in the verify-module job.
6060
build-agent:
61-
runs-on: ubuntu-20.04
61+
runs-on: ubuntu-24.04
6262
strategy:
6363
matrix:
6464
java-version: [ 8 ]

.github/workflows/X-Reusable-VerifyInstrumentation.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ jobs:
2222
# this job reads the directories in csec-java-agent/instrumentation-security and creates a JSON with the list of the modules
2323
# this list is paginated and will be used in the verify-module job.
2424
read-modules:
25-
runs-on: ubuntu-20.04
25+
runs-on: ubuntu-24.04
2626
outputs:
2727
modules: ${{ steps.set-modules.outputs.modules }}
2828
steps:
@@ -48,7 +48,7 @@ jobs:
4848
4949
verify-module:
5050
name: ${{ matrix.modules }}
51-
runs-on: ubuntu-20.04
51+
runs-on: ubuntu-24.04
5252
needs: read-modules
5353
strategy:
5454
fail-fast: false

.github/workflows/build-integrated-jar.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ jobs:
5252
name: Create Integrated Agent jar
5353
if: ${{ always() }}
5454
needs: [build-csec-agent, verify-instrumentation]
55-
runs-on: ubuntu-20.04
55+
runs-on: ubuntu-24.04
5656
steps:
5757
- name: Print Inputs
5858
run: echo "${{ toJSON(github.event.inputs) }}"
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
name: Dependency Submission
2+
3+
on:
4+
push:
5+
branches: ['main']
6+
7+
permissions:
8+
contents: write
9+
10+
jobs:
11+
dependency-submission:
12+
runs-on: ubuntu-24.04
13+
steps:
14+
- name: Checkout sources
15+
uses: actions/checkout@v4
16+
- name: Setup Java
17+
uses: actions/setup-java@v4
18+
with:
19+
distribution: 'temurin'
20+
java-version: 8
21+
- name: Generate and submit dependency graph
22+
uses: gradle/actions/dependency-submission@v4
23+
with:
24+
dependency-graph-include-projects: ':newrelic-security-(agent|api)'
25+
build-scan-publish: true
26+
build-scan-terms-of-use-url: "https://gralde.com/help/legal-terms-of-use"
27+
build-scan-terms-of-use-agree: "yes"

.github/workflows/publish-to-maven.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ jobs:
9090
name: Publish to Maven Central
9191
if: ${{ always() }}
9292
needs: [verify-instrumentation, unit-test]
93-
runs-on: ubuntu-20.04
93+
runs-on: ubuntu-24.04
9494
steps:
9595
- name: Checkout APM agent
9696
uses: actions/checkout@v3

.github/workflows/repolinter.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ on: [push, workflow_dispatch]
1111
jobs:
1212
repolint:
1313
name: Run Repolinter
14-
runs-on: ubuntu-latest
14+
runs-on: ubuntu-24.04
1515
steps:
1616
- name: Test Default Branch
1717
id: default-branch

.github/workflows/snyk-vulnerability-scan.yml

Lines changed: 0 additions & 33 deletions
This file was deleted.

.github/workflows/verify-instrumentation-single.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ on:
1818
jobs:
1919
verify_instrumentation_single:
2020
name: Verify Instrumentation Single
21-
runs-on: ubuntu-20.04
21+
runs-on: ubuntu-24.04
2222
steps:
2323
- name: Print Inputs
2424
run: echo "${{ toJSON(github.event.inputs) }}"

.github/workflows/verify-instrumentation.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ jobs:
2323
notify-failure:
2424
needs: [verify-instrumentation]
2525
if: ${{ failure() }}
26-
runs-on: ubuntu-20.04
26+
runs-on: ubuntu-24.04
2727
steps:
2828
- name: Send failure message to Slack
2929
id: slack
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
package com.nr.agent.security.instrumentation;
2+
3+
import com.newrelic.agent.security.introspec.InstrumentationTestConfig;
4+
import com.newrelic.agent.security.introspec.SecurityInstrumentationTestRunner;
5+
import com.newrelic.agent.security.introspec.SecurityIntrospector;
6+
import com.newrelic.api.agent.Trace;
7+
import com.newrelic.api.agent.security.schema.AbstractOperation;
8+
import com.newrelic.api.agent.security.schema.VulnerabilityCaseType;
9+
import com.newrelic.api.agent.security.schema.operation.FileOperation;
10+
import org.junit.Assert;
11+
import org.junit.BeforeClass;
12+
import org.junit.Ignore;
13+
import org.junit.Test;
14+
import org.junit.runner.RunWith;
15+
16+
import java.io.File;
17+
import java.io.IOException;
18+
import java.util.List;
19+
import java.util.UUID;
20+
21+
@RunWith(SecurityInstrumentationTestRunner.class)
22+
@InstrumentationTestConfig(includePrefixes = {"com.newrelic.agent.security.instrumentation.random", "java.io"})
23+
public class FileTest {
24+
private static final String FILE_NAME = "/tmp/test-" + UUID.randomUUID();
25+
26+
@BeforeClass
27+
public static void retransformRequiredClasses() {
28+
TestSetupBringUp.bringUp();
29+
}
30+
31+
@Test
32+
public void testExists() {
33+
exists();
34+
35+
SecurityIntrospector introspector = SecurityInstrumentationTestRunner.getIntrospector();
36+
List<AbstractOperation> operations = introspector.getOperations();
37+
Assert.assertFalse("No operations detected", operations.isEmpty());
38+
FileOperation targetOperation = (FileOperation) operations.get(0);
39+
40+
Assert.assertEquals("Invalid method Name", "exists", targetOperation.getMethodName());
41+
Assert.assertEquals("Invalid executed parameters.", FILE_NAME, targetOperation.getFileName().get(0));
42+
Assert.assertEquals("Invalid event category.", VulnerabilityCaseType.FILE_OPERATION, targetOperation.getCaseType());
43+
Assert.assertTrue("GetBooleanAttributesCall should be true", targetOperation.isGetBooleanAttributesCall());
44+
}
45+
46+
@Test
47+
public void testExists1() {
48+
exists1();
49+
50+
SecurityIntrospector introspector = SecurityInstrumentationTestRunner.getIntrospector();
51+
List<AbstractOperation> operations = introspector.getOperations();
52+
Assert.assertTrue("No operations should detected", operations.isEmpty());
53+
54+
}
55+
56+
@Trace(dispatcher = true)
57+
private void exists() {
58+
new File(FILE_NAME).exists();
59+
}
60+
61+
@Trace(dispatcher = true)
62+
private void exists1() {
63+
new File("").exists();
64+
}
65+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package com.nr.agent.security.instrumentation;
2+
3+
import com.newrelic.agent.security.introspec.SecurityInstrumentationTestRunner;
4+
5+
import java.io.File;
6+
import java.io.FileInputStream;
7+
import java.io.FileOutputStream;
8+
import java.util.ArrayList;
9+
import java.util.List;
10+
11+
public class TestSetupBringUp {
12+
public static void bringUp() {
13+
try {
14+
List<Class> toReTransform = new ArrayList<>();
15+
16+
// java.io.FileInputStream
17+
SecurityInstrumentationTestRunner.instrumentation.retransformClasses(FileInputStream.class, FileOutputStream.class);
18+
19+
// java.io.FileSystem and alike
20+
Class<?> fileSystemClass = Class.forName("java.io.FileSystem");
21+
toReTransform.add(fileSystemClass);
22+
23+
Class<?> unixFileSystemClass = Class.forName("java.io.UnixFileSystem");
24+
toReTransform.add(unixFileSystemClass);
25+
26+
toReTransform.add(File.class);
27+
28+
SecurityInstrumentationTestRunner.instrumentation.retransformClasses(toReTransform.toArray(new Class<?>[0]));
29+
} catch (Throwable e) {
30+
e.printStackTrace();
31+
}
32+
}
33+
}

instrumentation-security/file-operation/src/test/java/com/nr/agent/security/instrumentation/javaio/FileSystemTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,15 @@
2222
@RunWith(SecurityInstrumentationTestRunner.class)
2323
@InstrumentationTestConfig(includePrefixes = {"java.io", "java.nio"})
2424
public class FileSystemTest {
25-
private static final String FILE_NAME = "/tmp/test-" + UUID.randomUUID().toString();
25+
private static final String FILE_NAME = "/tmp/test-" + UUID.randomUUID();
2626

2727
@BeforeClass
2828
public static void retransformRequiredClasses() {
2929
TestSetupBringUp.bringUp();
3030
}
3131

3232
@Test
33-
@Ignore
33+
@Ignore ("This construct is supported in file-low-priority-instrumentation module")
3434
public void testGetBooleanAttributes() throws IOException {
3535
getBooleanAttribute(FILE_NAME);
3636

@@ -84,7 +84,7 @@ private void delete( String filePath ) throws IOException{
8484

8585
@Trace(dispatcher = true)
8686
private void rename( String filePath){
87-
String destPath = "/tmp/test-" + UUID.randomUUID().toString();
87+
String destPath = "/tmp/test-" + UUID.randomUUID();
8888
new File(filePath).renameTo(new File(destPath));
8989
}
9090

instrumentation-security/file-operation/src/test/java/com/nr/agent/security/instrumentation/javaio/FileTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,15 +24,15 @@
2424
@RunWith(SecurityInstrumentationTestRunner.class)
2525
@InstrumentationTestConfig(includePrefixes = {"java.io", "java.nio"})
2626
public class FileTest {
27-
private static final String FILE_NAME = "/tmp/test-" + UUID.randomUUID().toString();
27+
private static final String FILE_NAME = "/tmp/test-" + UUID.randomUUID();
2828

2929
@BeforeClass
3030
public static void retransformRequiredClasses() {
3131
TestSetupBringUp.bringUp();
3232
}
3333

3434
@Test
35-
@Ignore
35+
@Ignore ("This construct is supported in file-low-priority-instrumentation module")
3636
public void testGetBooleanAttributes() throws IOException {
3737
exists(FILE_NAME);
3838

@@ -358,7 +358,7 @@ private void mkdirs(String filePath) throws IOException {
358358

359359
@Trace(dispatcher = true)
360360
private void renameTo(String filePath) throws IOException {
361-
String destPath = "/tmp/test-" + UUID.randomUUID().toString();
361+
String destPath = "/tmp/test-" + UUID.randomUUID();
362362
new File(filePath).renameTo( new File(destPath));
363363
}
364364

instrumentation-security/graphql-java-16.2/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ jar {
1010
}
1111

1212
verifyInstrumentation {
13-
passesOnly('com.graphql-java:graphql-java:[16.0,)')
13+
passesOnly('com.graphql-java:graphql-java:[16.0,23.0)')
1414
excludeRegex('com.graphql-java:graphql-java:(0.0.0|201|202).*')
1515
excludeRegex('com.graphql-java:graphql-java:.*(vTEST|-beta|-alpha1|-nf-execution|-rc|-TEST).*')
1616
exclude('com.graphql-java:graphql-java:15.0')

instrumentation-security/java-io-inputstream-jdk9/src/test/java/com/nr/instrumentation/security/inputstream/jdk9/InputStreamJdk9Test.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ public class InputStreamJdk9Test {
4040
private static String FILE_TEMP;
4141
private static String DIR;
4242
private static String DATA;
43-
private static List<String> stuffToClean = new ArrayList<>();
43+
private static final List<String> stuffToClean = new ArrayList<>();
4444

4545
@BeforeClass
4646
public static void retransformRequiredClasses() {
@@ -114,8 +114,6 @@ public void testReadWithFiles1() {
114114
}
115115

116116
@Test
117-
@Ignore
118-
// FIXME: not working, need to check the issue
119117
public void testReadWithFiles2() {
120118
SecurityIntrospector introspector = SecurityInstrumentationTestRunner.getIntrospector();
121119
byte[] expected = new byte[DATA.length()];

0 commit comments

Comments
 (0)