DEV Community

SorrelThorncroft
SorrelThorncroft

Posted on

phpIPAM public addresses should not mean public inventory

phpIPAM public addresses should not mean public inventory

phpIPAM stores address plans, subnets, VLANs, devices, and ownership information. It can also expose a REST API for automation. An internet-facing phpIPAM page may be an approved portal, but the underlying inventory can reveal internal ranges and the teams responsible for them. The first useful check is therefore whether the API is exposed and which authentication mode protects each application.

A standalone ZoomEye SDK query using sub_type=all, page 1, and page size 1 returned 2 matches for app="phpIPAM" and 4,232 for title="phpIPAM" on 30 October 2026 at 00:40 UTC. The difference is substantial. The title query is broad and can include documentation, comparison pages, and unrelated sites. The app query is narrow, but two observations do not establish that the fingerprint is complete. Treat both as discovery signals.

Read the API security mode

phpIPAM's API documentation describes application-level security settings. Authentication is required for the NONE and SSL modes; encrypted app settings add another credential layer. The configuration names matter because an API app created for troubleshooting may have weaker settings than the application that consumes it in production.

Inventory the API apps, their security mode, source restrictions, and permissions. Remove apps that no longer have an owner. Rotate app codes and credentials through the documented administrative path. A client that authenticates successfully should still be limited to the subnet and address objects it needs.

Check version and behavior together

The phpIPAM changelog includes fixes for API authentication and object-cache issues across releases. A version string is useful, but it does not prove that a particular endpoint is protected. Review the deployed version, the enabled API module, the route exposed by the proxy, and the response to an unauthenticated request. Use a harmless read attempt against an owned system.

Do not probe unrelated phpIPAM hosts for data or attempt authentication. If an organization finds one of its own hosts through a public query, verify the record with asset ownership, certificate names, and network inventory. Then decide whether that management path should remain reachable from the internet.

Protect the IP plan as sensitive architecture

Address plans can identify the layout of data centers, cloud ranges, VPN pools, and network segments. Even unauthenticated metadata can help an attacker choose targets. Place phpIPAM on a management network, authenticate through the organization's identity provider where supported, and log administrative and API access. Avoid exposing database or backup services alongside the web tier.

Use role separation for read-only help-desk users, network engineers, and automation. Confirm that a role change removes access to old subnets and that deleted addresses do not persist in exports or cache files. Review API tokens for expiry, last use, and source address restrictions.

The query results should guide a controlled inventory process. A title match is not a vulnerability, and an app match is not proof of weak authentication. The meaningful finding is a management endpoint with inventory detail that can be reached through a path the organization did not intend.

References

Top comments (0)