Advertisement
moften

Shell Injection in Pygments FontManager._get_nix_font_path

Oct 6th, 2015
173
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.72 KB | None | 0 0
  1. Shell Injection in Pygments FontManager._get_nix_font_path
  2.  
  3. Product: Pygments
  4. Version: 1.2.2-2.0.2 497:fe62167596bb to 3693:655dbebddc23 Tue Nov 06 17:30:45 2007 +0000 to Aug 21, 2015.
  5. Website: http://pygments.org/
  6. Bitbucket: https://bitbucket.org/birkenfeld/pygments-main
  7. CVSS Score: 10.0 (AV:N/AC:L/Au:N/C:C/I:C/A:C)
  8. Discovery: Aug 21, 2015
  9.  
  10. An unsafe use of string concatenation in a shell string occurs in FontManager. If the developer allows the attacker to choose the font and outputs an image, the attacker can execute any shell command on the remote system. The name variable injected comes from the constructor of FontManager, which is invoked by ImageFormatter from options.
  11.  
  12. pygments/formatters/img.py:82
  13.  
  14. def _get_nix_font_path(self, name, style):
  15. try:
  16. from commands import getstatusoutput
  17. except ImportError:
  18. from subprocess import getstatusoutput
  19. exit, out = getstatusoutput('fc-list "%s:style=%s" file' %
  20. (name, style))
  21. if not exit:
  22. lines = out.splitlines()
  23. if lines:
  24. path = lines[0].strip().strip(':')
  25. return path
  26.  
  27. https://bitbucket.org/birkenfeld/pygments-main/src/655dbebddc23943b8047b3c139c51c22ef18fd91/pygments/formatters/img.py?at=default&fileviewer=file-view-default#img.py-82
  28.  
  29. Recommendation
  30.  
  31. shlex.quote should be used to ensure that an attacker cannot inject commands.
  32. https://docs.python.org/3/library/shlex.html#shlex.quote
  33.  
  34. A pull request has been made since the author did not respond to e-mail, Twitter, or IRC.
  35. https://bitbucket.org/birkenfeld/pygments-main/pull-requests/501/fix-shell-injection-in/diff
  36.  
  37. Regards,
  38. Javantea
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement