ORIGINAL ANALYSIS
What the Claude Code analysis found
TLS cert validation disabled app-wide (QSslSocket::QueryPeer) including the update download; .zip installed via an Administrator-elevated batch script with zero integrity check. [Opus-verified: CONFIRMED-D]
How the updater works
Original batch evidence · batch-AF1.md, line 18
- Repo (Clone Url)
- https://github.com/Librum-Reader/Librum.git
- Revision
- 5fdac34 / 2024-07-01
- Updater present
- Y
- Automatic behavior
- check:Y (auto on launch) / install:N (user clicks "Update")
- Downloads and executes
- Y
- Transport
- https, TLS validation effectively disabled (
QSslSocket::QueryPeerinstead of defaultVerifyPeeron a client socket — handshake proceeds even if the cert fails validation) - Manifest authentication
- N
- Payload verification
- none — response bytes written straight to a
.zip, no hash/signature check anywhere - Trust root
- N/A — no verification performed
- Evidence (File:Line)
src/infrastructure/persistance/app_info_access.cpp:70-77createRequest():sslConfiguration.setPeerVerifyMode(QSslSocket::QueryPeer)(same weakened config reused acrossdictionary_access.cpp,authentication_access.cpp,library_storage_access.cpp, etc.);:38-44downloadBinaries()GETs{domain}/binary/{packageName}.zip;src/application/services/app_info_service.cpp:118-131processDownloadedBinaryData→saveBinaryDataToFile;:66-84unpackAndInstallBinaries()shells out tounzip_and_move.bat, which "queries Administrator rights" and overwrites the installed binaries — no integrity check anywhere; trigger:src/presentation/settings/updatesPage/MUpdatesAvailable.qml:103AppInfoController.updateApplication()
Scope and limitations
- AI-generated static source analysis. Confirm the affected version, platform, update channel, and cited control flow before relying on this classification.
Source snapshots
- https://github.com/Librum-Reader/Librum
5fdac3454c3c3fbc4191aa6a4f277368895c9c70 - https://github.com/Librum-Reader/Librum
5fdac3454c3c3fbc4191aa6a4f277368895c9c70
Repository links identify retained study material. This does not certify every released binary or the latest upstream version.