VPL - Virtual Programming Lab
  • Home
    • Presentation
    • Download
    • News
    • Demo site
    • Related publications
  • About
    • What is VPL?
    • Features
    • Screenshots
    • Licenses
    • Contact us
  • Support
    • VPL manual
    • VPL-jail-system Manual
    • VPL forum at Moodle
    • Bug report for VPL plugin
    • Bug report for jail server

News

Release of VPL Jail System 5.0.0

VPL Jail System 5.0.0 – Release Notes

Version 5.0.0 focuses on significant improvements to security and task execution isolation.

Enhanced Features

  • Improved firewall configuration
    Firewall settings have been enhanced to allow package updates and installations without stopping the server.
    Note: After any update, the service must still be restarted.

  • Safer file operations
    All file operations (save, delete, update) related to task preparation, delete files after compilation and update are now performed as the prisoner user instead of root.
    This prevents path traversal attacks and improves overall file system security.

  • Memory limiting with CGroups
    Tasks can now use CGroups to limit memory usage, in addition to the existing /proc-based method.
    Note: Not available in Docker.

  • Pivot root for filesystem isolation
    Uses pivot_root instead of chroot to limit access to the host filesystem.
    If pivot_root fails, the system automatically falls back to chroot.
    Note: Requires privileged mode in Docker.

  • Namespace-based isolation
    Supports Linux namespaces to isolate:

    • Filesystem
    • IPC
    • Processes
      Note: Requires privileged mode in Docker.
  • Per-task writable directories isolation
    Each task now gets a version of writable directories as /tmp, '/dev/shm/', etc. directories.
    Note: Requires namespaces.

  • Hardened /home/prisoner directory
    The /home/prisoner directory is now owned by a vpl system user, preventing tasks from changing access permissions and avoiding unintended external access.

  • Stronger process security
    Task processes are hardened using:

    • NO_NEW_PRIVS
    • Non-dumpable processes
    • Disabled ptrace
  • Uninstall support
    Added an uninstall option to the install-vpl-sh script.
    This removes all packages in the “full” set except those in the “minimal” set, preventing removal of essential packages.

  • Configurable isolation features
    Added configuration options:

    • USE_CGROUP
    • USE_NAMESPACE
      These features are enabled by default but can now be controlled explicitly. Set to true to enable; any other value disables the feature.

 


Download vpl-jail-system-5.0.0.tar.gz.

Manual of VPL Jail System V5.0.0

 

Release of VPL Jail System 4.0.4

VPL Jail System 4.0.4 Release Notes

Version 4.0.4 is a bug-fix release that addresses issues and includes minor improvements to enhance system stability and performance.

Bug Fixes

  • XML Encoder Compatibility: Improved the XML encoder for better compatibility with various systems.
  • UTF-8 Parser Robustness: Enhanced the UTF-8 parser to eliminate invalid code points, improving compatibility.
  • Home Directory Cleanup: Fixed a bug introduced in 4.0.3 that prevented the removal of files and directories with unusual names when eliminating the user home directory.
  • QueryString checking: Fixed bug parsing queryString. This bug was preventing the request of private browsing mode for web apps.
  • YUM Package Manager Support: Restored support for the yum package manager to keep compatibility with Linux distributions that uses it. The installation process will use the same package list as the DNF package manager.
  • Bash Script Newline Handling: Standardized newline characters in Bash scripts by normalizing script code to use \n, improving script execution reliability.
  • Typographical Correction: Corrected a long-standing typo by replacing "seg" with the correct abbreviation for seconds, "sec."

This release is recommended for all users to enhance compatibility and robustness.

Download vpl-jail-system-4.0.4.tar.gz.

VPL Jail System 4.0.3 Release Notes

The 4.0.3 version includes critical security fixes. Updates should be made immediately following the instructions below.

This document outlines fixes and improvements introduced in the VPL Jail System since version 3.0.1. The highlights of these changes include critical security fixes and the introduction of Docker support, among other significant improvements.

Server Bug Fixes

  • Critical security flaw:
    • This critical bug requires updating your VPL Jail System to the latest version immediately. The update requires using a machine with a freshly installed operating system. Remember to save your configuration file and certificates before completing the update.
    • If you are currently using the security parameters URLPATH and/or TASK_ONLY_FROM in your VPL Jail Servers's configuration, you are better protected against an attack. If you are not using these parameters, you may implement them as an immediate protection measure before updating. See VPL Jail System security parameters.
  • Fixed JSON encoding of control codes < 32.
  • Standardized JSONRPC to use three parameters while maintaining backward compatibility for two parameters.
  • Fixed a bug in checking repeated parameters.
  • Fixed a bug in control of log levels.
  • Fixed an important bug that prevented waiting for the retrieval action before cleaning task information.

