Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Many similar sandboxed tests on sockets generated by Fuzzing and not minimized #1129

Closed
Tracked by #1187
alisevych opened this issue Oct 10, 2022 · 2 comments · Fixed by #1132
Closed
Tracked by #1187

Many similar sandboxed tests on sockets generated by Fuzzing and not minimized #1129

alisevych opened this issue Oct 10, 2022 · 2 comments · Fixed by #1132
Assignees
Labels
ctg-bug Issue is a bug spec-release-tailings Failed to include in the current release, let's include it in the next one

Comments

@alisevych
Copy link
Member

alisevych commented Oct 10, 2022

Description

Many similar tests with same coverage are generated and not minimized.
Socket is created inside tests.
Fuzzing only mode is on.

To Reproduce

  1. Run a project in IntelliJ Idea 2022.1.3 - 2022.2.2
  2. Install RC plugin build
  3. Set Fuzzing to 100%

image

  1. Add the following class (originally posted in Add SecurityManager support to block suspicious code #622 #625 ):
public class SecurityCheck {
    public int connect(Socket socket) throws IOException {
        socket.connect(new InetSocketAddress("0.0.0.0", 22));
        return 0;
    }
}
  1. Use plugin to generate tests
  2. Open the generated test

Expected behavior

There should be only one test creating Socket and sandboxed due to an unpermitted operation.

Actual behavior

There are 272 tests generated by Fuzzing with similar arguments. They all have annotation

@Disabled(value = "Disabled due to sandbox")
    ///region FUZZER: EXPLICITLY_THROWN_UNCHECKED_EXCEPTIONS for method connect(java.net.Socket)

 @Test
    @DisplayName("connect: socket = Socket(String, int, boolean)")
    @Disabled(value = "Disabled due to sandbox")
    public void testConnect() throws IOException {
        SecurityCheck securityCheck = new SecurityCheck();
        Socket socket = new Socket("jkmqh", 568849899, true);

        /* This test fails because method [org.utbot.examples.SecurityCheck.connect] produces [java.security.AccessControlException: access denied ("java.net.SocketPermission" "jkmqh" "resolve")] */
    }

    @Test
    @DisplayName("connect: socket = Socket(String, int, boolean)")
    @Disabled(value = "Disabled due to sandbox")
    public void testConnect1() throws IOException {
        SecurityCheck securityCheck = new SecurityCheck();
        Socket socket = new Socket("qylov", -469477656, true);

        /* This test fails because method [org.utbot.examples.SecurityCheck.connect] produces [java.security.AccessControlException: access denied ("java.net.SocketPermission" "qylov" "resolve")] */
    }

Visual proofs (screenshots, logs, images)

image

There are the following warnings in concrete executor logs: Illegal reflective access by org.utbot.framework.concrete.UtModelConstructor to field java.net.Socket.created

Expand for details

19:03:52.187 | Info | DynamicClassTransformer | 16:Scheduler for Client56431 @coroutine#10 | Transforming: org/utbot/examples/SecurityCheck
WARNING: Illegal reflective access by org.utbot.framework.concrete.UtModelConstructor (file:/C:/Users//AppData/Roaming/JetBrains/IntelliJIdea2022.1/plugins/utbot-intellij/lib/utbot-framework-2022.10.417.jar) to field java.net.Socket.created
WARNING: Illegal reflective access by org.utbot.framework.concrete.UtModelConstructor (file:/C:/Users//AppData/Roaming/JetBrains/IntelliJIdea2022.1/plugins/utbot-intellij/lib/utbot-framework-2022.10.417.jar) to field java.net.Socket.bound
WARNING: Illegal reflective access by org.utbot.framework.concrete.UtModelConstructor (file:/C:/Users//AppData/Roaming/JetBrains/IntelliJIdea2022.1/plugins/utbot-intellij/lib/utbot-framework-2022.10.417.jar) to field java.net.Socket.connected
WARNING: Illegal reflective access by org.utbot.framework.concrete.UtModelConstructor (file:/C:/Users//AppData/Roaming/JetBrains/IntelliJIdea2022.1/plugins/utbot-intellij/lib/utbot-framework-2022.10.417.jar) to field java.net.Socket.closed
WARNING: Illegal reflective access by org.utbot.framework.concrete.UtModelConstructor (file:/C:/Users//AppData/Roaming/JetBrains/IntelliJIdea2022.1/plugins/utbot-intellij/lib/utbot-framework-2022.10.417.jar) to field java.net.Socket.closeLock
WARNING: Illegal reflective access by org.utbot.framework.concrete.UtModelConstructor (file:/C:/Users//AppData/Roaming/JetBrains/IntelliJIdea2022.1/plugins/utbot-intellij/lib/utbot-framework-2022.10.417.jar) to field java.net.Socket.shutIn
WARNING: Illegal reflective access by org.utbot.framework.concrete.UtModelConstructor (file:/C:/Users//AppData/Roaming/JetBrains/IntelliJIdea2022.1/plugins/utbot-intellij/lib/utbot-framework-2022.10.417.jar) to field java.net.Socket.shutOut
WARNING: Illegal reflective access by org.utbot.framework.concrete.UtModelConstructor (file:/C:/Users//AppData/Roaming/JetBrains/IntelliJIdea2022.1/plugins/utbot-intellij/lib/utbot-framework-2022.10.417.jar) to field java.net.Socket.impl
WARNING: Illegal reflective access by org.utbot.framework.concrete.UtModelConstructor (file:/C:/Users//AppData/Roaming/JetBrains/IntelliJIdea2022.1/plugins/utbot-intellij/lib/utbot-framework-2022.10.417.jar) to field java.net.Socket.oldImpl
WARNING: Illegal reflective access by org.utbot.framework.concrete.UtModelConstructor (file:/C:/Users//AppData/Roaming/JetBrains/IntelliJIdea2022.1/plugins/utbot-intellij/lib/utbot-framework-2022.10.417.jar) to field java.net.Socket.factory
WARNING: Illegal reflective access by org.utbot.framework.concrete.UtModelConstructor (file:/C:/Users//AppData/Roaming/JetBrains/IntelliJIdea2022.1/plugins/utbot-intellij/lib/utbot-framework-2022.10.417.jar) to field java.net.Socket.options
WARNING: Illegal reflective access by org.utbot.framework.concrete.UtModelConstructor (file:/C:/Users//AppData/Roaming/JetBrains/IntelliJIdea2022.1/plugins/utbot-intellij/lib/utbot-framework-2022.10.417.jar) to field java.net.Socket.optionsSet

Environment

Windows 10 Pro
IntelliJ IDEA 2022.1.3, 2022.1.4, 2022.2.2

Additional context

Originally posted by @alisevych in #1125 (comment)

@korifey korifey moved this to Todo in UTBot Java Oct 10, 2022
@alisevych alisevych added the ctg-bug Issue is a bug label Oct 10, 2022
@alisevych alisevych changed the title Many similar sandboxed tests on sockets generated by Fuzzing Many similar sandboxed tests on sockets generated by Fuzzing and not minimized Oct 10, 2022
@alisevych alisevych added this to the 2022.10.1 Release milestone Oct 11, 2022
@alisevych
Copy link
Member Author

@sergeypospelov Could you please check why minimization is not working in this case?

@alisevych alisevych added the spec-release-tailings Failed to include in the current release, let's include it in the next one label Oct 17, 2022
Repository owner moved this from Todo to Done in UTBot Java Oct 19, 2022
@alisevych
Copy link
Member Author

alisevych commented Oct 20, 2022

@Markoutte Please advise on the following:
Currently - when Fuzzing 100% is selected - error test is generated:

 ///region Errors report for connect

    public void testConnect_errors() {
        // Couldn't generate some tests. List of errors:
        // 
        // 70 occurrences of:
        // Default concrete execution failed

    }
    ///endregion

There are no errors in concrete executor logs:
1079427111206960378-1.log

denis-fokin pushed a commit that referenced this issue Oct 20, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
ctg-bug Issue is a bug spec-release-tailings Failed to include in the current release, let's include it in the next one
Projects
Archived in project
3 participants