Giter Site home page Giter Site logo

a4-browser-mapreduce's Introduction

Final Project for CSCI 339 Distributed Systems

One of the goals with this project is to implement a collaborative in-browser computation system with volunteers and job requesters. Participants can open a specified URL to contribute CPU cycles to an ongoing computation. We're currently utilizing a MapReduce framework as a proof of concept, but in theory any sort of computational work can be distributed across the compute nodes.

We are also implementing an authentication service that allows users to make use of the shared resources. The idea is that if users become volunteers, they then get access to an authentication token that allows them to submit MapReduce jobs to the cluster. These tokens are verified through an identity provider utilizing the SAML protocol. Another goal of this project is to simulate how real-world users might exploit vulnerabilities in SAML libraries to gain unauthorized access. We do this by simulating a man-in-the-middle attack in which a user alters a SAML document to get access to our system's resources despite not having been authenticated.

Questions? Email [email protected] or [email protected]

Dependencies

We are using Node.js for implementing our Job Server.

npm packages currently installed:

  • sqllite3
  • xml-writer
  • querystring
  • xmldoc
  • path
  • xml-crypto
  • xpath
  • xmldom
  • formidable (for parsing file uploads)
  • http
  • fs

How to run

  1. Start the job server: node job_server
  2. Start the identity provider: node identity_provider 3a) Navigate to: http://localhost:8889 3b) Alternatively, we have a version running online at http://bmr-cs339/rhcloud.com

Demo

We provide the tools for a sample MapReduce job in the demo folder. This folder contains Map and Reduce functions that get the word count of each word in a document. These functions are written in word_count.js. The demo folder also contains sentences.json, which is a short collection of sentences on which functions in word_count.js can be run.

How to commit a Signature wrapping attack

  1. Start the system as described above
  2. Click 'Access resources' and provide any value for the token
  3. When the identity provider prompts you to press a button to return to the job server, instead of clicking it view the HTML source of the page. Copy the value of SAMLResponse stored in the button's code.
  4. Launch malicious_user.js with the copied SAMLResponse as a command line argument node malicious_user [SAMLResponse]
  5. Navigate to the provided URL and click the button that is displayed. You now have access.

a4-browser-mapreduce's People

Contributors

mshaw155 avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.