I think the provided provisioning flow example is probably flawed. It looks like some info (PPPoE creds in that case) are being selected depending on DeviceId.SerialNumber but its value is not being verified for previous successful authentication. This means Alice, with valid TLS certs (or HTTP credentials) for subject (or username) “001122-CPE001-EXAMPLE” would easily get Bob’s CPE002 PPPoE configurations by sending “CPE002” as DeviceId.SerialNumber value. Am I wrong? Is GenieACS always trusting unauthenticated DeviceId.* values in general?
let model = declare("InternetGatewayDevice.DeviceInfo.ModelName", {value: 1}).value[0];
let serialNumber = declare("DeviceID.SerialNumber", {value: 1}).value[0];
let productClass = declare("DeviceID.ProductClass", {value: 1}).value[0];
let oui = declare("DeviceID.OUI", {value: 1}).value[0];
let args = {serial: serialNumber, productClass: productClass, oui: oui};
//Get the PPPoE creds
let config = ext('cpe-config', 'resetPppoe', JSON.stringify(args));
…