Docker Support

  • Auto-detection of containerized environments.
  • Capability to run the jail server inside a container, both in privileged and non-privileged modes.
  • Includes three Dockerfiles for various configurations:
    • Dockerfile.no_https: HTTP without HTTPS support.
    • Dockerfile: HTTP and HTTPS support.
    • Dockerfile.letsencrypt: HTTP and HTTPS with Let's Encrypt certificates.
  • Three Compose files (compose.no_https.yaml, compose.yaml, compose.letsencrypt.yaml) corresponding to the Dockerfiles.
  • Non-privileged mode set as default.

VPL Jail System Images Available on Docker Hub

You can access built images of the VPL Jail System running on different operating systems. The official account that distributes these images is jcrodriguezvpl. There is a repository for each operating system. These images have been built with the VPL Jail System installed along with a full suite of development software. For example, one of the repositories is jail-fedora-full.

Server Enhancements

  • Added the ability to start the server in foreground mode, suitable for containerized environments.
  • Introduced support for challenge mode for Let's Encrypt certificate management. Available using the new CERTBOT_WEBROOT_PATH configuration parameter to support certbot.
  • Allow running waiting for certificates.
  • Environment Variable Support: Configuration parameters from environment variables now take precedence over the config file. Environment variables should be prefixed with VPL_JAIL_, followed by the config parameter name.
    • Example: export VPL_JAIL_PORT=8000 to set the PORT parameter.
  • Added an experimental script to automatically update the software by fetching the latest version from GitHub and applying updates if needed.

Installer Updates

  • Introduced new command-line options for the installer:
    • help: Display help information.

    • update: Update the VPL Jail System server software.

    • start: Start the VPL Jail System service post-installation.

    • noninteractive: Enable installation without user interaction.

    • [inst_level]: Set installation level (minimum, basic, standard, full).

    • list: Show packages to be installed per [inst_level].

    • Examples of installer launch:

      • ./install-vpl.sh update: Update server software.
      • ./install-vpl.sh standard noninteractive start: Non-interactive installation of standard packages and start the server.
      • ./install-vpl.sh full: Interactive installation of all development packages.
  • Added Rust programming language support.
  • Added .NET packages, enabling support for C#, F#, and Visual Basic .NET. C# on Mono remains available if .NET is not installed.
  • Expanded package manager support to APT, DNF, and APK, increasing compatibility with various Linux distributions. YUM support has been discontinued.
  • Package Customization: Extracted the list of packages to install to separate files, allowing for better customization. These files are located in the package_files directory.

Running Tasks Enhancement

  • VNC Launching Enhancements:

    • Fixes and improvements in the VNC launch process.
    • Confirmed functionality on Fedora, Ubuntu, Debian, and Alpine distributions.
  • Terminal and Task Execution Changes:

    • Modified running tasks terminal behavior to use only newline as the end-of-line character.
    • Removed local echo in evaluations.

Other Improvements and Fixes

  • Improved testing by performing syntax checks for bash scripts.
  • Fixed a typo in the name of CERTBOT.
  • Enhanced the installer to support command line options in any order.

Compatibility and Requirements

  • Operating System: VPL Jail System requires a Linux operating system.
  • Service Manager: The host system may use either systemd or System V as a service manager, or Docker.
  • Package Manager: The installer requires APK, APT, or DNF package managers to install common development software.
  • Compilation Requirements: The system is distributed in source format and requires a C++ compiler (supporting C++11) and the OpenSSL library for compilation.
  • Tested Environments: The current version has been tested on various Linux distributions, including Alpine, Ubuntu, Debian, and Fedora.

Release of VPL Jail System 4.0.3

VPL Jail System 4.0.3 Release Notes

The 4.0.3 version includes critical security fixes. Updates should be made immediately following the instructions below.

This document outlines fixes and improvements introduced in the VPL Jail System since version 3.0.1. The highlights of these changes include critical security fixes and the introduction of Docker support, among other significant improvements.

