I've monitored Unobtanium, Bitcoin, Primecoin, (and many other forks of Bitcoin Core), and I've found that there is an exploit. Remote attackers can access system services, such as system-tmpfiles log entries to review.
I recently synced the entire Unobtanium blockchain and opened the default port for peer access. As soon as I did I noticed access to the system in the following logs:
signal time=1777437996.557278 sender=:1.20 -> destination=(null destination) serial=42483 path=/org/freedesktop/systemd1/unit/systemd_2dtmpfiles_2dclean_2etimer; interface=org.freedesktop.DBus.Properties; member=PropertiesChanged string "org.freedesktop.systemd1.Timer" array [ dict entry( string "NextElapseUSecRealtime" variant uint64 0 ) dict entry( string "NextElapseUSecMonotonic" variant uint64 4323021512151 ) dict entry( string "LastTriggerUSec" variant uint64 1777437996555922 ) dict entry( string "LastTriggerUSecMonotonic" variant uint64 4323081510956 ) dict entry( string "Result" variant string "success" ) ] array [ string "TimersMonotonic" string "TimersCalendar" ] signal time=1777437996.557337 sender=:1.20 -> destination=(null destination) serial=42484 path=/org/freedesktop/systemd1/unit/systemd_2dtmpfiles_2dclean_2etimer; interface=org.freedesktop.DBus.Properties; member=PropertiesChanged string "org.freedesktop.systemd1.Unit" array [ dict entry( string "ActiveState" variant string "active" ) dict entry( string "SubState" variant string "running" ) dict entry( string "InactiveExitTimestamp" variant uint64 1773114916793756 ) dict entry( string "InactiveExitTimestampMonotonic" variant uint64 2949664 ) dict entry( string "ActiveEnterTimestamp" variant uint64 1773114916793756 ) dict entry( string "ActiveEnterTimestampMonotonic" variant uint64 2949664 ) dict entry( string "ActiveExitTimestamp" variant uint64 0 ) dict entry( string "ActiveExitTimestampMonotonic" variant uint64 0 ) dict entry( string "InactiveEnterTimestamp" variant uint64 0 ) dict entry( string "InactiveEnterTimestampMonotonic" variant uint64 0 ) dict entry( string "Job" variant struct { uint32 0 object path "/" } ) dict entry( string "ConditionResult" variant boolean true ) dict entry( string "AssertResult" variant boolean true ) dict entry( string "ConditionTimestamp" variant uint64 1773114916793727 ) dict entry( string "ConditionTimestampMonotonic" variant uint64 2949639 ) dict entry( string "AssertTimestamp" variant uint64 1773114916793731 ) dict entry( string "AssertTimestampMonotonic" variant uint64 2949640 ) ] array [ ] signal time=1777437996.557440 sender=:1.20 -> destination=(null destination) serial=42485 path=/org/freedesktop/systemd1; interface=org.freedesktop.systemd1.Manager; member=JobNew uint32 8157 object path "/org/freedesktop/systemd1/job/8157" string "systemd-tmpfiles-clean.service" signal time=1777437996.559849 sender=:1.20 -> destination=(null destination) serial=42486 path=/org/freedesktop/systemd1/unit/systemd_2dtmpfiles_2dclean_2eservice; interface=org.freedesktop.DBus.Properties; member=PropertiesChanged string "org.freedesktop.systemd1.Service" array [ dict entry( string "MainPID" variant uint32 16973 ) dict entry( string "ControlPID" variant uint32 0 ) dict entry( string "StatusText" variant string "" ) dict entry( string "StatusErrno" variant int32 0 ) dict entry( string "Result" variant string "success" ) dict entry( string "ExecMainStartTimestamp" variant uint64 1777437996557796 ) dict entry( string "ExecMainStartTimestampMonotonic" variant uint64 4323081512829 ) dict entry( string "ExecMainExitTimestamp" variant uint64 0 ) dict entry( string "ExecMainExitTimestampMonotonic" variant uint64 0 ) dict entry( string "ExecMainPID" variant uint32 16973 ) dict entry( string "ExecMainCode" variant int32 0 ) dict entry( string "ExecMainStatus" variant int32 0 ) ] array [ string "ExecStartPre" string "ExecStart" string "ExecStartPost" string "ExecReload" string "ExecStop" string "ExecStopPost" ] signal time=1777437996.559940 sender=:1.20 -> destination=(null destination) serial=42487 path=/org/freedesktop/systemd1/unit/systemd_2dtmpfiles_2dclean_2eservice; interface=org.freedesktop.DBus.Properties; member=PropertiesChanged string "org.freedesktop.systemd1.Unit" array [ dict entry( string "ActiveState" variant string "activating" ) dict entry( string "SubState" variant string "start" ) dict entry( string "InactiveExitTimestamp" variant uint64 1777437996557869 ) dict entry( string "InactiveExitTimestampMonotonic" variant uint64 4323081512902 ) dict entry( string "ActiveEnterTimestamp" variant uint64 0 ) dict entry( string "ActiveEnterTimestampMonotonic" variant uint64 0 ) dict entry( string "InactiveEnterTimestamp" variant uint64 1777351536569222 ) dict entry( string "InactiveEnterTimestampMonotonic" variant uint64 4236621524288 ) dict entry( string "Job" variant struct { uint32 8157 object path "/org/freedesktop/systemd1/job/8157" } ) dict entry( string "ConditionResult" variant boolean true ) dict entry( string "AssertResult" variant boolean true ) dict entry( string "ConditionTimestamp" variant uint64 1777437996557068 ) dict entry( string "ConditionTimestampMonotonic" variant uint64 4323081512100 ) dict entry( string "AssertTimestamp" variant uint64 1777437996557068 ) dict entry( string "AssertTimestampMonotonic" variant uint64 4323081512101 ) ] array [ ] signal time=1777437996.560066 sender=:1.20 -> destination=(null destination) serial=42488 path=/org/freedesktop/systemd1/job/8157; interface=org.freedesktop.DBus.Properties; member=PropertiesChanged string "org.freedesktop.systemd1.Job" array [ dict entry( string "State" variant string "running" ) ] array [ ] signal time=1777437996.576200 sender=:1.20 -> destination=(null destination) serial=42489 path=/org/freedesktop/systemd1; interface=org.freedesktop.systemd1.Manager; member=JobRemoved uint32 8157 object path "/org/freedesktop/systemd1/job/8157" string "systemd-tmpfiles-clean.service" string "done" signal time=1777437996.576643 sender=:1.20 -> destination=(null destination) serial=42490 path=/org/freedesktop/systemd1/unit/systemd_2dtmpfiles_2dclean_2eservice; interface=org.freedesktop.DBus.Properties; member=PropertiesChanged string "org.freedesktop.systemd1.Service" array [ dict entry( string "MainPID" variant uint32 0 ) dict entry( string "ControlPID" variant uint32 0 ) dict entry( string "StatusText" variant string "" ) dict entry( string "StatusErrno" variant int32 0 ) dict entry( string "Result" variant string "success" ) dict entry( string "ExecMainStartTimestamp" variant uint64 1777437996557796 ) dict entry( string "ExecMainStartTimestampMonotonic" variant uint64 4323081512829 ) dict entry( string "ExecMainExitTimestamp" variant uint64 1777437996575198 ) dict entry( string "ExecMainExitTimestampMonotonic" variant uint64 4323081530231 ) dict entry( string "ExecMainPID" variant uint32 16973 ) dict entry( string "ExecMainCode" variant int32 1 ) dict entry( string "ExecMainStatus" variant int32 0 ) ] array [ string "ExecStartPre" string "ExecStart" string "ExecStartPost" string "ExecReload" string "ExecStop" string "ExecStopPost" ] signal time=1777437996.576732 sender=:1.20 -> destination=(null destination) serial=42491 path=/org/freedesktop/systemd1/unit/systemd_2dtmpfiles_2dclean_2eservice; interface=org.freedesktop.DBus.Properties; member=PropertiesChanged string "org.freedesktop.systemd1.Unit" array [ dict entry( string "ActiveState" variant string "inactive" ) dict entry( string "SubState" variant string "dead" ) dict entry( string "InactiveExitTimestamp" variant uint64 1777437996557869 ) dict entry( string "InactiveExitTimestampMonotonic" variant uint64 4323081512902 ) dict entry( string "ActiveEnterTimestamp" variant uint64 0 ) dict entry( string "ActiveEnterTimestampMonotonic" variant uint64 0 ) dict entry( string "ActiveExitTimestamp" variant uint64 0 ) dict entry( string "ActiveExitTimestampMonotonic" variant uint64 0 ) dict entry( string "InactiveEnterTimestamp" variant uint64 1777437996575513 ) dict entry( string "InactiveEnterTimestampMonotonic" variant uint64 4323081530546 ) dict entry( string "Job" variant struct { uint32 0 object path "/" } ) dict entry( string "ConditionResult" variant boolean true ) dict entry( string "AssertResult" variant boolean true ) dict entry( string "ConditionTimestamp" variant uint64 1777437996557068 ) dict entry( string "ConditionTimestampMonotonic" variant uint64 4323081512100 ) dict entry( string "AssertTimestamp" variant uint64 1777437996557068 ) dict entry( string "AssertTimestampMonotonic" variant uint64 4323081512101 ) ] array [ ] signal time=1777437996.576835 sender=:1.20 -> destination=(null destination) serial=42492 path=/org/freedesktop/systemd1/unit/systemd_2dtmpfiles_2dclean_2etimer; interface=org.freedesktop.DBus.Properties; member=PropertiesChanged string "org.freedesktop.systemd1.Timer" array [ dict entry( string "NextElapseUSecRealtime" variant uint64 0 ) dict entry( string "NextElapseUSecMonotonic" variant uint64 4409481512902 ) dict entry( string "LastTriggerUSec" variant uint64 1777437996555922 ) dict entry( string "LastTriggerUSecMonotonic" variant uint64 4323081510956 ) dict entry( string "Result" variant string "success" ) ] array [ string "TimersMonotonic" string "TimersCalendar" ] signal time=1777437996.576874 sender=:1.20 -> destination=(null destination) serial=42493 path=/org/freedesktop/systemd1/unit/systemd_2dtmpfiles_2dclean_2etimer; interface=org.freedesktop.DBus.Properties; member=PropertiesChanged string "org.freedesktop.systemd1.Unit" array [ dict entry( string "ActiveState" variant string "active" ) dict entry( string "SubState" variant string "waiting" ) dict entry( string "InactiveExitTimestamp" variant uint64 1773114916793756 ) dict entry( string "InactiveExitTimestampMonotonic" variant uint64 2949664 ) dict entry( string "ActiveEnterTimestamp" variant uint64 1773114916793756 ) dict entry( string "ActiveEnterTimestampMonotonic" variant uint64 2949664 ) dict entry( string "ActiveExitTimestamp" variant uint64 0 ) dict entry( string "ActiveExitTimestampMonotonic" variant uint64 0 ) dict entry( string "InactiveEnterTimestamp" variant uint64 0 ) dict entry( string "InactiveEnterTimestampMonotonic" variant uint64 0 ) dict entry( string "Job" variant struct { uint32 0 object path "/" } ) dict entry( string "ConditionResult" variant boolean true ) dict entry( string "AssertResult" variant boolean true ) dict entry( string "ConditionTimestamp" variant uint64 1773114916793727 ) dict entry( string "ConditionTimestampMonotonic" variant uint64 2949639 ) dict entry( string "AssertTimestamp" variant uint64 1773114916793731 ) dict entry( string "AssertTimestampMonotonic" variant uint64 2949640 ) ] array [ ] signal time=1777437996.577004 sender=:1.20 -> destination=(null destination) serial=42494 path=/org/freedesktop/systemd1/agent; interface=org.freedesktop.systemd1.Agent; member=Released string "/system.slice/systemd-tmpfiles-clean.service"
These are logs of access to the tmpfiles clean service. I also have logs of access to smartd, fprintf, anacron, ModemManager, rtkit-daemon (pulseaudio), polkit, and apt services.
There is a library Bitcoin Core shares which allows access to these files.
[edit 1777444413]
Reviewing these logs seems alarming but everything appears unharmed. If you see anything out of the ordinary, let me know.
[/edit]
I've monitored Unobtanium, Bitcoin, Primecoin, (and many other forks of Bitcoin Core), and I've found
that there is an exploit. Remote attackers can access system services, such as system-tmpfileslog entries to review.I recently synced the entire Unobtanium blockchain and opened the default port for peer access. As soon as I did I noticed access to the system in the following logs:
signal time=1777437996.557278 sender=:1.20 -> destination=(null destination) serial=42483 path=/org/freedesktop/systemd1/unit/systemd_2dtmpfiles_2dclean_2etimer; interface=org.freedesktop.DBus.Properties; member=PropertiesChanged string "org.freedesktop.systemd1.Timer" array [ dict entry( string "NextElapseUSecRealtime" variant uint64 0 ) dict entry( string "NextElapseUSecMonotonic" variant uint64 4323021512151 ) dict entry( string "LastTriggerUSec" variant uint64 1777437996555922 ) dict entry( string "LastTriggerUSecMonotonic" variant uint64 4323081510956 ) dict entry( string "Result" variant string "success" ) ] array [ string "TimersMonotonic" string "TimersCalendar" ] signal time=1777437996.557337 sender=:1.20 -> destination=(null destination) serial=42484 path=/org/freedesktop/systemd1/unit/systemd_2dtmpfiles_2dclean_2etimer; interface=org.freedesktop.DBus.Properties; member=PropertiesChanged string "org.freedesktop.systemd1.Unit" array [ dict entry( string "ActiveState" variant string "active" ) dict entry( string "SubState" variant string "running" ) dict entry( string "InactiveExitTimestamp" variant uint64 1773114916793756 ) dict entry( string "InactiveExitTimestampMonotonic" variant uint64 2949664 ) dict entry( string "ActiveEnterTimestamp" variant uint64 1773114916793756 ) dict entry( string "ActiveEnterTimestampMonotonic" variant uint64 2949664 ) dict entry( string "ActiveExitTimestamp" variant uint64 0 ) dict entry( string "ActiveExitTimestampMonotonic" variant uint64 0 ) dict entry( string "InactiveEnterTimestamp" variant uint64 0 ) dict entry( string "InactiveEnterTimestampMonotonic" variant uint64 0 ) dict entry( string "Job" variant struct { uint32 0 object path "/" } ) dict entry( string "ConditionResult" variant boolean true ) dict entry( string "AssertResult" variant boolean true ) dict entry( string "ConditionTimestamp" variant uint64 1773114916793727 ) dict entry( string "ConditionTimestampMonotonic" variant uint64 2949639 ) dict entry( string "AssertTimestamp" variant uint64 1773114916793731 ) dict entry( string "AssertTimestampMonotonic" variant uint64 2949640 ) ] array [ ] signal time=1777437996.557440 sender=:1.20 -> destination=(null destination) serial=42485 path=/org/freedesktop/systemd1; interface=org.freedesktop.systemd1.Manager; member=JobNew uint32 8157 object path "/org/freedesktop/systemd1/job/8157" string "systemd-tmpfiles-clean.service" signal time=1777437996.559849 sender=:1.20 -> destination=(null destination) serial=42486 path=/org/freedesktop/systemd1/unit/systemd_2dtmpfiles_2dclean_2eservice; interface=org.freedesktop.DBus.Properties; member=PropertiesChanged string "org.freedesktop.systemd1.Service" array [ dict entry( string "MainPID" variant uint32 16973 ) dict entry( string "ControlPID" variant uint32 0 ) dict entry( string "StatusText" variant string "" ) dict entry( string "StatusErrno" variant int32 0 ) dict entry( string "Result" variant string "success" ) dict entry( string "ExecMainStartTimestamp" variant uint64 1777437996557796 ) dict entry( string "ExecMainStartTimestampMonotonic" variant uint64 4323081512829 ) dict entry( string "ExecMainExitTimestamp" variant uint64 0 ) dict entry( string "ExecMainExitTimestampMonotonic" variant uint64 0 ) dict entry( string "ExecMainPID" variant uint32 16973 ) dict entry( string "ExecMainCode" variant int32 0 ) dict entry( string "ExecMainStatus" variant int32 0 ) ] array [ string "ExecStartPre" string "ExecStart" string "ExecStartPost" string "ExecReload" string "ExecStop" string "ExecStopPost" ] signal time=1777437996.559940 sender=:1.20 -> destination=(null destination) serial=42487 path=/org/freedesktop/systemd1/unit/systemd_2dtmpfiles_2dclean_2eservice; interface=org.freedesktop.DBus.Properties; member=PropertiesChanged string "org.freedesktop.systemd1.Unit" array [ dict entry( string "ActiveState" variant string "activating" ) dict entry( string "SubState" variant string "start" ) dict entry( string "InactiveExitTimestamp" variant uint64 1777437996557869 ) dict entry( string "InactiveExitTimestampMonotonic" variant uint64 4323081512902 ) dict entry( string "ActiveEnterTimestamp" variant uint64 0 ) dict entry( string "ActiveEnterTimestampMonotonic" variant uint64 0 ) dict entry( string "InactiveEnterTimestamp" variant uint64 1777351536569222 ) dict entry( string "InactiveEnterTimestampMonotonic" variant uint64 4236621524288 ) dict entry( string "Job" variant struct { uint32 8157 object path "/org/freedesktop/systemd1/job/8157" } ) dict entry( string "ConditionResult" variant boolean true ) dict entry( string "AssertResult" variant boolean true ) dict entry( string "ConditionTimestamp" variant uint64 1777437996557068 ) dict entry( string "ConditionTimestampMonotonic" variant uint64 4323081512100 ) dict entry( string "AssertTimestamp" variant uint64 1777437996557068 ) dict entry( string "AssertTimestampMonotonic" variant uint64 4323081512101 ) ] array [ ] signal time=1777437996.560066 sender=:1.20 -> destination=(null destination) serial=42488 path=/org/freedesktop/systemd1/job/8157; interface=org.freedesktop.DBus.Properties; member=PropertiesChanged string "org.freedesktop.systemd1.Job" array [ dict entry( string "State" variant string "running" ) ] array [ ] signal time=1777437996.576200 sender=:1.20 -> destination=(null destination) serial=42489 path=/org/freedesktop/systemd1; interface=org.freedesktop.systemd1.Manager; member=JobRemoved uint32 8157 object path "/org/freedesktop/systemd1/job/8157" string "systemd-tmpfiles-clean.service" string "done" signal time=1777437996.576643 sender=:1.20 -> destination=(null destination) serial=42490 path=/org/freedesktop/systemd1/unit/systemd_2dtmpfiles_2dclean_2eservice; interface=org.freedesktop.DBus.Properties; member=PropertiesChanged string "org.freedesktop.systemd1.Service" array [ dict entry( string "MainPID" variant uint32 0 ) dict entry( string "ControlPID" variant uint32 0 ) dict entry( string "StatusText" variant string "" ) dict entry( string "StatusErrno" variant int32 0 ) dict entry( string "Result" variant string "success" ) dict entry( string "ExecMainStartTimestamp" variant uint64 1777437996557796 ) dict entry( string "ExecMainStartTimestampMonotonic" variant uint64 4323081512829 ) dict entry( string "ExecMainExitTimestamp" variant uint64 1777437996575198 ) dict entry( string "ExecMainExitTimestampMonotonic" variant uint64 4323081530231 ) dict entry( string "ExecMainPID" variant uint32 16973 ) dict entry( string "ExecMainCode" variant int32 1 ) dict entry( string "ExecMainStatus" variant int32 0 ) ] array [ string "ExecStartPre" string "ExecStart" string "ExecStartPost" string "ExecReload" string "ExecStop" string "ExecStopPost" ] signal time=1777437996.576732 sender=:1.20 -> destination=(null destination) serial=42491 path=/org/freedesktop/systemd1/unit/systemd_2dtmpfiles_2dclean_2eservice; interface=org.freedesktop.DBus.Properties; member=PropertiesChanged string "org.freedesktop.systemd1.Unit" array [ dict entry( string "ActiveState" variant string "inactive" ) dict entry( string "SubState" variant string "dead" ) dict entry( string "InactiveExitTimestamp" variant uint64 1777437996557869 ) dict entry( string "InactiveExitTimestampMonotonic" variant uint64 4323081512902 ) dict entry( string "ActiveEnterTimestamp" variant uint64 0 ) dict entry( string "ActiveEnterTimestampMonotonic" variant uint64 0 ) dict entry( string "ActiveExitTimestamp" variant uint64 0 ) dict entry( string "ActiveExitTimestampMonotonic" variant uint64 0 ) dict entry( string "InactiveEnterTimestamp" variant uint64 1777437996575513 ) dict entry( string "InactiveEnterTimestampMonotonic" variant uint64 4323081530546 ) dict entry( string "Job" variant struct { uint32 0 object path "/" } ) dict entry( string "ConditionResult" variant boolean true ) dict entry( string "AssertResult" variant boolean true ) dict entry( string "ConditionTimestamp" variant uint64 1777437996557068 ) dict entry( string "ConditionTimestampMonotonic" variant uint64 4323081512100 ) dict entry( string "AssertTimestamp" variant uint64 1777437996557068 ) dict entry( string "AssertTimestampMonotonic" variant uint64 4323081512101 ) ] array [ ] signal time=1777437996.576835 sender=:1.20 -> destination=(null destination) serial=42492 path=/org/freedesktop/systemd1/unit/systemd_2dtmpfiles_2dclean_2etimer; interface=org.freedesktop.DBus.Properties; member=PropertiesChanged string "org.freedesktop.systemd1.Timer" array [ dict entry( string "NextElapseUSecRealtime" variant uint64 0 ) dict entry( string "NextElapseUSecMonotonic" variant uint64 4409481512902 ) dict entry( string "LastTriggerUSec" variant uint64 1777437996555922 ) dict entry( string "LastTriggerUSecMonotonic" variant uint64 4323081510956 ) dict entry( string "Result" variant string "success" ) ] array [ string "TimersMonotonic" string "TimersCalendar" ] signal time=1777437996.576874 sender=:1.20 -> destination=(null destination) serial=42493 path=/org/freedesktop/systemd1/unit/systemd_2dtmpfiles_2dclean_2etimer; interface=org.freedesktop.DBus.Properties; member=PropertiesChanged string "org.freedesktop.systemd1.Unit" array [ dict entry( string "ActiveState" variant string "active" ) dict entry( string "SubState" variant string "waiting" ) dict entry( string "InactiveExitTimestamp" variant uint64 1773114916793756 ) dict entry( string "InactiveExitTimestampMonotonic" variant uint64 2949664 ) dict entry( string "ActiveEnterTimestamp" variant uint64 1773114916793756 ) dict entry( string "ActiveEnterTimestampMonotonic" variant uint64 2949664 ) dict entry( string "ActiveExitTimestamp" variant uint64 0 ) dict entry( string "ActiveExitTimestampMonotonic" variant uint64 0 ) dict entry( string "InactiveEnterTimestamp" variant uint64 0 ) dict entry( string "InactiveEnterTimestampMonotonic" variant uint64 0 ) dict entry( string "Job" variant struct { uint32 0 object path "/" } ) dict entry( string "ConditionResult" variant boolean true ) dict entry( string "AssertResult" variant boolean true ) dict entry( string "ConditionTimestamp" variant uint64 1773114916793727 ) dict entry( string "ConditionTimestampMonotonic" variant uint64 2949639 ) dict entry( string "AssertTimestamp" variant uint64 1773114916793731 ) dict entry( string "AssertTimestampMonotonic" variant uint64 2949640 ) ] array [ ] signal time=1777437996.577004 sender=:1.20 -> destination=(null destination) serial=42494 path=/org/freedesktop/systemd1/agent; interface=org.freedesktop.systemd1.Agent; member=Released string "/system.slice/systemd-tmpfiles-clean.service"These are logs of access to the tmpfiles clean service. I also have logs of access to smartd, fprintf, anacron, ModemManager, rtkit-daemon (pulseaudio), polkit, and apt services.
There is a library Bitcoin Core shares which allows access to these files.[edit 1777444413]
Reviewing these logs seems alarming but everything appears unharmed. If you see anything out of the ordinary, let me know.
[/edit]