K jaké paměti má vlastně OpenSSL přístup? Z logiky věci by měly být paměťové prostory jednotlivých procesů oddělené. Nebo je paměť společná pro celý HTTP server, včetně všech modulů, interpretů a podobně?
Pokud ano, tak mi to připadá jako dost velký návrhový nedostatek - v porovnání například s IIS, kde jsou třeba FastCGI moduly zcela odděleny (i co se přístupových práv týče).
OpenSSL má přístup k celé paměti aktuálního procesu který tu knihovnu používá. To platí na Windows stejně jako na Unixech. Pokud jde o Apache httpd, tak tam jde o modul mod_ssl, který realizuje SSL/TLS, a běží ve stejném procesu který obsluhuje spojení s klienty. Pokud v tom samém procesu běží například PHP, je k dispozici spousta dat, ale i pokud je aplikační zpracování v jiném procesu (např. PHP přes FastCGI, nebo třeba aplikační server připojený přes mod_proxy_ajp) tak je v paměti procesu celkem dost dat - například tělo i parametry HTTP požadavků, což mohou být i přístupová jména, hesla nebo autorizační cookie - takže je to úplně stejné jako u IIS.
Přesně tak, jen bych ještě podotknul, že knihovna OpenSSL používá svůj vlastní alokátor paměti, takže je velmi nepravděpodobné, že by se někomu pomocí heartbeatu podařilo získat data z jiné části paměti stejného procesu, než té, která patří knihovně OpenSSL. Jenže TLS knihovnou musí z logiky věci procházet veškerá data a to jak v šifrované, tak i v nešifrované podobě, takže i tak jde o poměrně hodně zajímavých dat.