Server Bug Fixes

  • Critical security flaw:
    • A critical security flaw has been discovered in the VPL Jail System (@vincentscode Vincent Schmandt) affecting all versions prior to 4.0.3.
    • This critical bug requires updating your VPL Jail System to the latest version immediately. The update requires using a machine with a freshly installed operating system. Remember to save your configuration file and certificates before completing the update.
    • If you are currently using the security parameters URLPATH and/or TASK_ONLY_FROM in your VPL Jail Servers's configuration, you are better protected against an attack. If you are not using these parameters, you may implement them as an immediate protection measure before updating. See VPL Jail System security parameters.
    • Download VPL Jail System 4.0.3
  • Fixed JSON encoding of control codes < 32.
  • Standardized JSONRPC to use three parameters while maintaining backward compatibility for two parameters.
  • Fixed a bug in checking repeated parameters.
  • Fixed a bug in control of log levels.
  • Fixed an important bug that prevented waiting for the retrieval action before cleaning task information.

Docker Support

  • Auto-detection of containerized environments.
  • Capability to run the jail server inside a container, both in privileged and non-privileged modes.
  • Includes three Dockerfiles for various configurations:
    • Dockerfile.no_https: HTTP without HTTPS support.
    • Dockerfile: HTTP and HTTPS support.
    • Dockerfile.letsencrypt: HTTP and HTTPS with Let's Encrypt certificates.
  • Three Compose files (compose.no_https.yaml, compose.yaml, compose.letsencrypt.yaml) corresponding to the Dockerfiles.
  • Non-privileged mode set as default.

VPL Jail System Images Available on Docker Hub

You can access built images of the VPL Jail System running on different operating systems. The official account that distributes these images is jcrodriguezvpl. There is a repository for each operating system. These images have been built with the VPL Jail System installed along with a full suite of development software. For example, one of the repositories is jail-fedora-full.

Server Enhancements

  • Added the ability to start the server in foreground mode, suitable for containerized environments.
  • Introduced support for challenge mode for Let's Encrypt certificate management. Available using the new CERTBOT_WEBROOT_PATH configuration parameter to support certbot.
  • Allow running waiting for certificates.
  • Environment Variable Support: Configuration parameters from environment variables now take precedence over the config file. Environment variables should be prefixed with VPL_JAIL_, followed by the config parameter name.
    • Example: export VPL_JAIL_PORT=8000 to set the PORT parameter.
  • Added an experimental script to automatically update the software by fetching the latest version from GitHub and applying updates if needed.

Installer Updates

  • Introduced new command-line options for the installer:
    • help: Display help information.

    • update: Update the VPL Jail System server software.

    • start: Start the VPL Jail System service post-installation.

    • noninteractive: Enable installation without user interaction.

    • [inst_level]: Set installation level (minimum, basic, standard, full).

    • list: Show packages to be installed per [inst_level].

    • Examples of installer launch:

      • ./install-vpl.sh update: Update server software.
      • ./install-vpl.sh standard noninteractive start: Non-interactive installation of standard packages and start the server.
      • ./install-vpl.sh full: Interactive installation of all development packages.
  • Added Rust programming language support.
  • Added .NET packages, enabling support for C#, F#, and Visual Basic .NET. C# on Mono remains available if .NET is not installed.
  • Expanded package manager support to APT, DNF, and APK, increasing compatibility with various Linux distributions. YUM support has been discontinued.
  • Package Customization: Extracted the list of packages to install to separate files, allowing for better customization. These files are located in the package_files directory.

Running Tasks Enhancement

  • VNC Launching Enhancements:

    • Fixes and improvements in the VNC launch process.
    • Confirmed functionality on Fedora, Ubuntu, Debian, and Alpine distributions.
  • Terminal and Task Execution Changes:

    • Modified running tasks terminal behavior to use only newline as the end-of-line character.
    • Removed local echo in evaluations.

Other Improvements and Fixes

  • Improved testing by performing syntax checks for bash scripts.
  • Fixed a typo in the name of CERTBOT.
  • Enhanced the installer to support command line options in any order.

Compatibility and Requirements

  • Operating System: VPL Jail System requires a Linux operating system.
  • Service Manager: The host system may use either systemd or System V as a service manager, or Docker.
  • Package Manager: The installer requires APK, APT, or DNF package managers to install common development software.
  • Compilation Requirements: The system is distributed in source format and requires a C++ compiler (supporting C++11) and the OpenSSL library for compilation.
  • Tested Environments: The current version has been tested on various Linux distributions, including Alpine, Ubuntu, Debian, and Fedora.

 

