I don't think it is safe to whitelist the java File object or its methods.

Is there a reason you're not relying on the ability of the dir step to
create a directory if one does not exist?  Refer to
https://stackoverflow.com/questions/42654875/jenkins-pipeline-create-directory
for the stackoverflow comments.

I wrote the following small test that seems to create a directory, add
contents, then remove the directory, using the DSL rather than using java
File methods.

node('!windows') {
    echo 'entering'
    sh 'ls -alrR'
    echo 'deleting contents'
    deleteDir()
    echo 'after content delete'
    sh 'ls -alrR'
    dir('some-dir') {
       sh 'date >> datefile'
    }
    echo 'after content create'
    sh 'ls -alrR'
}

On Wed, Mar 20, 2019 at 8:24 PM Jan Monterrubio <[email protected]>
wrote:

> There’s an admin view for white listing method calls. If you don’t have
> admin access you can’t see it.
>
> On Wed, Mar 20, 2019 at 14:03 Guybrush Threepwood <[email protected]>
> wrote:
>
>> hello I have a Jenkins fileas part of a multibranch pipeline But I'm
>> getting seccurityissues when trying to create a directory inside the
>> workspace how can either disable the sandbox for this pipeline or whitelist
>> the methods I need to use from my code
>> Thanks.
>> This is the code:
>> ============================================================
>> import java.io.File;
>> import java.io.IOException;
>> import org.apache.commons.io.FileUtils;
>>
>> //autocancelled = false
>> node ('AnsibleBuild') {
>>         try {
>>         checkout scm
>>         def versions = readJSON file: 'versions.json'
>>                 stage('Getting Python source Code') {
>>                         echo " before del try"
>>                                 try {
>>                                         echo "inside try";
>>                                         *File f = new File("python");*
>>                                         echo "after new file";
>>                                         //FileUtils.cleanDirectory(f);
>> //clean out directory (this is optional -- but good know)
>>                                         FileUtils.forceDelete(f);
>> //delete directory
>>                                         //FileUtils.forceMkdir(f);
>> //create directory
>>                                 }
>>                                 catch (IOException e) {
>>                                         echo "pinazo cleaning python"
>>                                         echo e.getStackTrace();
>>                                 } // catch delete dir
>>                          echo "Despues del try"
>>                          sh 'pwd'
>>                          sh 'ls -la'
>>                          sh 'mkdir python'
>>                                 dir("python") {
>>                                         echo 'Downloading Python code
>> from: https://www.python.org/ftp/python/3.7.2/Python-3.7.2.tgz'
>>                                         sh 'curl
>> https://www.python.org/ftp/python/3.7.2/Python-3.7.2.tgz -o
>> Python-3.7.2.tgz'
>>                                         sh 'file Python-3.7.2.tgz' //
>> needs to be checked that we downloaded a tgz file
>>                                         sh 'tar -xzvf Python-3.7.2.tgz'
>>                                 } //dir python
>>                 } // stage
>>         currentBuild.result = 'SUCCESS'
>>         } //try node
>>         catch (e) {
>>                 echo "General Fostion";
>>                 echo "trace General" + e.getStackTrace();
>>                 currentBuild.result = 'FAILURE'
>>         } //end catch
>> try {
>>   echo "Cleaning WS"
>>   dir(python) {
>>         deleteDir()
>>         }
>> } //try clena WS
>> catch (e) {
>>         echo "Error Cleaning WS";
>>         echo "trace cleaning" + e.getStackTrace();
>>         currentBuild.result = 'FAILURE'
>> } //catch clena WS
>> } //node
>> ========================================================
>>
>> And I'm getting error: for line 14
>>
>> trace 
>> General[org.jenkinsci.plugins.scriptsecurity.sandbox.whitelists.StaticWhitelist.rejectNew(StaticWhitelist.java:184),
>>  
>> org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onNewInstance(SandboxInterceptor.java:170),
>>  org.kohsuke.groovy.sandbox.impl.Checker$3.call(Checker.java:197), 
>> org.kohsuke.groovy.sandbox.impl.Checker.checkedConstructor(Checker.java:202),
>>  
>> com.cloudbees.groovy.cps.sandbox.SandboxInvoker.constructorCall(SandboxInvoker.java:21),
>>  WorkflowScript.run(WorkflowScript:14), ___cps.transform___(Native Method), 
>> com.cloudbees.groovy.cps.impl.FunctionCallBlock$ContinuationImpl.dispatchOrArg(FunctionCallBlock.java:96),
>>  
>> com.cloudbees.groovy.cps.impl.FunctionCallBlock$ContinuationImpl.fixArg(FunctionCallBlock.java:82),
>>  sun.reflect.GeneratedMethodAccessor148.invoke(Unknown Source), 
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43),
>>  java.lang.reflect.Method.invoke(Method.java:498), 
>> com.cloudbees.groovy.cps.impl.ContinuationPtr$ContinuationImpl.receive(ContinuationPtr.java:72),
>>  com.cloudbees.groovy.cps.impl.ConstantBlock.eval(ConstantBlock.java:21), 
>> com.cloudbees.groovy.cps.Next.step(Next.java:83), 
>> com.cloudbees.groovy.cps.Continuable$1.call(Continuable.java:174), 
>> com.cloudbees.groovy.cps.Continuable$1.call(Continuable.java:163), 
>> org.codehaus.groovy.runtime.GroovyCategorySupport$ThreadCategoryInfo.use(GroovyCategorySupport.java:129),
>>  
>> org.codehaus.groovy.runtime.GroovyCategorySupport.use(GroovyCategorySupport.java:268),
>>  com.cloudbees.groovy.cps.Continuable.run0(Continuable.java:163), 
>> org.jenkinsci.plugins.workflow.cps.SandboxContinuable.access$101(SandboxContinuable.java:34),
>>  
>> org.jenkinsci.plugins.workflow.cps.SandboxContinuable.lambda$run0$0(SandboxContinuable.java:59),
>>  
>> org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.GroovySandbox.runInSandbox(GroovySandbox.java:136),
>>  
>> org.jenkinsci.plugins.workflow.cps.SandboxContinuable.run0(SandboxContinuable.java:58),
>>  
>> org.jenkinsci.plugins.workflow.cps.CpsThread.runNextChunk(CpsThread.java:182),
>>  
>> org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.run(CpsThreadGroup.java:332),
>>  
>> org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.access$200(CpsThreadGroup.java:83),
>>  
>> org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:244),
>>  
>> org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:232),
>>  
>> org.jenkinsci.plugins.workflow.cps.CpsVmExecutorService$2.call(CpsVmExecutorService.java:64),
>>  java.util.concurrent.FutureTask.run(FutureTask.java:266), 
>> hudson.remoting.SingleLaneExecutorService$1.run(SingleLaneExecutorService.java:131),
>>  
>> jenkins.util.ContextResettingExecutorService$1.run(ContextResettingExecutorService.java:28),
>>  
>> jenkins.security.ImpersonatingExecutorService$1.run(ImpersonatingExecutorService.java:59),
>>  java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511), 
>> java.util.concurrent.FutureTask.run(FutureTask.java:266), 
>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149),
>>  
>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624),
>>  java.lang.Thread.run(Thread.java:748)]
>>
>> Any ideas how to fix this. what is the right way of targeting this kind
>> of issue?
>> Thanks.
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "Jenkins Users" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to [email protected].
>> To view this discussion on the web visit
>> https://groups.google.com/d/msgid/jenkinsci-users/ec75388f-8a03-424f-a9ca-43fd1d9ba452%40googlegroups.com
>> <https://groups.google.com/d/msgid/jenkinsci-users/ec75388f-8a03-424f-a9ca-43fd1d9ba452%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>> For more options, visit https://groups.google.com/d/optout.
>>
> --
> You received this message because you are subscribed to the Google Groups
> "Jenkins Users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/jenkinsci-users/CADgiF9JDdznaJaQ3wP%2BRA8_YXRcc%3DMq_JtXNU6R56OBUKSFaLg%40mail.gmail.com
> <https://groups.google.com/d/msgid/jenkinsci-users/CADgiF9JDdznaJaQ3wP%2BRA8_YXRcc%3DMq_JtXNU6R56OBUKSFaLg%40mail.gmail.com?utm_medium=email&utm_source=footer>
> .
> For more options, visit https://groups.google.com/d/optout.
>


-- 
Thanks!
Mark Waite

-- 
You received this message because you are subscribed to the Google Groups 
"Jenkins Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/jenkinsci-users/CAO49JtEEgQ1gS5%3DmvP79YDcpUY2w-n0VEUSpc-9dy_LpFc01wQ%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to