Skip to content
Snippets Groups Projects
  1. Oct 02, 2019
  2. Sep 25, 2019
  3. Sep 01, 2019
  4. Aug 28, 2019
  5. Aug 23, 2019
  6. Aug 09, 2019
  7. Apr 24, 2019
  8. Apr 11, 2019
  9. Apr 10, 2019
  10. Apr 04, 2019
  11. Apr 02, 2019
  12. Feb 13, 2019
  13. Feb 06, 2019
  14. Feb 04, 2019
  15. Jan 31, 2019
    • Nick Thomas's avatar
      Verify that LFS upload requests are genuine · 5b075413
      Nick Thomas authored
      LFS uploads are handled in concert by workhorse and rails. In normal
      use, workhorse:
      
      * Authorizes the request with rails (upload_authorize)
      * Handles the upload of the file to a tempfile - disk or object storage
      * Validates the file size and contents
      * Hands off to rails to complete the upload (upload_finalize)
      
      In `upload_finalize`, the LFS object is linked to the project. As LFS
      objects are deduplicated across all projects, it may already exist. If
      not, the temporary file is copied to the correct place, and will be
      used by all future LFS objects with the same OID.
      
      Workhorse uses the Content-Type of the request to decide to follow this
      routine, as the URLs are ambiguous. If the Content-Type is anything but
      "application/octet-stream", the request is proxied directly to rails,
      on the assumption that this is a normal file edit request. If it's an
      actual LFS request with a different content-type, however, it is routed
      to the Rails `upload_finalize` action, which treats it as an LFS upload
      just as it would a workhorse-modified request.
      
      The outcome is that users can upload LFS objects that don't match the
      declared size or OID. They can also create links to LFS objects they
      don't really own, allowing them to read the contents of files if they
      know just the size or OID.
      
      We can close this hole by requiring requests to `upload_finalize` to be
      sourced from Workhorse. The mechanism to do this already exists.
      Verified
      5b075413
  16. Jan 22, 2019
    • Nick Thomas's avatar
      Verify that LFS upload requests are genuine · 87c5abfc
      Nick Thomas authored
      LFS uploads are handled in concert by workhorse and rails. In normal
      use, workhorse:
      
      * Authorizes the request with rails (upload_authorize)
      * Handles the upload of the file to a tempfile - disk or object storage
      * Validates the file size and contents
      * Hands off to rails to complete the upload (upload_finalize)
      
      In `upload_finalize`, the LFS object is linked to the project. As LFS
      objects are deduplicated across all projects, it may already exist. If
      not, the temporary file is copied to the correct place, and will be
      used by all future LFS objects with the same OID.
      
      Workhorse uses the Content-Type of the request to decide to follow this
      routine, as the URLs are ambiguous. If the Content-Type is anything but
      "application/octet-stream", the request is proxied directly to rails,
      on the assumption that this is a normal file edit request. If it's an
      actual LFS request with a different content-type, however, it is routed
      to the Rails `upload_finalize` action, which treats it as an LFS upload
      just as it would a workhorse-modified request.
      
      The outcome is that users can upload LFS objects that don't match the
      declared size or OID. They can also create links to LFS objects they
      don't really own, allowing them to read the contents of files if they
      know just the size or OID.
      
      We can close this hole by requiring requests to `upload_finalize` to be
      sourced from Workhorse. The mechanism to do this already exists.
      Verified
      87c5abfc
    • Andrew Newdigate's avatar
      Upgrade gitlab-workhorse to 8.1.0 · 51322670
      Andrew Newdigate authored and Nick Thomas's avatar Nick Thomas committed
      51322670
  17. Dec 11, 2018
  18. Dec 10, 2018
  19. Dec 06, 2018
  20. Dec 04, 2018
  21. Nov 30, 2018
  22. Nov 28, 2018
  23. Nov 23, 2018
  24. Nov 14, 2018
  25. Nov 07, 2018
  26. Oct 01, 2018
  27. Sep 27, 2018
  28. Sep 06, 2018
  29. Aug 16, 2018
  30. Jul 30, 2018
  31. Jul 04, 2018
  32. Jun 07, 2018
  33. Jun 01, 2018
  34. May 22, 2018
  35. May 01, 2018
  36. Apr 12, 2018
  37. Mar 07, 2018
Loading