Release of VPL Jail System 4.0.2

VPL Jail System 4.0.2

Download VPL Jail System 4.0.2

Release notes

This document outlines the key changes introduced in VPL Jail System since the version 3.0.1. The highlight of this changes is the introduction of Docker support, among other significant improvements and fixes.

Docker Support

  • Auto-detection of containerized environments.
  • Capability to run the jail server inside a container, both in privileged and non-privileged modes.
  • Includes three Dockerfiles for various configurations:
    • Dockerfile.no_https: HTTP without HTTPS support.
    • Dockerfile: HTTP and HTTPS support.
    • Dockerfile.letsencrypt: HTTP and HTTPS with Let's Encrypt certificates.
  • Three Compose files (compose.no_https.yaml, compose.yaml, compose.letsencrypt.yaml) corresponding to the Dockerfiles.

Server Enhancements

  • Fixed JSON encoding of control codes < 32.
  • Added ability to start the server in foreground mode, suitable for containerized environments.
  • Standardized JSONRPC to use 3 parameters, while maintaining backward compatibility for 2 parameters.
  • Introduced support for challenge mode for Let's Encrypt certificate management. Available using new CERTBOT_WEBROOT_PATH configuration parameter to support certbot.
  • Allow running waiting for certificates.
  • Environment Variable Support. Configuration parameters from the environment variables now take precedence over the config file. Environment variables should be prefixed with VPL_JAIL_, followed by the config parameter name.
    • Example: export VPL_JAIL_PORT=8000 to set the PORT parameter.

Installer Updates

  • Introduced new command-line options for the installer:
    • help: Display help information.

    • update: Update the VPL-Jail-System server software.

    • start: Start the VPL-Jail-System service post-installation.

    • noninteractive: Enable installation without user interaction.

    • [inst_level]: Set installation level (minimum, basic, standard, full).

    • list: Show packages to be installed per [inst_level].

    • Examples of installer launch

      • ./install-vpl.sh update: Update server software.
      • ./install-vpl.sh standard noninteractive start: Non-interactive installation of standard packages and start the server.
      • ./install-vpl.sh full: Interactive installation of all development packages.
  • Added Rust programming language support.
  • Added .NET packages, enabling support for C#, F#, and Visual Basic .NET. C# on Mono remains available.
  • Expanded package manager support to APT, DNF, and APK, increasing the compatibility with various Linux distributions. YUM support has been discontinued.
  • Package Customization. Extracted the list of packages to install to separate files, allowing for better customization. These files are located in the package_files directory.

Running Tasks enhancement

  • VNC Launching Enhancements:

    • Fixes and improvements in VNC launch process.
    • Confirmed functionality on Fedora, Ubuntu, Debian, and Alpine distributions.
  • Terminal and Task Execution Changes:

    • Modified running tasks terminal behavior to use only newline as the end-of-line character.
    • Removed local echo in evaluations.

Other Improvements and fixes

  • Improved testing by performing syntax checks for bash scripts.
  • This update fixes a typo in the name of CERTBOT
  • The installer has been enhanced to support command line options in any order.

Release of VPL Jail System 3.0.1

VPL Jail System 3.0.1

Download VPL Jail System 3.0.1

More details in the 3.0.1 manual version

Release notes

This release brings with it a number of fixes and enhancements.

  • Added support for supplementary planes of UTF-8 in JSON: This update extends the scope of our system’s compatibility by including all corresponding Unicode characters in UTF-8’s supplementary planes for JSON formatting.
  • The installer switches the preferred VHDL Compiler: The installer now employs GHDL as the default VHDL compiler, replacing FreeHDL due to its unavailability in the new Ubuntu releases. Note that GHDL is used from version 4.1.1 of VPL.
  • VNC Server launch improvements: We’ve fixed the vncconfig detection when launching the VNC server.
  • SELinux Status Check: The service launcher now performs a check of the usage and current state of SELinux. It will display a message if SELinux is installed and not in a disabled state. Note that the VPL Jail server is not compatible with SELinux.
  1. Release of VPL Jail System 3.0.0
  2. Release of VPL Jail System 2.7.2
  3. Release of VPL Jail System 2.7.1
  4. Release of VPL Jail System 2.7.0