tyiannak / pyAudioAnalysis

Python Audio Analysis Library: Feature Extraction, Classification, Segmentation and Applications
Apache License 2.0
5.76k stars 1.18k forks source link

Security Fix for Arbitrary Code Execution - huntr.dev #339

Open huntr-helper opened 3 years ago

huntr-helper commented 3 years ago

https://huntr.dev/users/d3m0n-r00t has fixed the Arbitrary Code Execution vulnerability šŸ”Ø. Think you could fix a vulnerability like this?

Get involved at https://huntr.dev/

Q | A Version Affected | ALL Bug Fix | YES Original Pull Request | https://github.com/418sec/pyAudioAnalysis/pull/2 Vulnerability README | https://github.com/418sec/huntr/blob/master/bounties/other/pyAudioAnalysis/1/README.md

User Comments:

šŸ“Š Metadata *

Fixed Arbitrary code execution in pyAudioAnalysis

Bounty URL: https://www.huntr.dev/bounties/1-other-pyAudioAnalysis

āš™ļø Description *

pyAudioAnalysis is an open Python library that provides a wide range of audio-related functionalities focusing on feature extraction, classification, segmentation and visualization issues. This package is vulnerable to Arbitrary Code Execution.

šŸ’» Technical Description *

The function load_model() blindly loads a pickle file without any validation making it vulnerable to Arbitrary Code Execution. If the input pickle file is a malicious payload, create a file remotely.

šŸ› Proof of Concept (PoC) *

import pickle
import os
from pyAudioAnalysis import audioTrainTest as aT

class EvilPickle(object):
    def __reduce__(self):
        return (os.system, ('touch HACKED', ))

payload = pickle.dumps(EvilPickle())

with open('MEANS', 'wb') as file:
    file.write(payload)

aT.load_model('')

Screenshot 2021-01-08 092958

šŸ”„ Proof of Fix (PoF) *

Screenshot 2021-01-08 093431

For subprocess Screenshot 2021-01-08 094622

šŸ‘ User Acceptance Testing (UAT)

Applied fix from pickle official fix as explained in here. https://www.cmi.ac.in/~madhavan/courses/python-2014/docs/python-3.2.1-docs-html/library/pickle.html